diff --git a/DEPS b/DEPS index 8211738f..f435c3a8 100644 --- a/DEPS +++ b/DEPS
@@ -233,7 +233,7 @@ # # CQ_INCLUDE_TRYBOTS=luci.chrome.try:lacros-amd64-generic-chrome-skylab # CQ_INCLUDE_TRYBOTS=luci.chrome.try:lacros-arm-generic-chrome-skylab - 'lacros_sdk_version': '14945.0.0', + 'lacros_sdk_version': '14977.0.0', # Generate location tag metadata to include in tests result data uploaded # to ResultDB. This isn't needed on some configs and the tool that generates @@ -301,7 +301,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling V8 # and whatever else without interference from each other. - 'v8_revision': '87528380c21affd775e85975c141fce8dd0b86bb', + 'v8_revision': 'f811d9ab7df0016978bb3059440d4b60537ccc9e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling ANGLE # and whatever else without interference from each other. @@ -324,7 +324,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling Fuchsia sdk # and whatever else without interference from each other. - 'fuchsia_version': 'version:9.20220719.2.1', + 'fuchsia_version': 'version:9.20220719.3.1', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling google-toolbox-for-mac # and whatever else without interference from each other. @@ -368,7 +368,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': '0c6b8d6722cc0e4a35b51d5104374b8cf9cc264e', + 'catapult_revision': 'ab2ff5cdd40824aebd05271e8c3886f7d91b7e8e', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libFuzzer # and whatever else without interference from each other. @@ -376,7 +376,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling devtools-frontend # and whatever else without interference from each other. - 'devtools_frontend_revision': 'a6533f0ac11b405281c0366cfb855a5ebdbdba9f', + 'devtools_frontend_revision': 'cdaa82eb133e0a640736978c4605eae581da56bc', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling libprotobuf-mutator # and whatever else without interference from each other. @@ -412,7 +412,7 @@ # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. - 'dawn_revision': 'e4df87fd017cd1d3eacbfbed57e521f6f7733936', + 'dawn_revision': 'aea3154e461b73ae7912679162a10abd515ab56c', # Three lines of non-changing comments so that # the commit queue can handle CLs rolling feed # and whatever else without interference from each other. @@ -1184,7 +1184,7 @@ }, 'src/third_party/depot_tools': - Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + '56101e1c90fe8c2185f74d7ee60f964082f7295b', + Var('chromium_git') + '/chromium/tools/depot_tools.git' + '@' + 'f3edc504458f75db5b1f3ca4873495f4e04bfd7c', 'src/third_party/devtools-frontend/src': Var('chromium_git') + '/devtools/devtools-frontend' + '@' + Var('devtools_frontend_revision'), @@ -1702,7 +1702,7 @@ Var('chromium_git') + '/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git' + '@' + 'c036420683f672d685e27415de0a5f5e85bdc23f', 'src/third_party/tflite/src': - Var('chromium_git') + '/external/github.com/tensorflow/tensorflow.git' + '@' + 'ca77d58bb625ee21bc33660c074c624659b8a3c2', + Var('chromium_git') + '/external/github.com/tensorflow/tensorflow.git' + '@' + 'ac31ffa987c14665062c00f98ec025a3fdc185ab', 'src/third_party/turbine': { 'packages': [ @@ -1751,7 +1751,7 @@ Var('chromium_git') + '/external/khronosgroup/webgl.git' + '@' + '44e4c8770158c505b03ee7feafa4859d083b0912', 'src/third_party/webgpu-cts/src': - Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'd3094065b871f1fb6822e8d01741ca417916568b', + Var('chromium_git') + '/external/github.com/gpuweb/cts.git' + '@' + 'ea005701c620004cd8cee217284d49d47acae36c', 'src/third_party/webrtc': Var('webrtc_git') + '/src.git' + '@' + '049dde6c8ef0eaaa00896787783f6725c9a2fe78', @@ -1827,7 +1827,7 @@ Var('chromium_git') + '/v8/v8.git' + '@' + Var('v8_revision'), 'src-internal': { - 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@5f7fa810d621a842dacfcaebc48d981f0b012170', + 'url': 'https://chrome-internal.googlesource.com/chrome/src-internal.git@278777ee0df2a9427bc17cd5f871abd882fab83e', 'condition': 'checkout_src_internal', },
diff --git a/WATCHLISTS b/WATCHLISTS index 6225fb3..ee510c48 100644 --- a/WATCHLISTS +++ b/WATCHLISTS
@@ -772,7 +772,6 @@ 'filepath': 'ash/system/network/|'\ 'chromeos/ash/components/network/|'\ 'chromeos/dbus/shill/|'\ - 'chromeos/network/|'\ 'chromeos/services/network_config/|'\ 'chrome/browser/ash/net/|'\ 'chrome/browser/extensions/api/networking_private/|'\
diff --git a/ash/BUILD.gn b/ash/BUILD.gn index 4717d5a..a09a04d 100644 --- a/ash/BUILD.gn +++ b/ash/BUILD.gn
@@ -797,6 +797,8 @@ "public/cpp/style/scoped_light_mode_as_default.h", "public/cpp/window_finder.h", "public/cpp/window_tree_host_lookup.h", + "rgb_keyboard/histogram_util.cc", + "rgb_keyboard/histogram_util.h", "rgb_keyboard/rgb_keyboard_manager.cc", "rgb_keyboard/rgb_keyboard_manager.h", "rgb_keyboard/rgb_keyboard_util.cc", @@ -1100,10 +1102,6 @@ "system/cast/unified_cast_detailed_view_controller.h", "system/channel_indicator/channel_indicator.cc", "system/channel_indicator/channel_indicator.h", - "system/channel_indicator/channel_indicator_quick_settings_view.cc", - "system/channel_indicator/channel_indicator_quick_settings_view.h", - "system/channel_indicator/channel_indicator_utils.cc", - "system/channel_indicator/channel_indicator_utils.h", "system/dark_mode/dark_mode_feature_pod_controller.cc", "system/dark_mode/dark_mode_feature_pod_controller.h", "system/diagnostics/async_log.cc", @@ -2254,6 +2252,7 @@ "//chromeos/ash/components/dbus/usb", "//chromeos/ash/components/feature_usage", "//chromeos/ash/components/human_presence", + "//chromeos/ash/components/network", "//chromeos/ash/services/assistant/public/cpp", "//chromeos/ash/services/assistant/public/mojom", "//chromeos/components/quick_answers/public/cpp:prefs", @@ -2270,7 +2269,6 @@ "//chromeos/dbus/shill", "//chromeos/login/login_state", "//chromeos/metrics", - "//chromeos/network", "//chromeos/services/bluetooth_config/public/cpp", "//chromeos/services/bluetooth_config/public/mojom", "//chromeos/services/libassistant/public/cpp:structs", @@ -2738,9 +2736,7 @@ "system/bluetooth/tray_bluetooth_helper_legacy_unittest.cc", "system/bluetooth/unified_bluetooth_detailed_view_controller_unittest.cc", "system/caps_lock_notification_controller_unittest.cc", - "system/channel_indicator/channel_indicator_quick_settings_view_unittest.cc", "system/channel_indicator/channel_indicator_unittest.cc", - "system/channel_indicator/channel_indicator_utils_unittest.cc", "system/dark_mode/dark_mode_feature_pod_controller_unittest.cc", "system/diagnostics/async_log_unittest.cc", "system/diagnostics/diagnostics_log_controller_unittest.cc",
diff --git a/ash/DEPS b/ash/DEPS index 83bf1908..2ea6d58 100644 --- a/ash/DEPS +++ b/ash/DEPS
@@ -81,8 +81,6 @@ # create subtle inconsistencies based on when observers are called. "-chromeos/login/login_state", "+chromeos/ash/components/network", - # TODO(https://crbug.com/1164001): remove when chromeos/network have migrated. - "+chromeos/network", # //ash can use the public interfaces of various services. "+chromeos/ash/services/assistant/public/cpp" , "+chromeos/ash/services/assistant/test_support",
diff --git a/ash/app_menu/notification_menu_controller.cc b/ash/app_menu/notification_menu_controller.cc index ad567bad..e53406b 100644 --- a/ash/app_menu/notification_menu_controller.cc +++ b/ash/app_menu/notification_menu_controller.cc
@@ -78,8 +78,9 @@ // |root_menu_|, and remove the entry from the model. root_menu_->RemoveMenuItem(notification_menu_view_->parent()); app_menu_model_adapter_->model()->RemoveItemAt( - app_menu_model_adapter_->model()->GetIndexOfCommandId( - NOTIFICATION_CONTAINER)); + app_menu_model_adapter_->model() + ->GetIndexOfCommandId(NOTIFICATION_CONTAINER) + .value()); notification_menu_view_ = nullptr; // Notify the root MenuItemView so it knows to resize and re-calculate the
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index 458c153..5c2e0445 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd
@@ -2097,25 +2097,13 @@ ''' - ''' </message> <!-- Status tray channel indicator strings --> - <message name="IDS_ASH_STATUS_TRAY_REPORT_FEEDBACK" desc="The string used for the tooltip and speakable name of the 'report feedback' button"> - Report feedback - </message> - <message name="IDS_ASH_STATUS_TRAY_CHANNEL_BETA" desc="The string used to show the name of beta release track, by itself"> - Beta - </message> - <message name="IDS_ASH_STATUS_TRAY_CHANNEL_DEV" desc="The string used to show the name of dev release track, by itself"> - Dev - </message> - <message name="IDS_ASH_STATUS_TRAY_CHANNEL_CANARY" desc="The string used to show the name of canary release track, by itself"> - Canary - </message> - <message name="IDS_ASH_STATUS_TRAY_CHANNEL_BETA_CHANNEL" desc="The string used to indicate that this device is on the beta release track"> + <message name="IDS_ASH_STATUS_TRAY_CHANNEL_BETA" desc="The string used to indicate that this device is on the beta release track"> Beta Channel </message> - <message name="IDS_ASH_STATUS_TRAY_CHANNEL_DEV_CHANNEL" desc="The string used to indicate that this device is on the development release track"> + <message name="IDS_ASH_STATUS_TRAY_CHANNEL_DEV" desc="The string used to indicate that this device is on the development release track"> Dev Channel </message> - <message name="IDS_ASH_STATUS_TRAY_CHANNEL_CANARY_CHANNEL" desc="The string used to indicate that this device is on the canary release track"> + <message name="IDS_ASH_STATUS_TRAY_CHANNEL_CANARY" desc="The string used to indicate that this device is on the canary release track"> Canary Channel </message> <!-- Status Tray Network strings -->
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_BETA.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_BETA.png.sha1 index e9fb273..900cb87 100644 --- a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_BETA.png.sha1 +++ b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_BETA.png.sha1
@@ -1 +1 @@ -9089cfd7cee8fb5053295c5639a4a9e99055d090 \ No newline at end of file +a23e8925d97be40954790401e84089e09af5a456 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_BETA_CHANNEL.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_BETA_CHANNEL.png.sha1 deleted file mode 100644 index e9fb273..0000000 --- a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_BETA_CHANNEL.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -9089cfd7cee8fb5053295c5639a4a9e99055d090 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_CANARY.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_CANARY.png.sha1 index 353ac92..29eb38a 100644 --- a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_CANARY.png.sha1 +++ b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_CANARY.png.sha1
@@ -1 +1 @@ -8041c4627127d19acb3ba3a34b59a8bd4ebd10ce \ No newline at end of file +11b35d936ec8e0b18154281d9cf2392ad822bf62 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_CANARY_CHANNEL.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_CANARY_CHANNEL.png.sha1 deleted file mode 100644 index 353ac92..0000000 --- a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_CANARY_CHANNEL.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -8041c4627127d19acb3ba3a34b59a8bd4ebd10ce \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_DEV.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_DEV.png.sha1 index 48644be0d..a4516f6 100644 --- a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_DEV.png.sha1 +++ b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_DEV.png.sha1
@@ -1 +1 @@ -68a5f4e9505763877bfdd169cdcee7a27ccb7913 \ No newline at end of file +b7a6ff57d02323da11175ecca7c8473ceed32487 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_DEV_CHANNEL.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_DEV_CHANNEL.png.sha1 deleted file mode 100644 index 48644be0d..0000000 --- a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_CHANNEL_DEV_CHANNEL.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -68a5f4e9505763877bfdd169cdcee7a27ccb7913 \ No newline at end of file
diff --git a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_REPORT_FEEDBACK.png.sha1 b/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_REPORT_FEEDBACK.png.sha1 deleted file mode 100644 index 5d1e81e..0000000 --- a/ash/ash_strings_grd/IDS_ASH_STATUS_TRAY_REPORT_FEEDBACK.png.sha1 +++ /dev/null
@@ -1 +0,0 @@ -54c61a6a20b846a2270c4bee736c419afb70697c \ No newline at end of file
diff --git a/ash/clipboard/clipboard_history_menu_model_adapter.cc b/ash/clipboard/clipboard_history_menu_model_adapter.cc index 259c658..46b99149 100644 --- a/ash/clipboard/clipboard_history_menu_model_adapter.cc +++ b/ash/clipboard/clipboard_history_menu_model_adapter.cc
@@ -364,7 +364,7 @@ // The menu item view and its corresponding command should be removed at the // same time. Otherwise, it may run into check errors. - model_->RemoveItemAt(model_->GetIndexOfCommandId(command_id)); + model_->RemoveItemAt(model_->GetIndexOfCommandId(command_id).value()); root_view_->RemoveMenuItem(root_view_->GetMenuItemByID(command_id)); root_view_->ChildrenChanged();
diff --git a/ash/components/arc/BUILD.gn b/ash/components/arc/BUILD.gn index ad8c29fb..c9bf6da7 100644 --- a/ash/components/arc/BUILD.gn +++ b/ash/components/arc/BUILD.gn
@@ -136,6 +136,7 @@ "//chromeos/ash/components/dbus/upstart:upstart", "//chromeos/ash/components/dbus/userdataauth", "//chromeos/ash/components/dbus/userdataauth:userdataauth_proto", + "//chromeos/ash/components/network", "//chromeos/components/disks:prefs", "//chromeos/components/sensors:sensors", "//chromeos/dbus", @@ -144,7 +145,6 @@ "//chromeos/dbus/power", "//chromeos/dbus/power:power_manager_proto", "//chromeos/login/login_state", - "//chromeos/network", "//chromeos/ui/frame", "//components/device_event_log", "//components/exo",
diff --git a/ash/components/arc/net/DEPS b/ash/components/arc/net/DEPS index 8177cbb..9c082c3 100644 --- a/ash/components/arc/net/DEPS +++ b/ash/components/arc/net/DEPS
@@ -1,6 +1,6 @@ include_rules = [ + "+chromeos/ash/components/network", "+chromeos/login", - "+chromeos/network", "+components/device_event_log", "+components/onc", "+components/user_manager",
diff --git a/ash/components/arc/net/arc_net_host_impl.cc b/ash/components/arc/net/arc_net_host_impl.cc index dd1d209..30f883e9 100644 --- a/ash/components/arc/net/arc_net_host_impl.cc +++ b/ash/components/arc/net/arc_net_host_impl.cc
@@ -616,7 +616,7 @@ // Otherwise retrieve list of configured or visible WiFi networks. bool configured_only = type == mojom::GetNetworksRequestType::CONFIGURED_ONLY; chromeos::NetworkTypePattern network_pattern = - chromeos::onc::NetworkTypePatternFromOncType(onc::network_type::kWiFi); + ash::onc::NetworkTypePatternFromOncType(onc::network_type::kWiFi); chromeos::NetworkStateHandler::NetworkStateList network_states; GetStateHandler()->GetNetworkListByType(
diff --git a/ash/components/device_activity/BUILD.gn b/ash/components/device_activity/BUILD.gn index 2e6ad36..6eda6311 100644 --- a/ash/components/device_activity/BUILD.gn +++ b/ash/components/device_activity/BUILD.gn
@@ -18,7 +18,7 @@ "//base:i18n", "//chromeos/ash/components/dbus/session_manager", "//chromeos/ash/components/dbus/system_clock:system_clock", - "//chromeos/network", + "//chromeos/ash/components/network", "//chromeos/system", "//components/policy/core/common", "//components/prefs:prefs", @@ -68,8 +68,8 @@ "//base/test:test_support", "//chromeos/ash/components/dbus/session_manager:session_manager", "//chromeos/ash/components/dbus/system_clock:system_clock", + "//chromeos/ash/components/network", "//chromeos/ash/components/network:test_support", - "//chromeos/network", "//chromeos/system:system", "//components/policy/core/common:test_support", "//components/prefs:test_support",
diff --git a/ash/components/disks/BUILD.gn b/ash/components/disks/BUILD.gn index 0f5ac00b..cb1baeb 100644 --- a/ash/components/disks/BUILD.gn +++ b/ash/components/disks/BUILD.gn
@@ -12,8 +12,8 @@ deps = [ "//ash/constants", "//base", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/dbus", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/power", "//chromeos/dbus/power:power_manager_proto", ] @@ -35,8 +35,8 @@ deps = [ "//base", "//base/test:test_support", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/dbus:test_support", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/power:power_manager_proto", "//testing/gmock", "//testing/gtest", @@ -53,8 +53,8 @@ ":disks", ":test_support", "//base/test:test_support", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/dbus:test_support", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/power", "//chromeos/dbus/power:power_manager_proto", "//testing/gmock",
diff --git a/ash/components/disks/DEPS b/ash/components/disks/DEPS index d7fec93..d20e414 100644 --- a/ash/components/disks/DEPS +++ b/ash/components/disks/DEPS
@@ -3,6 +3,7 @@ include_rules = [ "+ash/constants", "+base", + "+chromeos/ash/components/dbus", "+chromeos/dbus", "+dbus", "+testing",
diff --git a/ash/components/disks/disk.h b/ash/components/disks/disk.h index d3f894b..61f93a6 100644 --- a/ash/components/disks/disk.h +++ b/ash/components/disks/disk.h
@@ -10,7 +10,7 @@ #include "base/component_export.h" #include "base/files/file_path.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" namespace ash { namespace disks {
diff --git a/ash/components/disks/disk_mount_manager.cc b/ash/components/disks/disk_mount_manager.cc index 8074da89..b1f8354d 100644 --- a/ash/components/disks/disk_mount_manager.cc +++ b/ash/components/disks/disk_mount_manager.cc
@@ -26,7 +26,7 @@ #include "base/metrics/histogram_functions.h" #include "base/observer_list.h" #include "base/strings/string_util.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" namespace ash::disks { namespace {
diff --git a/ash/components/disks/disk_mount_manager.h b/ash/components/disks/disk_mount_manager.h index 5fb21bd..5e5d44f 100644 --- a/ash/components/disks/disk_mount_manager.h +++ b/ash/components/disks/disk_mount_manager.h
@@ -13,7 +13,7 @@ #include "base/callback_forward.h" #include "base/component_export.h" #include "base/observer_list_types.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" namespace ash { namespace disks {
diff --git a/ash/components/disks/disk_mount_manager_unittest.cc b/ash/components/disks/disk_mount_manager_unittest.cc index 4d74362a..2912dba 100644 --- a/ash/components/disks/disk_mount_manager_unittest.cc +++ b/ash/components/disks/disk_mount_manager_unittest.cc
@@ -19,8 +19,8 @@ #include "base/test/bind.h" #include "base/test/mock_callback.h" #include "base/test/task_environment.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" -#include "chromeos/dbus/cros_disks/fake_cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/power/power_manager_client.h" #include "dbus/message.h"
diff --git a/ash/components/disks/disk_unittest.cc b/ash/components/disks/disk_unittest.cc index 1825b38..d49718e 100644 --- a/ash/components/disks/disk_unittest.cc +++ b/ash/components/disks/disk_unittest.cc
@@ -10,7 +10,7 @@ #include <utility> #include <vector> -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "dbus/message.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/cros_system_api/dbus/service_constants.h"
diff --git a/ash/components/disks/mock_disk_mount_manager.h b/ash/components/disks/mock_disk_mount_manager.h index a594b718..040b96b 100644 --- a/ash/components/disks/mock_disk_mount_manager.h +++ b/ash/components/disks/mock_disk_mount_manager.h
@@ -11,7 +11,7 @@ #include "ash/components/disks/disk_mount_manager.h" #include "base/observer_list.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h"
diff --git a/ash/components/disks/suspend_unmount_manager.h b/ash/components/disks/suspend_unmount_manager.h index 7c7125e..b89e5ec 100644 --- a/ash/components/disks/suspend_unmount_manager.h +++ b/ash/components/disks/suspend_unmount_manager.h
@@ -11,7 +11,7 @@ #include "base/component_export.h" #include "base/time/time.h" #include "base/unguessable_token.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/power/power_manager_client.h" namespace ash {
diff --git a/ash/components/drivefs/BUILD.gn b/ash/components/drivefs/BUILD.gn index 7de59bc..2f3871e 100644 --- a/ash/components/drivefs/BUILD.gn +++ b/ash/components/drivefs/BUILD.gn
@@ -35,9 +35,9 @@ "//ash/components/drivefs/mojom", "//ash/constants", "//base", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/components/mojo_bootstrap", "//chromeos/dbus", - "//chromeos/dbus/cros_disks", "//components/account_id", "//components/drive", "//components/signin/public/identity_manager", @@ -61,8 +61,8 @@ ":drivefs", "//ash/components/drivefs/mojom", "//base", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/dbus:test_support", - "//chromeos/dbus/cros_disks", "//net", ] }
diff --git a/ash/components/drivefs/fake_drivefs.cc b/ash/components/drivefs/fake_drivefs.cc index e69489b..6ec2496 100644 --- a/ash/components/drivefs/fake_drivefs.cc +++ b/ash/components/drivefs/fake_drivefs.cc
@@ -23,8 +23,8 @@ #include "base/strings/string_util.h" #include "base/task/thread_pool.h" #include "base/threading/thread_restrictions.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" -#include "chromeos/dbus/cros_disks/fake_cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h" #include "mojo/public/cpp/bindings/pending_remote.h" #include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/self_owned_receiver.h" @@ -534,8 +534,15 @@ void FakeDriveFs::GetPooledQuotaUsage( drivefs::mojom::DriveFs::GetPooledQuotaUsageCallback callback) { - std::move(callback).Run(drive::FileError::FILE_ERROR_SERVICE_UNAVAILABLE, - mojom::PooledQuotaUsage::New()); + auto usage = mojom::PooledQuotaUsage::New(); + + usage->user_type = mojom::UserType::kUnmanaged; + usage->used_user_bytes = 1 * 1024 * 1024; + usage->total_user_bytes = 2 * 1024 * 1024; + usage->organization_limit_exceeded = false; + usage->organization_name = "Test Organization"; + + std::move(callback).Run(drive::FileError::FILE_ERROR_OK, std::move(usage)); } void FakeDriveFs::ToggleMirroring(
diff --git a/ash/components/drivefs/fake_drivefs_launcher_client.cc b/ash/components/drivefs/fake_drivefs_launcher_client.cc index 7fc82741..3d44b1e 100644 --- a/ash/components/drivefs/fake_drivefs_launcher_client.cc +++ b/ash/components/drivefs/fake_drivefs_launcher_client.cc
@@ -13,9 +13,9 @@ #include "base/strings/string_util.h" #include "base/system/sys_info.h" #include "base/task/thread_pool.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h" #include "chromeos/components/mojo_bootstrap/pending_connection_manager.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" -#include "chromeos/dbus/cros_disks/fake_cros_disks_client.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/platform/named_platform_channel.h" #include "mojo/public/cpp/platform/platform_channel.h"
diff --git a/ash/components/geolocation/BUILD.gn b/ash/components/geolocation/BUILD.gn index 82424210..779d39b 100644 --- a/ash/components/geolocation/BUILD.gn +++ b/ash/components/geolocation/BUILD.gn
@@ -11,7 +11,7 @@ defines = [ "IS_ASH_GEOLOCATION_IMPL" ] deps = [ "//base", - "//chromeos/network", + "//chromeos/ash/components/network", "//google_apis", "//net", "//services/network/public/cpp",
diff --git a/ash/components/geolocation/DEPS b/ash/components/geolocation/DEPS index 1486f32..4093115 100644 --- a/ash/components/geolocation/DEPS +++ b/ash/components/geolocation/DEPS
@@ -3,7 +3,6 @@ include_rules = [ "+base", "+chromeos/ash/components/network", - "+chromeos/network", "+google_apis", "+services/network/public/cpp", "+services/network/public/mojom",
diff --git a/ash/components/phonehub/BUILD.gn b/ash/components/phonehub/BUILD.gn index ce56ddf1..c9cfd28 100644 --- a/ash/components/phonehub/BUILD.gn +++ b/ash/components/phonehub/BUILD.gn
@@ -278,9 +278,9 @@ "//ash/webui/eche_app_ui:eche_app_ui_pref", "//base", "//base/test:test_support", + "//chromeos/ash/components/network", "//chromeos/ash/components/network:test_support", "//chromeos/dbus/power", - "//chromeos/network:network", "//chromeos/services/network_config:in_process_instance", "//chromeos/services/network_config/public/cpp:test_support", "//components/prefs:test_support",
diff --git a/ash/components/smbfs/BUILD.gn b/ash/components/smbfs/BUILD.gn index d1c4551..f73b2ed 100644 --- a/ash/components/smbfs/BUILD.gn +++ b/ash/components/smbfs/BUILD.gn
@@ -17,8 +17,8 @@ deps = [ "//ash/components/disks", "//base", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/components/mojo_bootstrap", - "//chromeos/dbus/cros_disks", "//mojo/public/cpp/bindings", "//net", ]
diff --git a/ash/components/tether/BUILD.gn b/ash/components/tether/BUILD.gn index d67fd53..5e005105 100644 --- a/ash/components/tether/BUILD.gn +++ b/ash/components/tether/BUILD.gn
@@ -126,9 +126,9 @@ "//ash/services/secure_channel/public/cpp/shared", "//ash/services/secure_channel/public/mojom", "//base", + "//chromeos/ash/components/network", "//chromeos/dbus/power", "//chromeos/login/login_state", - "//chromeos/network", "//components/pref_registry", "//components/prefs", "//components/session_manager/core",
diff --git a/ash/public/cpp/system_tray_client.h b/ash/public/cpp/system_tray_client.h index 646b681..d14a4bd 100644 --- a/ash/public/cpp/system_tray_client.h +++ b/ash/public/cpp/system_tray_client.h
@@ -159,14 +159,6 @@ bool& opened_pwa, GURL& finalized_event_url) = 0; - // Shown when the device is on a non-stable release track and the user clicks - // the channel/version button from quick settings. - virtual void ShowChannelInfoAdditionalDetails() = 0; - - // Shown when the device is on a non-stable release track and the user clicks - // the "send feedback" button. - virtual void ShowChannelInfoGiveFeedback() = 0; - protected: SystemTrayClient() {} };
diff --git a/ash/public/cpp/test/test_system_tray_client.cc b/ash/public/cpp/test/test_system_tray_client.cc index 49284e6..a7c1532 100644 --- a/ash/public/cpp/test/test_system_tray_client.cc +++ b/ash/public/cpp/test/test_system_tray_client.cc
@@ -120,8 +120,4 @@ bool& opened_pwa, GURL& final_event_url) {} -void TestSystemTrayClient::ShowChannelInfoAdditionalDetails() {} - -void TestSystemTrayClient::ShowChannelInfoGiveFeedback() {} - } // namespace ash
diff --git a/ash/public/cpp/test/test_system_tray_client.h b/ash/public/cpp/test/test_system_tray_client.h index 4eb3398..4db1910 100644 --- a/ash/public/cpp/test/test_system_tray_client.h +++ b/ash/public/cpp/test/test_system_tray_client.h
@@ -66,8 +66,6 @@ const base::Time& date, bool& opened_pwa, GURL& final_event_url) override; - void ShowChannelInfoAdditionalDetails() override; - void ShowChannelInfoGiveFeedback() override; int show_bluetooth_settings_count() const { return show_bluetooth_settings_count_;
diff --git a/ash/public/cpp/views_text_services_context_menu_impl.cc b/ash/public/cpp/views_text_services_context_menu_impl.cc index 70677db..3bcf0612 100644 --- a/ash/public/cpp/views_text_services_context_menu_impl.cc +++ b/ash/public/cpp/views_text_services_context_menu_impl.cc
@@ -83,15 +83,15 @@ void ViewsTextServicesContextMenuImpl::AddClipboardHistoryMenuOption( ui::SimpleMenuModel* menu) { - const int index_of_paste = + const absl::optional<size_t> index_of_paste = menu->GetIndexOfCommandId(ui::TouchEditable::kPaste); // Only add the clipboard history menu option when having the menu option // for paste. - if (index_of_paste == -1) + if (!index_of_paste.has_value()) return; - const int target_index = index_of_paste + 1; + const size_t target_index = index_of_paste.value() + 1; menu->InsertItemAt(target_index, IDS_APP_SHOW_CLIPBOARD_HISTORY, l10n_util::GetStringUTF16(IDS_APP_SHOW_CLIPBOARD_HISTORY)); if (ClipboardHistoryController::Get()->ShouldShowNewFeatureBadge()) {
diff --git a/ash/quick_pair/scanning/BUILD.gn b/ash/quick_pair/scanning/BUILD.gn index 758c12b..1e642ad 100644 --- a/ash/quick_pair/scanning/BUILD.gn +++ b/ash/quick_pair/scanning/BUILD.gn
@@ -32,7 +32,7 @@ "//ash/services/quick_pair", "//ash/services/quick_pair/public/cpp", "//base", - "//chromeos/network", + "//chromeos/ash/components/network", "//device/bluetooth", "//device/bluetooth/public/cpp", ]
diff --git a/ash/resources/vector_icons/BUILD.gn b/ash/resources/vector_icons/BUILD.gn index 2cb1779f..4b72818 100644 --- a/ash/resources/vector_icons/BUILD.gn +++ b/ash/resources/vector_icons/BUILD.gn
@@ -250,7 +250,6 @@ "reorder_nudge_dark_tablet.icon", "reorder_nudge_light_clamshell.icon", "reorder_nudge_light_tablet.icon", - "request_feedback.icon", "resume.icon", "save_desk_as_template.icon", "save_desk_for_later.icon",
diff --git a/ash/resources/vector_icons/request_feedback.icon b/ash/resources/vector_icons/request_feedback.icon deleted file mode 100644 index f4714a5..0000000 --- a/ash/resources/vector_icons/request_feedback.icon +++ /dev/null
@@ -1,35 +0,0 @@ -// Copyright 2022 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. - -CANVAS_DIMENSIONS, 20, -MOVE_TO, 9, 5, -H_LINE_TO, 11, -V_LINE_TO, 9, -H_LINE_TO, 9, -V_LINE_TO, 5, -CLOSE, -NEW_PATH, -MOVE_TO, 9, 10, -H_LINE_TO, 11, -V_LINE_TO, 12, -H_LINE_TO, 9, -V_LINE_TO, 10, -CLOSE, -NEW_PATH, -MOVE_TO, 3.67f, 2, -H_LINE_TO, 16, -CUBIC_TO, 16.92f, 2, 18, 2.58f, 18, 3.5f, -V_LINE_TO, 13.5f, -CUBIC_TO, 18, 14.42f, 16.92f, 15, 16, 15, -H_LINE_TO, 5, -LINE_TO, 2, 17.5f, -LINE_TO, 2.01f, 3.67f, -CUBIC_TO, 2.01f, 2.75f, 2.75f, 2, 3.67f, 2, -CLOSE, -MOVE_TO, 4, 13, -H_LINE_TO, 16, -V_LINE_TO, 4, -H_LINE_TO, 4, -V_LINE_TO, 13, -CLOSE
diff --git a/ash/rgb_keyboard/histogram_util.cc b/ash/rgb_keyboard/histogram_util.cc new file mode 100644 index 0000000..06df4d6 --- /dev/null +++ b/ash/rgb_keyboard/histogram_util.cc
@@ -0,0 +1,15 @@ +// Copyright 2022 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/rgb_keyboard/histogram_util.h" + +#include "base/metrics/histogram_functions.h" + +namespace ash::rgb_keyboard::metrics { +void EmitRgbKeyboardCapabilityType( + rgbkbd::RgbKeyboardCapabilities capabilities) { + base::UmaHistogramEnumeration(kRgbKeyboardCapabilityTypeHistogramName, + RgbKeyboardCapabilityType(capabilities)); +} +} // namespace ash::rgb_keyboard::metrics
diff --git a/ash/rgb_keyboard/histogram_util.h b/ash/rgb_keyboard/histogram_util.h new file mode 100644 index 0000000..57122cabe --- /dev/null +++ b/ash/rgb_keyboard/histogram_util.h
@@ -0,0 +1,34 @@ +// Copyright 2022 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 ASH_RGB_KEYBOARD_HISTOGRAM_UTIL_H_ +#define ASH_RGB_KEYBOARD_HISTOGRAM_UTIL_H_ + +#include "third_party/cros_system_api/dbus/rgbkbd/dbus-constants.h" + +namespace ash::rgb_keyboard::metrics { + +constexpr char kRgbKeyboardCapabilityTypeHistogramName[] = + "ChromeOS.RgbKeyboard.RgbKeyboardCapabilityType"; + +// The enums below are used in histograms, do not remove/renumber entries. If +// you're adding to any of these enums, update the corresponding enum listing in +// tools/metrics/histograms/enums.xml: RgbKeyboardCapabilityType. +// RgbKeyboardCapabilityType gets its values from RgbKeyboardCapabilities +// defined in: third_party/cros_system_api/dbus/rgbkbd/dbus-constants.h. +enum class RgbKeyboardCapabilityType { + kNone = 0, + kIndividualKey = 1, + kFourZoneFortyLed = 2, + kFourZoneTwelveLed = 3, + kFourZoneFifteenLed = 4, + kMaxValue = kFourZoneFifteenLed, +}; + +void EmitRgbKeyboardCapabilityType( + rgbkbd::RgbKeyboardCapabilities capabilities); + +} // namespace ash::rgb_keyboard::metrics + +#endif // ASH_RGB_KEYBOARD_HISTOGRAM_UTIL_H_
diff --git a/ash/rgb_keyboard/rgb_keyboard_manager.cc b/ash/rgb_keyboard/rgb_keyboard_manager.cc index 71cd03c..536a22ac 100644 --- a/ash/rgb_keyboard/rgb_keyboard_manager.cc +++ b/ash/rgb_keyboard/rgb_keyboard_manager.cc
@@ -9,6 +9,7 @@ #include "ash/constants/ash_features.h" #include "ash/ime/ime_controller_impl.h" +#include "ash/rgb_keyboard/histogram_util.h" #include "ash/rgb_keyboard/rgb_keyboard_util.h" #include "base/check.h" #include "base/check_op.h" @@ -117,6 +118,7 @@ } capabilities_ = reply.value(); + ash::rgb_keyboard::metrics::EmitRgbKeyboardCapabilityType(capabilities_); VLOG(1) << "RGB Keyboard capabilities=" << static_cast<uint32_t>(capabilities_);
diff --git a/ash/rgb_keyboard/rgb_keyboard_manager_unittest.cc b/ash/rgb_keyboard/rgb_keyboard_manager_unittest.cc index 876c2d18..cb78fb4 100644 --- a/ash/rgb_keyboard/rgb_keyboard_manager_unittest.cc +++ b/ash/rgb_keyboard/rgb_keyboard_manager_unittest.cc
@@ -9,7 +9,9 @@ #include "ash/constants/ash_features.h" #include "ash/ime/ime_controller_impl.h" +#include "ash/rgb_keyboard/histogram_util.h" #include "base/memory/raw_ptr.h" +#include "base/test/metrics/histogram_tester.h" #include "base/test/scoped_feature_list.h" #include "chromeos/ash/components/dbus/rgbkbd/fake_rgbkbd_client.h" #include "chromeos/ash/components/dbus/rgbkbd/rgbkbd_client.h" @@ -69,6 +71,51 @@ client_->get_rgb_keyboard_capabilities()); } +class KeyboardCapabilityHistogramEmittedTest + : public RgbKeyboardManagerTest, + public testing::WithParamInterface< + std::pair<rgbkbd::RgbKeyboardCapabilities, + ash::rgb_keyboard::metrics::RgbKeyboardCapabilityType>> { + public: + KeyboardCapabilityHistogramEmittedTest() { + std::tie(capability_, metric_) = GetParam(); + } + + protected: + rgbkbd::RgbKeyboardCapabilities capability_; + ash::rgb_keyboard::metrics::RgbKeyboardCapabilityType metric_; +}; + +INSTANTIATE_TEST_SUITE_P( + All, + KeyboardCapabilityHistogramEmittedTest, + testing::Values( + std::make_pair( + rgbkbd::RgbKeyboardCapabilities::kNone, + ash::rgb_keyboard::metrics::RgbKeyboardCapabilityType::kNone), + std::make_pair(rgbkbd::RgbKeyboardCapabilities::kIndividualKey, + ash::rgb_keyboard::metrics::RgbKeyboardCapabilityType:: + kIndividualKey), + std::make_pair(rgbkbd::RgbKeyboardCapabilities::kFourZoneFortyLed, + ash::rgb_keyboard::metrics::RgbKeyboardCapabilityType:: + kFourZoneFortyLed), + std::make_pair(rgbkbd::RgbKeyboardCapabilities::kFourZoneTwelveLed, + ash::rgb_keyboard::metrics::RgbKeyboardCapabilityType:: + kFourZoneTwelveLed), + std::make_pair(rgbkbd::RgbKeyboardCapabilities::kFourZoneFifteenLed, + ash::rgb_keyboard::metrics::RgbKeyboardCapabilityType:: + kFourZoneFifteenLed))); + +TEST_P(KeyboardCapabilityHistogramEmittedTest, + KeyboardCapabilityHistogramEmitted) { + base::HistogramTester histogram_tester; + InitializeManagerWithCapability(capability_); + EXPECT_EQ(capability_, client_->get_rgb_keyboard_capabilities()); + histogram_tester.ExpectBucketCount( + rgb_keyboard::metrics::kRgbKeyboardCapabilityTypeHistogramName, metric_, + 1); +} + TEST_F(RgbKeyboardManagerTest, SetStaticRgbValues) { const uint8_t expected_r = 1; const uint8_t expected_g = 2;
diff --git a/ash/services/cellular_setup/BUILD.gn b/ash/services/cellular_setup/BUILD.gn index 042857e..e964203 100644 --- a/ash/services/cellular_setup/BUILD.gn +++ b/ash/services/cellular_setup/BUILD.gn
@@ -21,8 +21,8 @@ deps = [ "//ash/services/cellular_setup/public/mojom", "//base", + "//chromeos/ash/components/network", "//chromeos/dbus/shill", - "//chromeos/network", "//dbus", "//url", ] @@ -45,7 +45,7 @@ "//ash/services/cellular_setup/public/mojom", "//base", "//chromeos/ash/components/dbus/hermes", - "//chromeos/network", + "//chromeos/ash/components/network", "//components/device_event_log", "//components/qr_code_generator", "//components/user_manager",
diff --git a/ash/services/device_sync/BUILD.gn b/ash/services/device_sync/BUILD.gn index 53895a3..b67ee22 100644 --- a/ash/services/device_sync/BUILD.gn +++ b/ash/services/device_sync/BUILD.gn
@@ -166,7 +166,7 @@ "//ash/services/device_sync/public/cpp", "//ash/services/device_sync/public/mojom", "//base", - "//chromeos/network", + "//chromeos/ash/components/network", "//components/gcm_driver", "//components/prefs", "//device/bluetooth", @@ -324,9 +324,9 @@ "//ash/services/device_sync/public/mojom:unit_tests", "//base", "//base/test:test_support", + "//chromeos/ash/components/network", "//chromeos/ash/components/network:test_support", "//chromeos/dbus:test_support", - "//chromeos/network", "//components/gcm_driver:test_support", "//components/prefs:test_support", "//components/signin/public/identity_manager:test_support",
diff --git a/ash/shelf/shelf_application_menu_model.cc b/ash/shelf/shelf_application_menu_model.cc index 3e8de8d..9aab2aa 100644 --- a/ash/shelf/shelf_application_menu_model.cc +++ b/ash/shelf/shelf_application_menu_model.cc
@@ -38,8 +38,7 @@ ui::ImageModel::FromImageSkia(item.icon)); } AddSeparator(ui::SPACING_SEPARATOR); - DCHECK_EQ(GetItemCount(), static_cast<int>(items.size() + 2)) - << "Update metrics |- 2|"; + DCHECK_EQ(GetItemCount(), items.size() + 2) << "Update metrics |- 2|"; } ShelfApplicationMenuModel::~ShelfApplicationMenuModel() = default; @@ -63,7 +62,8 @@ event_flags, display::kInvalidDisplayId); } // Subtract two to avoid counting the title and separator. - RecordMenuItemSelectedMetrics(command_id, std::max(GetItemCount() - 2, 0)); + RecordMenuItemSelectedMetrics(command_id, + std::max(GetItemCount(), size_t{2}) - 2); } void ShelfApplicationMenuModel::RecordMenuItemSelectedMetrics(
diff --git a/ash/shelf/shelf_application_menu_model_unittest.cc b/ash/shelf/shelf_application_menu_model_unittest.cc index ed3ff70..051ccf7 100644 --- a/ash/shelf/shelf_application_menu_model_unittest.cc +++ b/ash/shelf/shelf_application_menu_model_unittest.cc
@@ -53,7 +53,7 @@ std::u16string title = u"title"; ShelfApplicationMenuModel menu(title, {}, nullptr); // Expect the title and a separator. - ASSERT_EQ(2, menu.GetItemCount()); + ASSERT_EQ(2u, menu.GetItemCount()); EXPECT_EQ(ui::MenuModel::TYPE_TITLE, menu.GetTypeAt(0)); EXPECT_EQ(title, menu.GetLabelAt(0)); EXPECT_FALSE(menu.IsEnabledAt(0)); @@ -75,7 +75,7 @@ ShelfApplicationMenuModelTestAPI menu_test_api(&menu); // Expect the title and the enabled items. - ASSERT_EQ(static_cast<int>(5), menu.GetItemCount()); + ASSERT_EQ(5u, menu.GetItemCount()); // The label title should not be enabled. EXPECT_EQ(ui::MenuModel::TYPE_TITLE, menu.GetTypeAt(0));
diff --git a/ash/shelf/shelf_context_menu_model_unittest.cc b/ash/shelf/shelf_context_menu_model_unittest.cc index 0209e3435..f39b197d 100644 --- a/ash/shelf/shelf_context_menu_model_unittest.cc +++ b/ash/shelf/shelf_context_menu_model_unittest.cc
@@ -123,7 +123,7 @@ TEST_P(ShelfContextMenuModelTest, Basic) { ShelfContextMenuModel menu(nullptr, GetPrimaryDisplay().id()); - ASSERT_EQ(3, menu.GetItemCount()); + ASSERT_EQ(3u, menu.GetItemCount()); EXPECT_EQ(CommandId::MENU_AUTO_HIDE, menu.GetCommandIdAt(0)); EXPECT_EQ(CommandId::MENU_ALIGNMENT_MENU, menu.GetCommandIdAt(1)); if (IsPersonalizationHubParamEnabled()) { @@ -131,7 +131,7 @@ } else { EXPECT_EQ(CommandId::MENU_CHANGE_WALLPAPER, menu.GetCommandIdAt(2)); } - for (int i = 0; i < menu.GetItemCount(); ++i) { + for (size_t i = 0; i < menu.GetItemCount(); ++i) { EXPECT_TRUE(menu.IsEnabledAt(i)); EXPECT_TRUE(menu.IsVisibleAt(i)); } @@ -140,7 +140,7 @@ EXPECT_EQ(ui::MenuModel::TYPE_SUBMENU, menu.GetTypeAt(1)); ui::MenuModel* submenu = menu.GetSubmenuModelAt(1); ASSERT_TRUE(submenu); - ASSERT_EQ(3, submenu->GetItemCount()); + ASSERT_EQ(3u, submenu->GetItemCount()); EXPECT_EQ(CommandId::MENU_ALIGNMENT_LEFT, submenu->GetCommandIdAt(0)); EXPECT_EQ(CommandId::MENU_ALIGNMENT_BOTTOM, submenu->GetCommandIdAt(1)); EXPECT_EQ(CommandId::MENU_ALIGNMENT_RIGHT, submenu->GetCommandIdAt(2)); @@ -205,7 +205,7 @@ // Because the delegate is valid, the context menu will not have the desktop // menu options (autohide, shelf position, and wallpaper picker). - ASSERT_EQ(0, menu.GetItemCount()); + ASSERT_EQ(0u, menu.GetItemCount()); // Add some custom items. menu.AddItem(203, u"item"); @@ -215,7 +215,7 @@ menu.AddSubMenu(55, u"submenu", &submenu); // Ensure the menu contents match the items above. - ASSERT_EQ(4, menu.GetItemCount()); + ASSERT_EQ(4u, menu.GetItemCount()); EXPECT_EQ(ui::MenuModel::TYPE_COMMAND, menu.GetTypeAt(0)); EXPECT_EQ(ui::MenuModel::TYPE_CHECK, menu.GetTypeAt(1)); EXPECT_EQ(ui::MenuModel::TYPE_RADIO, menu.GetTypeAt(2)); @@ -239,8 +239,10 @@ ShelfContextMenuModel primary_menu(nullptr, primary_id); ShelfContextMenuModel secondary_menu(nullptr, secondary_id); - EXPECT_EQ(-1, primary_menu.GetIndexOfCommandId(CommandId::MENU_AUTO_HIDE)); - EXPECT_NE(-1, secondary_menu.GetIndexOfCommandId(CommandId::MENU_AUTO_HIDE)); + EXPECT_FALSE( + primary_menu.GetIndexOfCommandId(CommandId::MENU_AUTO_HIDE).has_value()); + EXPECT_TRUE(secondary_menu.GetIndexOfCommandId(CommandId::MENU_AUTO_HIDE) + .has_value()); } // Tests that the autohide and alignment menu options are not included in tablet @@ -254,7 +256,7 @@ // options because other options are disabled. tablet_mode_controller->SetEnabledForTest(true); ShelfContextMenuModel menu1(nullptr, primary_id); - EXPECT_EQ(2, menu1.GetItemCount()); + EXPECT_EQ(2u, menu1.GetItemCount()); EXPECT_EQ(ShelfContextMenuModel::MENU_AUTO_HIDE, menu1.GetCommandIdAt(0)); if (IsPersonalizationHubParamEnabled()) { EXPECT_EQ(ShelfContextMenuModel::MENU_PERSONALIZATION_HUB, @@ -268,7 +270,7 @@ // MENU_AUTO_HIDE, MENU_ALIGNMENT_MENU, and MENU_CHANGE_WALLPAPER. tablet_mode_controller->SetEnabledForTest(false); ShelfContextMenuModel menu2(nullptr, primary_id); - EXPECT_EQ(3, menu2.GetItemCount()); + EXPECT_EQ(3u, menu2.GetItemCount()); // Test the auto hide option. EXPECT_EQ(ShelfContextMenuModel::MENU_AUTO_HIDE, menu2.GetCommandIdAt(0)); @@ -321,7 +323,7 @@ // tools/metrics/enums.xml and that you haven't modified the order of the // existing enums. ShelfContextMenuModel menu(nullptr, GetPrimaryDisplay().id()); - EXPECT_EQ(3, menu.GetItemCount()); + EXPECT_EQ(3u, menu.GetItemCount()); } TEST_P(ShelfContextMenuModelTest, NotificationContainerEnabled) {
diff --git a/ash/shell_delegate.h b/ash/shell_delegate.h index e072f1a..5b29bceb 100644 --- a/ash/shell_delegate.h +++ b/ash/shell_delegate.h
@@ -144,9 +144,6 @@ // Retrieves the release track on which the device resides. virtual version_info::Channel GetChannel() = 0; - - // Retrieves the official Chrome version string e.g. 105.0.5178.0. - virtual std::string GetVersionString() = 0; }; } // namespace ash
diff --git a/ash/system/channel_indicator/channel_indicator.cc b/ash/system/channel_indicator/channel_indicator.cc index a9fe873..e2a0fd02 100644 --- a/ash/system/channel_indicator/channel_indicator.cc +++ b/ash/system/channel_indicator/channel_indicator.cc
@@ -4,16 +4,26 @@ #include "ash/system/channel_indicator/channel_indicator.h" +#include <string> +#include <utility> + +#include "ash/public/cpp/shelf_config.h" +#include "ash/public/cpp/style/dark_light_mode_controller.h" +#include "ash/public/cpp/system_tray_client.h" #include "ash/resources/vector_icons/vector_icons.h" -#include "ash/shelf/shelf.h" -#include "ash/system/channel_indicator/channel_indicator_utils.h" +#include "ash/strings/grit/ash_strings.h" +#include "ash/system/model/system_tray_model.h" #include "ash/system/tray/tray_constants.h" +#include "ash/system/tray/tray_item_view.h" +#include "components/session_manager/session_manager_types.h" +#include "components/version_info/channel.h" #include "ui/accessibility/ax_node_data.h" #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/paint_vector_icon.h" #include "ui/views/background.h" #include "ui/views/border.h" #include "ui/views/controls/image_view.h" +#include "ui/views/view.h" namespace ash { @@ -21,6 +31,64 @@ constexpr int kIndicatorBgCornerRadius = 50; +bool IsDisplayableChannel(version_info::Channel channel) { + switch (channel) { + case version_info::Channel::BETA: + case version_info::Channel::DEV: + case version_info::Channel::CANARY: + return true; + default: + return false; + } +} + +SkColor GetFgColor(version_info::Channel channel) { + bool is_dark_mode_enabled = + DarkLightModeController::Get()->IsDarkModeEnabled(); + switch (channel) { + case version_info::Channel::BETA: + return is_dark_mode_enabled ? gfx::kGoogleBlue200 : gfx::kGoogleBlue900; + case version_info::Channel::DEV: + return is_dark_mode_enabled ? gfx::kGoogleGreen200 : gfx::kGoogleGreen900; + case version_info::Channel::CANARY: + return is_dark_mode_enabled ? gfx::kGoogleYellow200 : gfx::kGoogleGrey900; + default: + return 0; + } +} + +SkColor GetBgColor(version_info::Channel channel) { + bool is_dark_mode_enabled = + DarkLightModeController::Get()->IsDarkModeEnabled(); + switch (channel) { + case version_info::Channel::BETA: + return is_dark_mode_enabled ? SkColorSetA(gfx::kGoogleBlue300, 0x55) + : gfx::kGoogleBlue200; + case version_info::Channel::DEV: + return is_dark_mode_enabled ? SkColorSetA(gfx::kGoogleGreen300, 0x55) + : gfx::kGoogleGreen200; + case version_info::Channel::CANARY: + return is_dark_mode_enabled ? SkColorSetA(gfx::kGoogleYellow300, 0x55) + : gfx::kGoogleYellow200; + default: + return 0; + } +} + +int GetStringResource(version_info::Channel channel) { + DCHECK(IsDisplayableChannel(channel)); + switch (channel) { + case version_info::Channel::BETA: + return IDS_ASH_STATUS_TRAY_CHANNEL_BETA; + case version_info::Channel::DEV: + return IDS_ASH_STATUS_TRAY_CHANNEL_DEV; + case version_info::Channel::CANARY: + return IDS_ASH_STATUS_TRAY_CHANNEL_CANARY; + default: + return -1; + } +} + } // namespace ChannelIndicatorView::ChannelIndicatorView(Shelf* shelf, @@ -65,7 +133,7 @@ } void ChannelIndicatorView::Update(version_info::Channel channel) { - if (!channel_indicator_utils::IsDisplayableChannel(channel)) + if (!IsDisplayableChannel(channel)) return; SetVisible(true); @@ -75,28 +143,28 @@ } void ChannelIndicatorView::SetImage(version_info::Channel channel) { - DCHECK(channel_indicator_utils::IsDisplayableChannel(channel)); + DCHECK(IsDisplayableChannel(channel)); SetBorder(views::CreateEmptyBorder( gfx::Insets::VH(kUnifiedTrayChannelIndicatorDimension / 2, 0))); image_view()->SetBackground(views::CreateRoundedRectBackground( - channel_indicator_utils::GetBgColor(channel), kIndicatorBgCornerRadius)); + GetBgColor(channel), kIndicatorBgCornerRadius)); switch (channel) { case version_info::Channel::BETA: image_view()->SetImage(gfx::CreateVectorIcon( kChannelBetaIcon, kUnifiedTrayChannelIndicatorDimension, - channel_indicator_utils::GetFgColor(channel))); + GetFgColor(channel))); break; case version_info::Channel::DEV: image_view()->SetImage(gfx::CreateVectorIcon( kChannelDevIcon, kUnifiedTrayChannelIndicatorDimension, - channel_indicator_utils::GetFgColor(channel))); + GetFgColor(channel))); break; case version_info::Channel::CANARY: image_view()->SetImage(gfx::CreateVectorIcon( kChannelCanaryIcon, kUnifiedTrayChannelIndicatorDimension, - channel_indicator_utils::GetFgColor(channel))); + GetFgColor(channel))); break; default: break; @@ -104,16 +172,14 @@ } void ChannelIndicatorView::SetAccessibleName(version_info::Channel channel) { - DCHECK(channel_indicator_utils::IsDisplayableChannel(channel)); - accessible_name_ = l10n_util::GetStringUTF16( - channel_indicator_utils::GetChannelNameStringResourceID(channel, true)); + DCHECK(IsDisplayableChannel(channel)); + accessible_name_ = l10n_util::GetStringUTF16(GetStringResource(channel)); image_view()->SetAccessibleName(accessible_name_); } void ChannelIndicatorView::SetTooltip(version_info::Channel channel) { - DCHECK(channel_indicator_utils::IsDisplayableChannel(channel)); - tooltip_ = l10n_util::GetStringUTF16( - channel_indicator_utils::GetChannelNameStringResourceID(channel, true)); + DCHECK(IsDisplayableChannel(channel)); + tooltip_ = l10n_util::GetStringUTF16(GetStringResource(channel)); } } // namespace ash
diff --git a/ash/system/channel_indicator/channel_indicator.h b/ash/system/channel_indicator/channel_indicator.h index d05075f..ce410e4f 100644 --- a/ash/system/channel_indicator/channel_indicator.h +++ b/ash/system/channel_indicator/channel_indicator.h
@@ -39,14 +39,9 @@ void SetAccessibleName(version_info::Channel channel); void SetTooltip(version_info::Channel channel); - // The localized string used to announce this view in accessibility mode. std::u16string accessible_name_; - - // The localized string displayed when this view is hovered-over. std::u16string tooltip_; - - // The release track on which this devices resides. - const version_info::Channel channel_; + version_info::Channel channel_; }; } // namespace ash
diff --git a/ash/system/channel_indicator/channel_indicator_quick_settings_view.cc b/ash/system/channel_indicator/channel_indicator_quick_settings_view.cc deleted file mode 100644 index aaee021..0000000 --- a/ash/system/channel_indicator/channel_indicator_quick_settings_view.cc +++ /dev/null
@@ -1,173 +0,0 @@ -// Copyright 2022 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/system/channel_indicator/channel_indicator_quick_settings_view.h" - -#include "ash/public/cpp/system_tray_client.h" -#include "ash/resources/vector_icons/vector_icons.h" -#include "ash/shell.h" -#include "ash/strings/grit/ash_strings.h" -#include "ash/style/icon_button.h" -#include "ash/system/channel_indicator/channel_indicator_utils.h" -#include "ash/system/model/system_tray_model.h" -#include "ash/system/tray/tray_constants.h" -#include "ui/gfx/canvas.h" -#include "ui/gfx/geometry/insets.h" -#include "ui/gfx/geometry/skia_conversions.h" -#include "ui/views/border.h" -#include "ui/views/controls/button/label_button.h" -#include "ui/views/controls/highlight_path_generator.h" -#include "ui/views/layout/box_layout.h" -#include "ui/views/view.h" - -namespace ash { - -namespace { - -constexpr int kVersionButtonHeight = 32; -constexpr int kVersionButtonBorderRadius = 4; -constexpr int kVersionButtonImageLabelSpacing = 8; - -constexpr int kVersionButtonMarginVertical = 6; -constexpr int kVersionButtonMarginHorizontal = 16; - -constexpr int kVersionButtonLargeCornerRadius = 16; -constexpr int kVersionButtonSmallCornerRadius = 4; -constexpr SkScalar kVersionButtonCorners[] = { - kVersionButtonLargeCornerRadius, kVersionButtonLargeCornerRadius, - kVersionButtonSmallCornerRadius, kVersionButtonSmallCornerRadius, - kVersionButtonSmallCornerRadius, kVersionButtonSmallCornerRadius, - kVersionButtonLargeCornerRadius, kVersionButtonLargeCornerRadius}; - -constexpr int kFeedbackButtonMarginVertical = 6; -constexpr int kFeedbackButtonMarginHorizontal = 16; - -constexpr int kFeedbackButtonLargeCornerRadius = 16; -constexpr int kFeedbackButtonSmallCornerRadius = 4; -constexpr SkScalar kFeedbackButtonCorners[] = { - kFeedbackButtonSmallCornerRadius, kFeedbackButtonSmallCornerRadius, - kFeedbackButtonLargeCornerRadius, kFeedbackButtonLargeCornerRadius, - kFeedbackButtonLargeCornerRadius, kFeedbackButtonLargeCornerRadius, - kFeedbackButtonSmallCornerRadius, kFeedbackButtonSmallCornerRadius}; - -constexpr int kButtonSpacing = 2; - -} // namespace - -// VersionButton provides a styled button, for devices on a -// non-stable release track, that has a label for the channel and ChromeOS -// version. -class ASH_EXPORT VersionButton : public views::LabelButton { - public: - explicit VersionButton(version_info::Channel channel) - : LabelButton( - base::BindRepeating([] { - Shell::Get() - ->system_tray_model() - ->client() - ->ShowChannelInfoAdditionalDetails(); - }), - channel_indicator_utils::GetFullReleaseTrackString(channel)), - channel_(channel) { - SetBorder(views::CreateEmptyBorder(gfx::Insets::VH( - kVersionButtonMarginVertical, kVersionButtonMarginHorizontal))); - SetImageLabelSpacing(kVersionButtonImageLabelSpacing); - SetMinSize(gfx::Size(0, kVersionButtonHeight)); - SetFocusBehavior(FocusBehavior::ALWAYS); - SetInstallFocusRingOnFocus(true); - views::FocusRing::Get(this)->SetColorId(ui::kColorAshFocusRing); - views::InstallRoundRectHighlightPathGenerator(this, gfx::Insets(), - kVersionButtonBorderRadius); - } - VersionButton(const VersionButton&) = delete; - VersionButton& operator=(const VersionButton&) = delete; - ~VersionButton() override = default; - - // views::LabelButton: - void PaintButtonContents(gfx::Canvas* canvas) override { - cc::PaintFlags flags; - flags.setColor(channel_indicator_utils::GetBgColor(channel_)); - flags.setStyle(cc::PaintFlags::kFill_Style); - canvas->DrawPath( - SkPath().addRoundRect(gfx::RectToSkRect(GetLocalBounds()), - kVersionButtonCorners, SkPathDirection::kCW), - flags); - } - - void OnThemeChanged() override { - views::LabelButton::OnThemeChanged(); - SetBackgroundAndFont(); - } - - private: - void SetBackgroundAndFont() { - label()->SetFontList( - gfx::FontList().DeriveWithWeight(gfx::Font::Weight::MEDIUM)); - SetEnabledTextColors(channel_indicator_utils::GetFgColor(channel_)); - } - - const version_info::Channel channel_; -}; - -// FeedbackButton provides a styled button, for devices on a -// non-stable release track, that allows the user to submit feedback. -class ASH_EXPORT FeedbackButton : public IconButton { - public: - explicit FeedbackButton(version_info::Channel channel) - : IconButton(base::BindRepeating([] { - Shell::Get() - ->system_tray_model() - ->client() - ->ShowChannelInfoGiveFeedback(); - }), - IconButton::Type::kSmall, - &kRequestFeedbackIcon, - IDS_ASH_STATUS_TRAY_REPORT_FEEDBACK), - channel_(channel) { - SetBorder(views::CreateEmptyBorder(gfx::Insets::VH( - kFeedbackButtonMarginVertical, kFeedbackButtonMarginHorizontal))); - SetIconColor(channel_indicator_utils::GetFgColor(channel_)); - } - FeedbackButton(const FeedbackButton&) = delete; - FeedbackButton& operator=(const FeedbackButton&) = delete; - ~FeedbackButton() override = default; - - // views::LabelButton: - void PaintButtonContents(gfx::Canvas* canvas) override { - cc::PaintFlags flags; - flags.setColor(channel_indicator_utils::GetBgColor(channel_)); - flags.setStyle(cc::PaintFlags::kFill_Style); - canvas->DrawPath( - SkPath().addRoundRect(gfx::RectToSkRect(GetLocalBounds()), - kFeedbackButtonCorners, SkPathDirection::kCW), - flags); - IconButton::PaintButtonContents(canvas); - } - - private: - const version_info::Channel channel_; -}; - -ChannelIndicatorQuickSettingsView::ChannelIndicatorQuickSettingsView( - version_info::Channel channel) { - auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>( - views::BoxLayout::Orientation::kHorizontal, kUnifiedSystemInfoViewPadding, - kUnifiedSystemInfoSpacing)); - layout->set_cross_axis_alignment( - views::BoxLayout::CrossAxisAlignment::kCenter); - layout->set_between_child_spacing(kButtonSpacing); - - version_button_ = AddChildView(std::make_unique<VersionButton>(channel)); - feedback_button_ = AddChildView(std::make_unique<FeedbackButton>(channel)); -} - -bool ChannelIndicatorQuickSettingsView::IsVersionButtonVisibleForTesting() { - return version_button_->GetVisible(); -} - -bool ChannelIndicatorQuickSettingsView::IsFeedbackButtonVisibleForTesting() { - return feedback_button_->GetVisible(); -} - -} // namespace ash
diff --git a/ash/system/channel_indicator/channel_indicator_quick_settings_view.h b/ash/system/channel_indicator/channel_indicator_quick_settings_view.h deleted file mode 100644 index 57475d06..0000000 --- a/ash/system/channel_indicator/channel_indicator_quick_settings_view.h +++ /dev/null
@@ -1,40 +0,0 @@ -// Copyright 2022 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 ASH_SYSTEM_CHANNEL_INDICATOR_CHANNEL_INDICATOR_QUICK_SETTINGS_VIEW_H_ -#define ASH_SYSTEM_CHANNEL_INDICATOR_CHANNEL_INDICATOR_QUICK_SETTINGS_VIEW_H_ - -#include "ash/ash_export.h" -#include "components/version_info/channel.h" -#include "ui/views/view.h" - -namespace ash { - -class VersionButton; -class FeedbackButton; - -// ChannelIndicatorQuickSettingsView contains all of the views included in the -// channel indicator UI that resides in UnifiedSystemInfoView. -class ASH_EXPORT ChannelIndicatorQuickSettingsView : public views::View { - public: - explicit ChannelIndicatorQuickSettingsView(version_info::Channel channel); - ChannelIndicatorQuickSettingsView(const ChannelIndicatorQuickSettingsView&) = - delete; - ChannelIndicatorQuickSettingsView& operator=( - const ChannelIndicatorQuickSettingsView&) = delete; - ~ChannelIndicatorQuickSettingsView() override = default; - - // Introspection methods for unit tests. - bool IsVersionButtonVisibleForTesting(); - bool IsFeedbackButtonVisibleForTesting(); - - private: - // Refs maintained for unit test introspection methods. - VersionButton* version_button_ = nullptr; - FeedbackButton* feedback_button_ = nullptr; -}; - -} // namespace ash - -#endif // ASH_SYSTEM_CHANNEL_INDICATOR_CHANNEL_INDICATOR_QUICK_SETTINGS_VIEW_H_
diff --git a/ash/system/channel_indicator/channel_indicator_quick_settings_view_unittest.cc b/ash/system/channel_indicator/channel_indicator_quick_settings_view_unittest.cc deleted file mode 100644 index d0598683..0000000 --- a/ash/system/channel_indicator/channel_indicator_quick_settings_view_unittest.cc +++ /dev/null
@@ -1,59 +0,0 @@ -// Copyright 2022 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/system/channel_indicator/channel_indicator_quick_settings_view.h" - -#include "ash/constants/ash_features.h" -#include "ash/test/ash_test_base.h" -#include "components/version_info/channel.h" - -namespace ash { - -class ChannelIndicatorQuickSettingsViewTest - : public AshTestBase, - public testing::WithParamInterface<bool> { - public: - ChannelIndicatorQuickSettingsViewTest() = default; - ChannelIndicatorQuickSettingsViewTest( - const ChannelIndicatorQuickSettingsViewTest&) = delete; - ChannelIndicatorQuickSettingsViewTest& operator=( - const ChannelIndicatorQuickSettingsViewTest&) = delete; - ~ChannelIndicatorQuickSettingsViewTest() override = default; - - // AshTestBase: - void SetUp() override { - AshTestBase::SetUp(); - - // Instantiate members. - view_ = std::make_unique<ChannelIndicatorQuickSettingsView>( - static_cast<version_info::Channel>(GetParam())); - } - - // Ignored for now, will come into play with the fix for crbug.com/1344855. - bool IsFeedbackShown() { return GetParam(); } - - ChannelIndicatorQuickSettingsView* view() { return view_.get(); } - - private: - std::unique_ptr<ChannelIndicatorQuickSettingsView> view_; -}; - -// Run the `Visible` test below for each value of version_info::Channel. -INSTANTIATE_TEST_SUITE_P(ChannelValues, - ChannelIndicatorQuickSettingsViewTest, - ::testing::Bool()); - -TEST_P(ChannelIndicatorQuickSettingsViewTest, Visible) { - // View exists. - EXPECT_TRUE(view()); - - // Version button is always visible. - EXPECT_TRUE(view()->IsVersionButtonVisibleForTesting()); - - // Feedback button is always visible, for now. This will change with the fix - // for crbug.com/1344855. - EXPECT_TRUE(view()->IsFeedbackButtonVisibleForTesting()); -} - -} // namespace ash
diff --git a/ash/system/channel_indicator/channel_indicator_unittest.cc b/ash/system/channel_indicator/channel_indicator_unittest.cc index 17a13c2..12c5bc4 100644 --- a/ash/system/channel_indicator/channel_indicator_unittest.cc +++ b/ash/system/channel_indicator/channel_indicator_unittest.cc
@@ -21,12 +21,6 @@ : public AshTestBase, public testing::WithParamInterface<version_info::Channel> { public: - ChannelIndicatorViewTest() = default; - ChannelIndicatorViewTest(const ChannelIndicatorViewTest&) = delete; - ChannelIndicatorViewTest& operator=(const ChannelIndicatorViewTest&) = delete; - ~ChannelIndicatorViewTest() override = default; - - // AshTestBase: void SetUp() override { // Need this feature enabled in order for the `ChannelIndicatorView` to be // instantiated.
diff --git a/ash/system/channel_indicator/channel_indicator_utils.cc b/ash/system/channel_indicator/channel_indicator_utils.cc deleted file mode 100644 index a42e2e1..0000000 --- a/ash/system/channel_indicator/channel_indicator_utils.cc +++ /dev/null
@@ -1,100 +0,0 @@ -// Copyright 2022 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/system/channel_indicator/channel_indicator_utils.h" - -#include <string> - -#include "ash/public/cpp/style/dark_light_mode_controller.h" -#include "ash/shell.h" -#include "ash/shell_delegate.h" -#include "ash/strings/grit/ash_strings.h" -#include "base/strings/strcat.h" -#include "base/strings/utf_string_conversions.h" -#include "ui/base/l10n/l10n_util.h" -#include "ui/gfx/color_palette.h" - -namespace ash::channel_indicator_utils { - -bool IsDisplayableChannel(version_info::Channel channel) { - switch (channel) { - case version_info::Channel::BETA: - case version_info::Channel::DEV: - case version_info::Channel::CANARY: - return true; - case version_info::Channel::STABLE: - case version_info::Channel::UNKNOWN: - return false; - } -} - -int GetChannelNameStringResourceID(version_info::Channel channel, - bool append_channel) { - switch (channel) { - case version_info::Channel::BETA: - return append_channel ? IDS_ASH_STATUS_TRAY_CHANNEL_BETA_CHANNEL - : IDS_ASH_STATUS_TRAY_CHANNEL_BETA; - case version_info::Channel::DEV: - return append_channel ? IDS_ASH_STATUS_TRAY_CHANNEL_DEV_CHANNEL - : IDS_ASH_STATUS_TRAY_CHANNEL_DEV; - case version_info::Channel::CANARY: - return append_channel ? IDS_ASH_STATUS_TRAY_CHANNEL_CANARY_CHANNEL - : IDS_ASH_STATUS_TRAY_CHANNEL_CANARY; - // Handle STABLE/UNKNOWN here to satisfy the compiler without using - // "default," but the DCHECK() above will bark if that value is ever - // actually passed in. - case version_info::Channel::STABLE: - case version_info::Channel::UNKNOWN: - return -1; - } -} - -SkColor GetFgColor(version_info::Channel channel) { - bool is_dark_mode_enabled = - DarkLightModeController::Get()->IsDarkModeEnabled(); - switch (channel) { - case version_info::Channel::BETA: - return is_dark_mode_enabled ? gfx::kGoogleBlue200 : gfx::kGoogleBlue900; - case version_info::Channel::DEV: - return is_dark_mode_enabled ? gfx::kGoogleGreen200 : gfx::kGoogleGreen900; - case version_info::Channel::CANARY: - return is_dark_mode_enabled ? gfx::kGoogleYellow200 : gfx::kGoogleGrey900; - case version_info::Channel::STABLE: - case version_info::Channel::UNKNOWN: - return SkColorSetRGB(0x00, 0x00, 0x00); - } -} - -SkColor GetBgColor(version_info::Channel channel) { - bool is_dark_mode_enabled = - DarkLightModeController::Get()->IsDarkModeEnabled(); - switch (channel) { - case version_info::Channel::BETA: - return is_dark_mode_enabled ? SkColorSetA(gfx::kGoogleBlue300, 0x55) - : gfx::kGoogleBlue200; - case version_info::Channel::DEV: - return is_dark_mode_enabled ? SkColorSetA(gfx::kGoogleGreen300, 0x55) - : gfx::kGoogleGreen200; - case version_info::Channel::CANARY: - return is_dark_mode_enabled ? SkColorSetA(gfx::kGoogleYellow300, 0x55) - : gfx::kGoogleYellow200; - case version_info::Channel::STABLE: - case version_info::Channel::UNKNOWN: - return SkColorSetRGB(0x00, 0x00, 0x00); - } -} - -std::u16string GetFullReleaseTrackString(version_info::Channel channel) { - if (!IsDisplayableChannel(channel)) - return std::u16string(); - - return base::StrCat( - {l10n_util::GetStringUTF16( - channel_indicator_utils::GetChannelNameStringResourceID(channel, - false)), - u" ", - base::UTF8ToUTF16(Shell::Get()->shell_delegate()->GetVersionString())}); -} - -} // namespace ash::channel_indicator_utils
diff --git a/ash/system/channel_indicator/channel_indicator_utils.h b/ash/system/channel_indicator/channel_indicator_utils.h deleted file mode 100644 index 28eb15e..0000000 --- a/ash/system/channel_indicator/channel_indicator_utils.h +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2022 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 ASH_SYSTEM_CHANNEL_INDICATOR_CHANNEL_INDICATOR_UTILS_H_ -#define ASH_SYSTEM_CHANNEL_INDICATOR_CHANNEL_INDICATOR_UTILS_H_ - -#include <string> - -#include "ash/ash_export.h" -#include "components/version_info/channel.h" -#include "third_party/skia/include/core/SkColor.h" - -namespace ash::channel_indicator_utils { - -// Returns 'true' if `channel` is a release track name we want to show the user. -ASH_EXPORT bool IsDisplayableChannel(version_info::Channel channel); - -// Returns a string resource ID for the release track `channel`. If -// `append_channel` is 'true' then the resource ID returned is for a string that -// has "channel" at the end e.g. "Beta Channel" instead of just "Beta". If -// `channel` is `STABLE` or `UNKNOWN` this function will return -1. -ASH_EXPORT int GetChannelNameStringResourceID(version_info::Channel channel, - bool append_channel); - -// Returns the foreground UI color for release track `channel`. If `channel` is -// one of the displayable values then the expected `SkColor` is returned, a -// value of SkColorSetRGB(0x00, 0x00, 0x00) otherwise. -ASH_EXPORT SkColor GetFgColor(version_info::Channel channel); - -// Returns the background UI color for release track `channel`. If `channel` is -// one of the displayable values then the expected `SkColor` is returned, a -// value of SkColorSetRGB(0x00, 0x00, 0x00) otherwise. -ASH_EXPORT SkColor GetBgColor(version_info::Channel channel); - -// Returns the text for the version button text, for release track `channel` -// e.g. "Beta 105.0.5167.0". If `channel` is not one of the displayable values, -// the function will return an empty std::u16string. -ASH_EXPORT std::u16string GetFullReleaseTrackString( - version_info::Channel channel); - -} // namespace ash::channel_indicator_utils - -#endif // ASH_SYSTEM_CHANNEL_INDICATOR_CHANNEL_INDICATOR_UTILS_H_ \ No newline at end of file
diff --git a/ash/system/channel_indicator/channel_indicator_utils_unittest.cc b/ash/system/channel_indicator/channel_indicator_utils_unittest.cc deleted file mode 100644 index d849d6c4..0000000 --- a/ash/system/channel_indicator/channel_indicator_utils_unittest.cc +++ /dev/null
@@ -1,114 +0,0 @@ -// Copyright 2022 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/system/channel_indicator/channel_indicator_utils.h" - -#include <string> - -#include "ash/public/cpp/style/dark_light_mode_controller.h" -#include "ash/strings/grit/ash_strings.h" -#include "ash/test/ash_test_base.h" -#include "ash/test_shell_delegate.h" -#include "components/version_info/channel.h" -#include "ui/gfx/color_palette.h" - -namespace ash { -namespace { - -// OS version that's set, and final button string that's expected. -const char* kTestOsVersion = "123.45.6789.10"; -const char16_t* kTestButtonStr = u"Beta 123.45.6789.10"; - -} // namespace - -class ChannelIndicatorUtilsTest : public AshTestBase { - public: - ChannelIndicatorUtilsTest() = default; - ChannelIndicatorUtilsTest(const ChannelIndicatorUtilsTest&) = delete; - ChannelIndicatorUtilsTest& operator=(const ChannelIndicatorUtilsTest&) = - delete; - ~ChannelIndicatorUtilsTest() override = default; - - // AshTestBase: - void SetUp() override { - // Instantiate a `TestShellDelegate` with the version set to something - // tests can verify. - std::unique_ptr<TestShellDelegate> shell_delegate = - std::make_unique<TestShellDelegate>(); - shell_delegate->set_version_string(kTestOsVersion); - AshTestBase::SetUp(std::move(shell_delegate)); - } -}; - -TEST_F(ChannelIndicatorUtilsTest, IsDisplayableChannel) { - EXPECT_FALSE(channel_indicator_utils::IsDisplayableChannel( - version_info::Channel::UNKNOWN)); - EXPECT_TRUE(channel_indicator_utils::IsDisplayableChannel( - version_info::Channel::CANARY)); - EXPECT_TRUE(channel_indicator_utils::IsDisplayableChannel( - version_info::Channel::DEV)); - EXPECT_TRUE(channel_indicator_utils::IsDisplayableChannel( - version_info::Channel::BETA)); - EXPECT_FALSE(channel_indicator_utils::IsDisplayableChannel( - version_info::Channel::STABLE)); -} - -TEST_F(ChannelIndicatorUtilsTest, GetChannelNameStringResourceID) { - // Non-displayable channel should yield a resource_id of -1. - EXPECT_EQ(channel_indicator_utils::GetChannelNameStringResourceID( - version_info::Channel::STABLE, false), - -1); - - // Same thing if `append_channel` is `true`. - EXPECT_EQ(channel_indicator_utils::GetChannelNameStringResourceID( - version_info::Channel::STABLE, true), - -1); - - // Displayable channel should yield a valid resource_id. - EXPECT_EQ(channel_indicator_utils::GetChannelNameStringResourceID( - version_info::Channel::BETA, false), - IDS_ASH_STATUS_TRAY_CHANNEL_BETA); - - // An equally-valid resource_id if `append_channel` is `true`. - EXPECT_EQ(channel_indicator_utils::GetChannelNameStringResourceID( - version_info::Channel::BETA, true), - IDS_ASH_STATUS_TRAY_CHANNEL_BETA_CHANNEL); -} - -TEST_F(ChannelIndicatorUtilsTest, GetColors) { - // Non-displayable channel should yield fg/bg colors of 0. - EXPECT_EQ(channel_indicator_utils::GetFgColor(version_info::Channel::STABLE), - SkColorSetRGB(0x00, 0x00, 0x00)); - EXPECT_EQ(channel_indicator_utils::GetBgColor(version_info::Channel::STABLE), - SkColorSetRGB(0x00, 0x00, 0x00)); - - // Displayable channel should yield valid, nonzero fg/bg colors. Check with - // dark mode not enabled first. - DarkLightModeController::Get()->SetDarkModeEnabledForTest(false); - EXPECT_EQ(channel_indicator_utils::GetFgColor(version_info::Channel::BETA), - gfx::kGoogleBlue900); - EXPECT_EQ(channel_indicator_utils::GetBgColor(version_info::Channel::BETA), - gfx::kGoogleBlue200); - - // Check with dark mode enabled. - DarkLightModeController::Get()->SetDarkModeEnabledForTest(true); - EXPECT_EQ(channel_indicator_utils::GetFgColor(version_info::Channel::BETA), - gfx::kGoogleBlue200); - EXPECT_EQ(channel_indicator_utils::GetBgColor(version_info::Channel::BETA), - SkColorSetA(gfx::kGoogleBlue300, 0x55)); -} - -TEST_F(ChannelIndicatorUtilsTest, GetFullReleaseTrackString) { - // Channel is not displayable, no string. - EXPECT_TRUE(channel_indicator_utils::GetFullReleaseTrackString( - version_info::Channel::STABLE) - .empty()); - - // Channel is displayable, string that's expected. - EXPECT_EQ(channel_indicator_utils::GetFullReleaseTrackString( - version_info::Channel::BETA), - kTestButtonStr); -} - -} // namespace ash
diff --git a/ash/system/unified/unified_system_info_view.cc b/ash/system/unified/unified_system_info_view.cc index 301a052..6bce420 100644 --- a/ash/system/unified/unified_system_info_view.cc +++ b/ash/system/unified/unified_system_info_view.cc
@@ -10,11 +10,8 @@ #include "ash/resources/vector_icons/vector_icons.h" #include "ash/session/session_controller_impl.h" #include "ash/shell.h" -#include "ash/shell_delegate.h" #include "ash/strings/grit/ash_strings.h" #include "ash/style/ash_color_provider.h" -#include "ash/system/channel_indicator/channel_indicator_quick_settings_view.h" -#include "ash/system/channel_indicator/channel_indicator_utils.h" #include "ash/system/enterprise/enterprise_domain_observer.h" #include "ash/system/model/clock_model.h" #include "ash/system/model/clock_observer.h" @@ -27,7 +24,6 @@ #include "ash/system/tray/system_tray_notifier.h" #include "ash/system/tray/tray_popup_utils.h" #include "base/bind.h" -#include "base/callback_helpers.h" #include "base/i18n/time_formatting.h" #include "base/strings/utf_string_conversions.h" #include "base/time/time.h" @@ -264,7 +260,7 @@ auto seperator = std::make_unique<views::Label>(); seperator->SetText(l10n_util::GetStringUTF16( IDS_ASH_STATUS_TRAY_BATTERY_STATUS_SEPARATOR)); - separator_view_ = AddChildView(std::move(seperator)); + separator_ = AddChildView(std::move(seperator)); status_ = AddChildView(std::make_unique<views::Label>()); Update(); } @@ -279,7 +275,7 @@ const auto color = GetContentLayerColor(ContentLayerType::kTextColorSecondary); ConfigureLabel(percentage_, color); - ConfigureLabel(separator_view_, color); + ConfigureLabel(separator_, color); ConfigureLabel(status_, color); } @@ -295,9 +291,8 @@ percentage_->SetVisible(!percentage_text.empty() && !use_smart_charging_ui_); - separator_view_->SetVisible(!percentage_text.empty() && - !use_smart_charging_ui_ && - !status_text.empty()); + separator_->SetVisible(!percentage_text.empty() && + !use_smart_charging_ui_ && !status_text.empty()); status_->SetVisible(!status_text.empty()); percentage_->NotifyAccessibilityEvent(ax::mojom::Event::kTextChanged, true); @@ -305,7 +300,7 @@ } views::Label* percentage_ = nullptr; - views::Label* separator_view_ = nullptr; + views::Label* separator_ = nullptr; views::Label* status_ = nullptr; const bool use_smart_charging_ui_; @@ -590,88 +585,34 @@ } // namespace -// A view that contains date, battery status, and whether the device -// is enterprise managed. -class ManagementPowerDateComboView : public views::View { - public: - explicit ManagementPowerDateComboView( - UnifiedSystemTrayController* controller) { - auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>( - views::BoxLayout::Orientation::kHorizontal, - kUnifiedSystemInfoViewPadding, kUnifiedSystemInfoSpacing)); - layout->set_cross_axis_alignment( - views::BoxLayout::CrossAxisAlignment::kCenter); - AddChildView(std::make_unique<DateView>(controller)); - - if (PowerStatus::Get()->IsBatteryPresent()) { - separator_view_ = AddChildView(std::make_unique<views::Separator>()); - separator_view_->SetColorId(ui::kColorAshSystemUIMenuSeparator); - separator_view_->SetPreferredLength(kUnifiedSystemInfoHeight); - - const bool use_smart_charging_ui = UseSmartChargingUI(); - if (use_smart_charging_ui) - AddChildView(std::make_unique<BatteryIconView>(controller)); - AddChildView(std::make_unique<BatteryLabelView>(controller, - use_smart_charging_ui)); - } - - auto* spacing = AddChildView(std::make_unique<views::View>()); - layout->SetFlexForView(spacing, 1); - - enterprise_managed_view_ = - AddChildView(std::make_unique<EnterpriseManagedView>(controller)); - supervised_view_ = AddChildView(std::make_unique<SupervisedUserView>()); - } - ManagementPowerDateComboView(const ManagementPowerDateComboView&) = delete; - ManagementPowerDateComboView& operator=(const ManagementPowerDateComboView&) = - delete; - ~ManagementPowerDateComboView() override = default; - - // Introspection methods for unit tests, that call into individual views. - bool IsEnterpriseManagedVisibleForTesting() { - return enterprise_managed_view_->GetVisible(); - } - - bool IsSupervisedVisibleForTesting() { - return supervised_view_->GetVisible(); - } - - private: - // Pointer to the actual child view is maintained for unit testing, owned by - // `ManagementPowerDateComboView`. - EnterpriseManagedView* enterprise_managed_view_ = nullptr; - - // Pointer to the actual child view is maintained for unit testing, owned by - // `ManagementPowerDateComboView`. - SupervisedUserView* supervised_view_ = nullptr; - - // Separator between date and battery views, owned by - // `ManagementPowerDateComboView`. - views::Separator* separator_view_ = nullptr; -}; - UnifiedSystemInfoView::UnifiedSystemInfoView( UnifiedSystemTrayController* controller) { - // Layout for the overall UnifiedSystemInfoView. auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>( - views::BoxLayout::Orientation::kVertical, kUnifiedSystemInfoViewPadding, + views::BoxLayout::Orientation::kHorizontal, kUnifiedSystemInfoViewPadding, kUnifiedSystemInfoSpacing)); layout->set_cross_axis_alignment( views::BoxLayout::CrossAxisAlignment::kCenter); - // Construct a ManagementPowerDateComboView and save off a raw pointer, to - // facilitate introspection needed for unit tests. - combo_view_ = - AddChildView(std::make_unique<ManagementPowerDateComboView>(controller)); + AddChildView(std::make_unique<DateView>(controller)); - // If the release track is not "stable" then channel indicator UI for quick - // settings is put up. - auto channel = Shell::Get()->shell_delegate()->GetChannel(); - if (features::IsReleaseTrackUiEnabled() && - channel_indicator_utils::IsDisplayableChannel(channel)) { - channel_view_ = AddChildView( - std::make_unique<ChannelIndicatorQuickSettingsView>(channel)); + if (PowerStatus::Get()->IsBatteryPresent()) { + separator_ = AddChildView(std::make_unique<views::Separator>()); + separator_->SetColorId(ui::kColorAshSystemUIMenuSeparator); + separator_->SetPreferredLength(kUnifiedSystemInfoHeight); + + const bool use_smart_charging_ui = UseSmartChargingUI(); + if (use_smart_charging_ui) + AddChildView(std::make_unique<BatteryIconView>(controller)); + AddChildView( + std::make_unique<BatteryLabelView>(controller, use_smart_charging_ui)); } + + auto* spacing = AddChildView(std::make_unique<views::View>()); + layout->SetFlexForView(spacing, 1); + + enterprise_managed_ = + AddChildView(std::make_unique<EnterpriseManagedView>(controller)); + supervised_ = AddChildView(std::make_unique<SupervisedUserView>()); } UnifiedSystemInfoView::~UnifiedSystemInfoView() = default; @@ -684,18 +625,6 @@ Layout(); } -bool UnifiedSystemInfoView::IsEnterpriseManagedVisibleForTesting() { - return combo_view_->IsEnterpriseManagedVisibleForTesting(); // IN-TEST -} - -bool UnifiedSystemInfoView::IsSupervisedVisibleForTesting() { - return combo_view_->IsSupervisedVisibleForTesting(); // IN-TEST -} - -bool UnifiedSystemInfoView::IsChannelIndicatorQuickSettingsVisibleForTesting() { - return channel_view_ && channel_view_->GetVisible(); // IN-TEST -} - BEGIN_METADATA(UnifiedSystemInfoView, views::View) END_METADATA
diff --git a/ash/system/unified/unified_system_info_view.h b/ash/system/unified/unified_system_info_view.h index bbbd9d62..db8951d5 100644 --- a/ash/system/unified/unified_system_info_view.h +++ b/ash/system/unified/unified_system_info_view.h
@@ -11,13 +11,15 @@ #include "ui/base/metadata/metadata_header_macros.h" #include "ui/views/view.h" +namespace views { +class Separator; +} // namespace views + namespace ash { -class ManagementPowerDateComboView; -class ChannelIndicatorQuickSettingsView; - // A view at the bottom of UnifiedSystemTray bubble that shows system -// information. +// information. The view contains date, battery status, and whether the device +// is enterprise managed or not. class ASH_EXPORT UnifiedSystemInfoView : public views::View { public: METADATA_HEADER(UnifiedSystemInfoView); @@ -32,11 +34,6 @@ void ChildPreferredSizeChanged(views::View* child) override; void ChildVisibilityChanged(views::View* child) override; - // Introspection methods needed for unit tests. - bool IsEnterpriseManagedVisibleForTesting(); - bool IsSupervisedVisibleForTesting(); - bool IsChannelIndicatorQuickSettingsVisibleForTesting(); - private: FRIEND_TEST_ALL_PREFIXES(UnifiedSystemInfoViewTest, EnterpriseManagedVisible); FRIEND_TEST_ALL_PREFIXES(UnifiedSystemInfoViewTest, @@ -45,14 +42,14 @@ EnterpriseUserManagedVisible); FRIEND_TEST_ALL_PREFIXES(UnifiedSystemInfoViewNoSessionTest, ChildVisible); - // Raw pointer to the combo view (owned by `UnifiedSystemInfoView`) that - // facilitates introspection needed for unit tests. - ManagementPowerDateComboView* combo_view_ = nullptr; + // EnterpriseManagedView for unit testing. Owned by this view. Null if + // kManagedDeviceUIRedesign is enabled. + views::View* enterprise_managed_ = nullptr; + // SupervisedUserView for unit testing. Owned by this view . Null if + // kManagedDeviceUIRedesign is enabled. + views::View* supervised_ = nullptr; - // Raw pointer to the channel indicator quick settings view (owned by - // `UnifiedSystemInfoView`) that facilitates introspection needed for unit - // tests. - ChannelIndicatorQuickSettingsView* channel_view_ = nullptr; + views::Separator* separator_ = nullptr; }; } // namespace ash
diff --git a/ash/system/unified/unified_system_info_view_unittest.cc b/ash/system/unified/unified_system_info_view_unittest.cc index bbab3af..0c56982 100644 --- a/ash/system/unified/unified_system_info_view_unittest.cc +++ b/ash/system/unified/unified_system_info_view_unittest.cc
@@ -14,47 +14,13 @@ #include "ash/system/unified/unified_system_tray_controller.h" #include "ash/system/unified/unified_system_tray_model.h" #include "ash/test/ash_test_base.h" -#include "ash/test_shell_delegate.h" #include "base/memory/scoped_refptr.h" #include "base/test/scoped_feature_list.h" -#include "components/version_info/channel.h" namespace ash { -// `UnifiedSystemInfoView` contains a set of "baseline" UI elements that are -// always visible, but some elements are visible only under certain conditions. -// To verify that these "conditional" UI elements are visible or not-visible -// only when expected, each `UnifiedSystemInfoViewTest` test case is executed -// with every possible combination of the following flags, passed as a -// parameter. -enum class TestFlags : uint8_t { - // No conditional UI flags are set. - kNone = 0b00000000, - - // Enterprise/management status display is enabled. - kManagedDeviceUi = 0b00000001, - - // Release track UI is visible if two conditions are met: (1) the feature that - // guards its display is enabled (kReleaseTrackUi) and (2) the release track - // itself is a value other than "stable" (kReleaseTrackNotStable). Each - // combination of one, none, or both of these conditions is a valid scenario. - kReleaseTrackUi = 0b00000010, - kReleaseTrackNotStable = 0b00000100, -}; - -TestFlags operator&(TestFlags a, TestFlags b) { - return static_cast<TestFlags>(static_cast<uint8_t>(a) & - static_cast<uint8_t>(b)); -} - -TestFlags operator|(TestFlags a, TestFlags b) { - return static_cast<TestFlags>(static_cast<uint8_t>(a) | - static_cast<uint8_t>(b)); -} - -class UnifiedSystemInfoViewTest - : public AshTestBase, - public testing::WithParamInterface<TestFlags> { +class UnifiedSystemInfoViewTest : public AshTestBase, + public testing::WithParamInterface<bool> { public: UnifiedSystemInfoViewTest() = default; UnifiedSystemInfoViewTest(const UnifiedSystemInfoViewTest&) = delete; @@ -63,45 +29,18 @@ ~UnifiedSystemInfoViewTest() override = default; void SetUp() override { - // Provide our own `TestShellDelegate`, with a non-stable channel set if - // the passed-in parameter dictates. - std::unique_ptr<TestShellDelegate> shell_delegate = - std::make_unique<TestShellDelegate>(); - if (IsReleaseTrackNotStable()) - shell_delegate->set_channel(version_info::Channel::BETA); - AshTestBase::SetUp(std::move(shell_delegate)); + AshTestBase::SetUp(); - // Enable/disable of the two features we care about is conditional on the - // passed-in parameter. scoped_feature_list_ = std::make_unique<base::test::ScopedFeatureList>(); - std::vector<base::Feature> enabled_features, disabled_features; - if (IsManagedDeviceUIRedesignEnabled()) - enabled_features.push_back(features::kManagedDeviceUIRedesign); - else - disabled_features.push_back(features::kManagedDeviceUIRedesign); - if (IsReleaseTrackUiEnabled()) - enabled_features.push_back(features::kReleaseTrackUi); - else - disabled_features.push_back(features::kReleaseTrackUi); - scoped_feature_list_->InitWithFeatures(enabled_features, disabled_features); + scoped_feature_list_->InitWithFeatureState( + features::kManagedDeviceUIRedesign, IsManagedDeviceUIRedesignEnabled()); - // Instantiate members. model_ = base::MakeRefCounted<UnifiedSystemTrayModel>(nullptr); controller_ = std::make_unique<UnifiedSystemTrayController>(model_.get()); info_view_ = std::make_unique<UnifiedSystemInfoView>(controller_.get()); } - bool IsManagedDeviceUIRedesignEnabled() const { - return (GetParam() & TestFlags::kManagedDeviceUi) != TestFlags::kNone; - } - - bool IsReleaseTrackUiEnabled() const { - return (GetParam() & TestFlags::kReleaseTrackUi) != TestFlags::kNone; - } - - bool IsReleaseTrackNotStable() const { - return (GetParam() & TestFlags::kReleaseTrackNotStable) != TestFlags::kNone; - } + bool IsManagedDeviceUIRedesignEnabled() const { return GetParam(); } void TearDown() override { info_view_.reset(); @@ -124,25 +63,14 @@ std::unique_ptr<base::test::ScopedFeatureList> scoped_feature_list_; }; -// Execute each test case with every possible combination of `TestFlags`. INSTANTIATE_TEST_SUITE_P( All, UnifiedSystemInfoViewTest, - testing::Values(TestFlags::kNone, - TestFlags::kManagedDeviceUi, - TestFlags::kReleaseTrackUi, - TestFlags::kManagedDeviceUi | TestFlags::kReleaseTrackUi, - TestFlags::kReleaseTrackNotStable, - TestFlags::kManagedDeviceUi | - TestFlags::kReleaseTrackNotStable, - TestFlags::kReleaseTrackUi | - TestFlags::kReleaseTrackNotStable, - TestFlags::kManagedDeviceUi | TestFlags::kReleaseTrackUi | - TestFlags::kReleaseTrackNotStable)); + testing::Bool() /* IsManagedDeviceUIRedesignEnabled() */); TEST_P(UnifiedSystemInfoViewTest, EnterpriseManagedVisible) { // By default, EnterpriseManagedView is not shown. - EXPECT_FALSE(info_view()->IsEnterpriseManagedVisibleForTesting()); + EXPECT_FALSE(info_view()->enterprise_managed_->GetVisible()); // Simulate enterprise information becoming available. enterprise_domain()->SetDeviceEnterpriseInfo( @@ -150,12 +78,7 @@ ManagementDeviceMode::kChromeEnterprise}); // EnterpriseManagedView should be shown. - EXPECT_TRUE(info_view()->IsEnterpriseManagedVisibleForTesting()); - - // If the release track UI is enabled AND the release track is non-stable, the - // ChannelIndicatorQuickSettingsView is shown. - EXPECT_EQ(IsReleaseTrackUiEnabled() && IsReleaseTrackNotStable(), - info_view()->IsChannelIndicatorQuickSettingsVisibleForTesting()); + EXPECT_TRUE(info_view()->enterprise_managed_->GetVisible()); } TEST_P(UnifiedSystemInfoViewTest, EnterpriseManagedVisibleForActiveDirectory) { @@ -166,29 +89,19 @@ ManagementDeviceMode::kChromeEnterprise}); // EnterpriseManagedView should be shown. - EXPECT_TRUE(info_view()->IsEnterpriseManagedVisibleForTesting()); - - // If the release track UI is enabled AND the release track is non-stable, the - // ChannelIndicatorQuickSettingsView is shown. - EXPECT_EQ(IsReleaseTrackUiEnabled() && IsReleaseTrackNotStable(), - info_view()->IsChannelIndicatorQuickSettingsVisibleForTesting()); + EXPECT_TRUE(info_view()->enterprise_managed_->GetVisible()); } TEST_P(UnifiedSystemInfoViewTest, EnterpriseUserManagedVisible) { // By default, EnterpriseManagedView is not shown. - EXPECT_FALSE(info_view()->IsEnterpriseManagedVisibleForTesting()); + EXPECT_FALSE(info_view()->enterprise_managed_->GetVisible()); // Simulate enterprise information becoming available. enterprise_domain()->SetEnterpriseAccountDomainInfo("example.com"); // EnterpriseManagedView should be shown if the feature is enabled. EXPECT_EQ(IsManagedDeviceUIRedesignEnabled(), - info_view()->IsEnterpriseManagedVisibleForTesting()); - - // If the release track UI is enabled AND the release track is non-stable, the - // ChannelIndicatorQuickSettingsView is shown. - EXPECT_EQ(IsReleaseTrackUiEnabled() && IsReleaseTrackNotStable(), - info_view()->IsChannelIndicatorQuickSettingsVisibleForTesting()); + info_view()->enterprise_managed_->GetVisible()); } using UnifiedSystemInfoViewNoSessionTest = NoSessionAshTestBase; @@ -205,7 +118,7 @@ // Before login the supervised user view is invisible. { auto info_view = std::make_unique<UnifiedSystemInfoView>(controller.get()); - EXPECT_FALSE(info_view->IsSupervisedVisibleForTesting()); + EXPECT_FALSE(info_view->supervised_->GetVisible()); } // Simulate a supervised user logging in. @@ -220,7 +133,7 @@ // Now the supervised user view is visible. { auto info_view = std::make_unique<UnifiedSystemInfoView>(controller.get()); - EXPECT_TRUE(info_view->IsSupervisedVisibleForTesting()); + EXPECT_TRUE(info_view->supervised_->GetVisible()); } }
diff --git a/ash/test_shell_delegate.cc b/ash/test_shell_delegate.cc index 0cd0493..2d401a7c 100644 --- a/ash/test_shell_delegate.cc +++ b/ash/test_shell_delegate.cc
@@ -5,7 +5,6 @@ #include "ash/test_shell_delegate.h" #include <memory> -#include <string> #include "ash/accessibility/default_accessibility_delegate.h" #include "ash/capture_mode/test_capture_mode_delegate.h" @@ -120,8 +119,4 @@ return channel_; } -std::string TestShellDelegate::GetVersionString() { - return version_string_; -} - } // namespace ash
diff --git a/ash/test_shell_delegate.h b/ash/test_shell_delegate.h index fe3f6c0..c9c2d8b5 100644 --- a/ash/test_shell_delegate.h +++ b/ash/test_shell_delegate.h
@@ -6,7 +6,6 @@ #define ASH_TEST_SHELL_DELEGATE_H_ #include <memory> -#include <string> #include "ash/services/multidevice_setup/public/mojom/multidevice_setup.mojom.h" #include "ash/shell_delegate.h" @@ -66,14 +65,9 @@ void OpenFeedbackPageForPersistentDesksBar() override {} void SetLastCommittedURLForWindow(const GURL& url); version_info::Channel GetChannel() override; - std::string GetVersionString() override; void set_channel(version_info::Channel channel) { channel_ = channel; } - void set_version_string(const std::string& string) { - version_string_ = string; - } - private: // True if the current top window can go back. bool can_go_back_ = true; @@ -95,8 +89,6 @@ GURL last_committed_url_ = GURL::EmptyGURL(); version_info::Channel channel_ = version_info::Channel::UNKNOWN; - - std::string version_string_; }; } // namespace ash
diff --git a/ash/webui/shimless_rma/backend/BUILD.gn b/ash/webui/shimless_rma/backend/BUILD.gn index 399e646c..9c0f63e 100644 --- a/ash/webui/shimless_rma/backend/BUILD.gn +++ b/ash/webui/shimless_rma/backend/BUILD.gn
@@ -22,10 +22,10 @@ "//chromeos/ash/components/dbus/rmad:rmad_proto", "//chromeos/ash/components/dbus/update_engine", "//chromeos/ash/components/dbus/update_engine:proto", + "//chromeos/ash/components/network", "//chromeos/dbus", "//chromeos/dbus/power", "//chromeos/dbus/util", - "//chromeos/network:network", "//chromeos/services/network_config:in_process_instance", "//chromeos/services/network_config/public/mojom:mojom", "//components/qr_code_generator", @@ -49,11 +49,11 @@ "//chromeos/ash/components/dbus/rmad", "//chromeos/ash/components/dbus/rmad:rmad_proto", "//chromeos/ash/components/dbus/update_engine:update_engine", + "//chromeos/ash/components/network", "//chromeos/ash/components/network:test_support", "//chromeos/dbus:test_support", "//chromeos/dbus/power", "//chromeos/login/login_state:login_state", - "//chromeos/network:network", "//chromeos/services/network_config/public/cpp:test_support", "//chromeos/services/network_config/public/mojom:mojom", "//chromeos/services/network_config/public/mojom:network_types_shared_cpp_sources",
diff --git a/ash/wm/base_state.cc b/ash/wm/base_state.cc index 3af5ca27..205f7d2c 100644 --- a/ash/wm/base_state.cc +++ b/ash/wm/base_state.cc
@@ -211,6 +211,16 @@ gfx::Rect BaseState::GetSnappedWindowBoundsInParent( aura::Window* window, const WindowStateType state_type) { + return BaseState::GetSnappedWindowBoundsInParent(window, state_type, + kDefaultSnapRatio); +} + +gfx::Rect BaseState::GetSnappedWindowBoundsInParent( + aura::Window* window, + const WindowStateType state_type, + float snap_ratio) { + DCHECK(state_type == WindowStateType::kPrimarySnapped || + state_type == WindowStateType::kSecondarySnapped); gfx::Rect bounds_in_parent; if (ShouldAllowSplitView()) { bounds_in_parent = @@ -218,13 +228,15 @@ (state_type == WindowStateType::kPrimarySnapped) ? SplitViewController::LEFT : SplitViewController::RIGHT, - window); + window, snap_ratio); } else { - bounds_in_parent = (state_type == WindowStateType::kPrimarySnapped) - ? GetDefaultSnappedWindowBoundsInParent( - window, SnapViewType::kPrimary) - : GetDefaultSnappedWindowBoundsInParent( - window, SnapViewType::kSecondary); + // Use `window_positioning_utils` to calculate the snapped window bounds. + bounds_in_parent = ash::GetSnappedWindowBoundsInParent( + window, + state_type == WindowStateType::kPrimarySnapped + ? SnapViewType::kPrimary + : SnapViewType::kSecondary, + snap_ratio); } return bounds_in_parent; }
diff --git a/ash/wm/base_state.h b/ash/wm/base_state.h index 5cbfab2..79eb819 100644 --- a/ash/wm/base_state.h +++ b/ash/wm/base_state.h
@@ -63,6 +63,14 @@ aura::Window* window, const chromeos::WindowStateType state_type); + // Returns the window bounds for snapped window state for given `snap_ratio`. + // Note that even when `snap_ratio` is provided, it might get ignored to meet + // the window's minimum size requirement. + gfx::Rect GetSnappedWindowBoundsInParent( + aura::Window* window, + const chromeos::WindowStateType state_type, + float snap_ratio); + // Prepares for the window snap event. Check if the window can be snapped in // split screen and if so, SplitViewController will start observe this window. // This needs to be done before the window's state and bounds change to its
diff --git a/ash/wm/default_state.cc b/ash/wm/default_state.cc index 81cfe85..5372357a 100644 --- a/ash/wm/default_state.cc +++ b/ash/wm/default_state.cc
@@ -40,6 +40,19 @@ namespace ash { namespace { +float GetFloatValueForSnapRatio(WindowSnapWMEvent::SnapRatio snap_ratio) { + switch (snap_ratio) { + case WindowSnapWMEvent::SnapRatio::kOneThirdSnapRatio: + return kOneThirdPositionRatio; + case WindowSnapWMEvent::SnapRatio::kDefaultSnapRatio: + return kDefaultPositionRatio; + case WindowSnapWMEvent::SnapRatio::kTwoThirdSnapRatio: + return kTwoThirdPositionRatio; + default: + return kDefaultPositionRatio; + } +} + using ::chromeos::WindowStateType; // This specifies how much percent (30%) of a window rect @@ -359,10 +372,16 @@ HandleWindowSnapping(window_state, type); if (next_state_type == current_state_type && window_state->IsSnapped()) { - gfx::Rect snapped_bounds = GetSnappedWindowBoundsInParent( - window_state->window(), event->type() == WM_EVENT_SNAP_PRIMARY - ? WindowStateType::kPrimarySnapped - : WindowStateType::kSecondarySnapped); + float snap_ratio = GetFloatValueForSnapRatio( + event->IsSnapInfoAvailable() + ? static_cast<const WindowSnapWMEvent*>(event)->snap_ratio() + : WindowSnapWMEvent::SnapRatio::kDefaultSnapRatio); + gfx::Rect snapped_bounds = + GetSnappedWindowBoundsInParent(window_state->window(), + event->type() == WM_EVENT_SNAP_PRIMARY + ? WindowStateType::kPrimarySnapped + : WindowStateType::kSecondarySnapped, + snap_ratio); window_state->SetBoundsDirectAnimated(snapped_bounds); return; } @@ -375,9 +394,19 @@ } window_state->RecordAndResetWindowSnapActionSource(current_state_type, next_state_type); + + // TODO(crbug.com/1345508: Restore back to a snapped window with its + // previous snap ratio.) + EnterToNextState( + window_state, next_state_type, + absl::make_optional( + event->IsSnapInfoAvailable() + ? static_cast<const WindowSnapWMEvent*>(event)->snap_ratio() + : WindowSnapWMEvent::SnapRatio::kDefaultSnapRatio)); + return; } - EnterToNextState(window_state, next_state_type); + EnterToNextState(window_state, next_state_type, absl::nullopt); } // static @@ -425,8 +454,10 @@ } } -void DefaultState::EnterToNextState(WindowState* window_state, - WindowStateType next_state_type) { +void DefaultState::EnterToNextState( + WindowState* window_state, + WindowStateType next_state_type, + absl::optional<WindowSnapWMEvent::SnapRatio> snap_ratio) { // Do nothing if we're already in the same state. if (state_type_ == next_state_type) return; @@ -477,7 +508,11 @@ if (window_state->IsMaximizedOrFullscreenOrPinned()) MoveToDisplayForRestore(window_state); - UpdateBoundsFromState(window_state, previous_state_type); + UpdateBoundsFromState( + window_state, previous_state_type, + snap_ratio.has_value() + ? absl::make_optional(GetFloatValueForSnapRatio(snap_ratio.value())) + : absl::nullopt); UpdateMinimizedState(window_state, previous_state_type); // Normal state should have no restore bounds unless it's @@ -520,7 +555,9 @@ window_state->SetRestoreBoundsInParent(stored_bounds_); } - UpdateBoundsFromState(window_state, state_in_previous_mode->GetType()); + // When reentering a state, use the saved `snap_ratio_`. + UpdateBoundsFromState(window_state, state_in_previous_mode->GetType(), + window_state->snap_ratio()); UpdateMinimizedState(window_state, state_in_previous_mode->GetType()); // Then restore the restore bounds to their previous value. @@ -533,14 +570,20 @@ } void DefaultState::UpdateBoundsFromState(WindowState* window_state, - WindowStateType previous_state_type) { + WindowStateType previous_state_type, + absl::optional<float> snap_ratio) { aura::Window* window = window_state->window(); gfx::Rect bounds_in_parent; + switch (state_type_) { + // TODO(crbug.com/1335500): Refactor snap state type handling. Since only + // snap state types define `snap_ratio`, it makes sense to handle them + // separately. case WindowStateType::kPrimarySnapped: case WindowStateType::kSecondarySnapped: - bounds_in_parent = - GetSnappedWindowBoundsInParent(window_state->window(), state_type_); + DCHECK(snap_ratio.has_value()); + bounds_in_parent = GetSnappedWindowBoundsInParent( + window_state->window(), state_type_, snap_ratio.value()); base::UmaHistogramEnumeration( kSnapWindowDeviceOrientationHistogramName, chromeos::IsDisplayLayoutHorizontal(
diff --git a/ash/wm/default_state.h b/ash/wm/default_state.h index 03dbc4e..9e89f28 100644 --- a/ash/wm/default_state.h +++ b/ash/wm/default_state.h
@@ -50,9 +50,12 @@ const SetBoundsWMEvent* bounds_event); // Enters next state. This is used when the state moves from one to another - // within the same desktop mode. - void EnterToNextState(WindowState* window_state, - chromeos::WindowStateType next_state_type); + // within the same desktop mode. Uses `snap_ratio` for the next state type if + // provided. + void EnterToNextState( + WindowState* window_state, + chromeos::WindowStateType next_state_type, + absl::optional<WindowSnapWMEvent::SnapRatio> snap_ratio); // Reenters the current state. This is called when migrating from // previous desktop mode, and the window's state needs to re-construct the @@ -60,9 +63,11 @@ void ReenterToCurrentState(WindowState* window_state, WindowState::State* state_in_previous_mode); - // Animates to new window bounds based on the current and previous state type. + // Animates to new window bounds, using `snap_ratio` if provided, based on the + // current and previous state type. void UpdateBoundsFromState(WindowState* window_state, - chromeos::WindowStateType old_state_type); + chromeos::WindowStateType old_state_type, + absl::optional<float> snap_ratio); // Updates the window bounds for display bounds, or display work area bounds // changes.
diff --git a/ash/wm/splitview/split_view_controller.cc b/ash/wm/splitview/split_view_controller.cc index ac6dda3..3250e87 100644 --- a/ash/wm/splitview/split_view_controller.cc +++ b/ash/wm/splitview/split_view_controller.cc
@@ -88,11 +88,6 @@ // always be moved to these three positions. constexpr float kFixedPositionRatios[] = {0.f, 0.5f, 1.0f}; -// Two optional position ratios of the divider. Whether the divider can be moved -// to these two positions depends on the minimum size of the snapped windows. -constexpr float kOneThirdPositionRatio = 0.33f; -constexpr float kTwoThirdPositionRatio = 0.67f; - // The black scrim starts to fade in when the divider is moved past the two // optional positions (kOneThirdPositionRatio, kTwoThirdPositionRatio) and // reaches to its maximum opacity (kBlackScrimOpacity) after moving @@ -1038,16 +1033,25 @@ gfx::Rect SplitViewController::GetSnappedWindowBoundsInParent( SnapPosition snap_position, - aura::Window* window_for_minimum_size) { - gfx::Rect bounds = - GetSnappedWindowBoundsInScreen(snap_position, window_for_minimum_size); + aura::Window* window_for_minimum_size, + float snap_ratio) { + gfx::Rect bounds = GetSnappedWindowBoundsInScreen( + snap_position, window_for_minimum_size, snap_ratio); wm::ConvertRectFromScreen(root_window_, &bounds); return bounds; } -gfx::Rect SplitViewController::GetSnappedWindowBoundsInScreen( +gfx::Rect SplitViewController::GetSnappedWindowBoundsInParent( SnapPosition snap_position, aura::Window* window_for_minimum_size) { + return GetSnappedWindowBoundsInParent(snap_position, window_for_minimum_size, + kDefaultSnapRatio); +} + +gfx::Rect SplitViewController::GetSnappedWindowBoundsInScreen( + SnapPosition snap_position, + aura::Window* window_for_minimum_size, + float snap_ratio) { const gfx::Rect work_area_bounds_in_screen = screen_util::GetDisplayWorkAreaBoundsInScreenForActiveDeskContainer( root_window_); @@ -1069,8 +1073,8 @@ // mode to `GetSnappedWindowBounds()` in window_positioning_utils.cc. const bool in_tablet = Shell::Get()->tablet_mode_controller()->InTabletMode(); const int work_area_size = GetDividerEndPosition(); - int divider_position = - divider_position_ < 0 ? GetDefaultDividerPosition() : divider_position_; + int divider_position = divider_position_ < 0 ? GetDividerPosition(snap_ratio) + : divider_position_; // Edit `divider_position` if window restore is currently restoring a snapped // window; take into account the snap percentage saved by the window. Only do @@ -1153,15 +1157,26 @@ return snapped_window_bounds_in_screen; } +gfx::Rect SplitViewController::GetSnappedWindowBoundsInScreen( + SnapPosition snap_position, + aura::Window* window_for_minimum_size) { + return GetSnappedWindowBoundsInScreen(snap_position, window_for_minimum_size, + kDefaultSnapRatio); +} + bool SplitViewController::ShouldUseWindowBoundsDuringFastResize() { return is_resizing_ && tablet_resize_mode_ == TabletResizeMode::kFast; } int SplitViewController::GetDefaultDividerPosition() const { - int default_divider_position = GetDividerEndPosition() / 2; + return GetDividerPosition(kDefaultPositionRatio); +} + +int SplitViewController::GetDividerPosition(float snap_ratio) const { + int next_divider_position = GetDividerEndPosition() * snap_ratio; if (split_view_type_ == SplitViewType::kTabletType) - default_divider_position -= kSplitviewDividerShortSideLength / 2; - return default_divider_position; + next_divider_position -= kSplitviewDividerShortSideLength / 2; + return next_divider_position; } bool SplitViewController::IsDividerAnimating() const {
diff --git a/ash/wm/splitview/split_view_controller.h b/ash/wm/splitview/split_view_controller.h index 97bf914..1841adf 100644 --- a/ash/wm/splitview/split_view_controller.h +++ b/ash/wm/splitview/split_view_controller.h
@@ -216,12 +216,30 @@ // |left_window_|. All the other window will open on the right side. aura::Window* GetDefaultSnappedWindow(); - // Gets snapped bounds based on |snap_position| and |divider_position_|, - // adjusted to accommodate the minimum size of |window_for_minimum_size| if - // |window_for_minimum_size| is not null. + // Gets snapped bounds based on |snap_position|, the side of the screen to + // snap to, and |snap_ratio|, the ratio of the screen that the snapped window + // will occupy, adjusted to accommodate the minimum size of + // |window_for_minimum_size| if |window_for_minimum_size| is not null. + gfx::Rect GetSnappedWindowBoundsInParent( + SnapPosition snap_position, + aura::Window* window_for_minimum_size, + float snap_ratio); + + // Gets snapped bounds based on |snap_position|, |divider_position_|, and + // |kDefaultSnapRatio|, adjusted to accommodate the minimum size of + // |window_for_minimum_size| if |window_for_minimum_size| is not null. gfx::Rect GetSnappedWindowBoundsInParent( SnapPosition snap_position, aura::Window* window_for_minimum_size); + + // Gets snapped bounds in screen coordinates based on |snap_position| and + // |snap_ratio|. + gfx::Rect GetSnappedWindowBoundsInScreen( + SnapPosition snap_position, + aura::Window* window_for_minimum_size, + float snap_ratio); + + // Gets snapped bounds in screen coordinates for |kDefaultSnapRatio|. gfx::Rect GetSnappedWindowBoundsInScreen( SnapPosition snap_position, aura::Window* window_for_minimum_size); @@ -234,6 +252,11 @@ // Gets the default value of |divider_position_|. int GetDefaultDividerPosition() const; + // Calculates the new divider position to move |divider_position_| to, such + // that the primary window will occupy |snap_ratio| of the screen, and the + // secondary window will occupy the rest. + int GetDividerPosition(float snap_ratio) const; + // Returns true during the divider snap animation. bool IsDividerAnimating() const;
diff --git a/ash/wm/window_positioning_utils.cc b/ash/wm/window_positioning_utils.cc index 481d3c9..ccb8b38 100644 --- a/ash/wm/window_positioning_utils.cc +++ b/ash/wm/window_positioning_utils.cc
@@ -108,12 +108,18 @@ kMinimumOnScreenArea, bounds); } -gfx::Rect GetDefaultSnappedWindowBoundsInParent(aura::Window* window, - SnapViewType type) { +gfx::Rect GetSnappedWindowBoundsInParent(aura::Window* window, + SnapViewType type, + float snap_ratio) { return GetSnappedWindowBounds( screen_util::GetDisplayWorkAreaBoundsInParent(window), display::Screen::GetScreen()->GetDisplayNearestWindow(window), window, - type, kDefaultSnapRatio); + type, snap_ratio); +} + +gfx::Rect GetDefaultSnappedWindowBoundsInParent(aura::Window* window, + SnapViewType type) { + return GetSnappedWindowBoundsInParent(window, type, kDefaultPositionRatio); } gfx::Rect GetSnappedWindowBounds(const gfx::Rect& work_area,
diff --git a/ash/wm/window_positioning_utils.h b/ash/wm/window_positioning_utils.h index 171127b..5ddb491 100644 --- a/ash/wm/window_positioning_utils.h +++ b/ash/wm/window_positioning_utils.h
@@ -55,8 +55,14 @@ const gfx::Rect& visible_area, gfx::Rect* bounds); -// Returns the bounds of a snapped window for a given snap |type| in clamshell -// mode, with default snapped ratio |kDefaultSnapRatio|, in parent coordinates. +// Returns the bounds of a snapped window for a given snap |type| and +// |snap_ratio| in clamshell mode. +ASH_EXPORT gfx::Rect GetSnappedWindowBoundsInParent(aura::Window* window, + SnapViewType type, + float snap_ratio); + +// Returns the bounds of a snapped window with default snapped ratio +// |kDefaultSnapRatio|, in parent coordinates. ASH_EXPORT gfx::Rect GetDefaultSnappedWindowBoundsInParent(aura::Window* window, SnapViewType type);
diff --git a/ash/wm/window_state.h b/ash/wm/window_state.h index adf8efb..c194c62 100644 --- a/ash/wm/window_state.h +++ b/ash/wm/window_state.h
@@ -43,6 +43,11 @@ class WindowStateObserver; class WMEvent; +// TODO(crbug.com/1323394): Consider moving to a WindowState constants file. +constexpr float kOneThirdPositionRatio = 0.33f; +constexpr float kDefaultPositionRatio = 0.5f; +constexpr float kTwoThirdPositionRatio = 0.67f; + // WindowState manages and defines ash specific window state and // behavior. Ash specific per-window state (such as ones that controls // window manager behavior) and ash specific window behavior (such as
diff --git a/ash/wm/wm_event.h b/ash/wm/wm_event.h index 636fd2b..fa704d4b 100644 --- a/ash/wm/wm_event.h +++ b/ash/wm/wm_event.h
@@ -203,8 +203,8 @@ class ASH_EXPORT WindowSnapWMEvent : public WMEvent { public: enum class SnapRatio { - kOneThirdSnapRatio, kDefaultSnapRatio, + kOneThirdSnapRatio, kTwoThirdSnapRatio };
diff --git a/ash/wm/workspace/workspace_window_resizer.cc b/ash/wm/workspace/workspace_window_resizer.cc index d8bc1e81..f3870de1e 100644 --- a/ash/wm/workspace/workspace_window_resizer.cc +++ b/ash/wm/workspace/workspace_window_resizer.cc
@@ -886,7 +886,6 @@ // TODO(oshima): Add event source type to WMEvent and move // metrics recording inside WindowState::OnWMEvent. WMEventType type; - // bool is_snap_event = false; switch (snap_type_) { case SnapType::kPrimary: { window_state()->set_snap_action_source(
diff --git a/base/files/file_util.h b/base/files/file_util.h index d4a3d0d..79c46ab 100644 --- a/base/files/file_util.h +++ b/base/files/file_util.h
@@ -372,7 +372,8 @@ // Creates a directory, as well as creating any parent directories, if they // don't exist. Returns 'true' on successful creation, or if the directory -// already exists. The directory is only readable by the current user. +// already exists. On most systems, the created directories are only readable by +// the current user. But on ChromeOS, they are also world-traversable. // Returns true on success, leaving *error unchanged. // Returns false on failure and sets *error appropriately, if it is non-NULL. BASE_EXPORT bool CreateDirectoryAndGetError(const FilePath& full_path,
diff --git a/base/files/file_util_posix.cc b/base/files/file_util_posix.cc index 7c44e03..d13cd46 100644 --- a/base/files/file_util_posix.cc +++ b/base/files/file_util_posix.cc
@@ -715,7 +715,19 @@ for (const FilePath& subpath : base::Reversed(subpaths)) { if (DirectoryExists(subpath)) continue; - if (mkdir(subpath.value().c_str(), 0700) == 0) + +#if BUILDFLAG(IS_CHROMEOS) + // On ChromeOS, create directories that are traversable by group and other + // (rwx--x--x). This is consistent with the creation of files with mode + // (rw-r--r--) on ChromeOS. See also File::DoInitialize() in + // base/files/file_posix.cc and DoCopyDirectory() in + // base/files/file_util_posix.cc. + static constexpr mode_t kMode = S_IRWXU | S_IXGRP | S_IXOTH; // rwx --x --x +#else + static constexpr mode_t kMode = S_IRWXU; // rwx --- --- +#endif + + if (mkdir(subpath.value().c_str(), kMode) == 0) continue; // Mkdir failed, but it might have failed with EEXIST, or some other error // due to the directory appearing out of thin air. This can occur if
diff --git a/base/profiler/win32_stack_frame_unwinder_unittest.cc b/base/profiler/win32_stack_frame_unwinder_unittest.cc index 0bdc1e6..328ce550 100644 --- a/base/profiler/win32_stack_frame_unwinder_unittest.cc +++ b/base/profiler/win32_stack_frame_unwinder_unittest.cc
@@ -47,7 +47,7 @@ DWORD64 expected_program_counter_; DWORD64 next_image_base_; DWORD64 expected_image_base_; - // TODO(crbug.com/1298696): foo_unittests breaks with MTECheckedPtr + // TODO(crbug.com/1298696): base_unittests breaks with MTECheckedPtr // enabled. Triage. // // This is probably because of kInvalidRuntimeFunction == (uintptr_t) -1.
diff --git a/base/synchronization/waitable_event_watcher.h b/base/synchronization/waitable_event_watcher.h index 45e4e02..2c6c8b1 100644 --- a/base/synchronization/waitable_event_watcher.h +++ b/base/synchronization/waitable_event_watcher.h
@@ -117,7 +117,7 @@ win::ObjectWatcher watcher_; EventCallback callback_; - // TODO(crbug.com/1298696): foo_unittests breaks with MTECheckedPtr + // TODO(crbug.com/1298696): base_unittests breaks with MTECheckedPtr // enabled. Triage. raw_ptr<WaitableEvent, DegradeToNoOpWhenMTE> event_ = nullptr; #elif BUILDFLAG(IS_APPLE)
diff --git a/build/fuchsia/linux_internal.sdk.sha1 b/build/fuchsia/linux_internal.sdk.sha1 index a8ce877..0633538 100644 --- a/build/fuchsia/linux_internal.sdk.sha1 +++ b/build/fuchsia/linux_internal.sdk.sha1
@@ -1 +1 @@ -9.20220719.0.1 +9.20220719.3.1
diff --git a/chrome/VERSION b/chrome/VERSION index 2c317984..e12a2fa0 100644 --- a/chrome/VERSION +++ b/chrome/VERSION
@@ -1,4 +1,4 @@ MAJOR=105 MINOR=0 -BUILD=5191 +BUILD=5192 PATCH=0
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java index 2975b1b9..f8e25bd 100644 --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabUiFeatureUtilities.java
@@ -168,14 +168,11 @@ */ public static boolean isTabletTabGroupsEnabled(Context context) { return DeviceFormFactor.isNonMultiDisplayContextOnTablet(context) + && ChromeFeatureList.sGridTabSwitcherForTablets.isEnabled() + && ChromeFeatureList.sTabStripImprovements.isEnabled() && ChromeFeatureList.sTabGroupsForTablets.isEnabled(); } - public static boolean isTabletTabManagementImprovementsEnabled(Context context) { - return isTabletGridTabSwitcherEnabled(context) && isTabStripImprovementsEnabled(context) - && isTabletTabGroupsEnabled(context); - } - /** * Set whether the tablet grid tab switcher polish is enabled for testing. */ @@ -211,7 +208,7 @@ public static boolean isTabGroupsAndroidEnabled(Context context) { // Disable tab group for tablet. if (DeviceFormFactor.isNonMultiDisplayContextOnTablet(context)) { - return ChromeFeatureList.sTabGroupsForTablets.isEnabled(); + return isTabletTabGroupsEnabled(context); } return !DeviceClassManager.enableAccessibilityLayout(context)
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java index 99cb1828..7f08a96 100644 --- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java +++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogTest.java
@@ -37,6 +37,7 @@ import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GRID_LAYOUT_ANDROID; import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GROUPS_ANDROID; import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_GROUPS_FOR_TABLETS; +import static org.chromium.chrome.browser.flags.ChromeFeatureList.TAB_STRIP_IMPROVEMENTS; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.clickFirstCardFromTabSwitcher; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.clickFirstTabInDialog; import static org.chromium.chrome.browser.tasks.tab_management.TabUiTestHelper.clickNthTabInDialog; @@ -125,7 +126,7 @@ @CommandLineFlags.Add({ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE}) @Restriction({Restriction.RESTRICTION_TYPE_NON_LOW_END_DEVICE}) @Features.EnableFeatures({TAB_GRID_LAYOUT_ANDROID, TAB_GROUPS_ANDROID, - TAB_GROUPS_FOR_TABLETS,GRID_TAB_SWITCHER_FOR_TABLETS}) + TAB_GROUPS_FOR_TABLETS,GRID_TAB_SWITCHER_FOR_TABLETS, TAB_STRIP_IMPROVEMENTS}) public class TabGridDialogTest { // clang-format on private static final String CUSTOMIZED_TITLE1 = "wfh tips";
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java index ce3a427..8040eef 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -1791,8 +1791,9 @@ dialogVisibilitySupplier = () -> { boolean isTabSwitcherOnlyRefactorEnabled = ReturnToChromeUtil.isTabSwitcherOnlyRefactorEnabled(this); - assert (isTabSwitcherOnlyRefactorEnabled && mTabSwitcherSupplier.get() != null) - || mStartSurfaceSupplier.get() != null; + if (isTabSwitcherOnlyRefactorEnabled) { + assert mTabSwitcherSupplier.get() != null; + } // Return true if dialog from either tab switcher or tab strip is visible. ToolbarManager toolbarManager = getToolbarManager(); @@ -1802,6 +1803,8 @@ Supplier<Boolean> tabSwitcherDialogVisibilitySupplier = isTabSwitcherOnlyRefactorEnabled ? mTabSwitcherSupplier.get().getTabGridDialogVisibilitySupplier() + : mStartSurfaceSupplier == null + ? null : mStartSurfaceSupplier.get().getTabGridDialogVisibilitySupplier(); if (tabSwitcherDialogVisibilitySupplier != null) { @@ -1817,7 +1820,8 @@ mInactivityTracker = new ChromeInactivityTracker( ChromePreferenceKeys.TABBED_ACTIVITY_LAST_BACKGROUNDED_TIME_MS_PREF); TabUsageTracker.initialize(this.getLifecycleDispatcher(), tabModelSelector); - UndoRefocusHelper.initialize(tabModelSelector, getLayoutManagerSupplier(), isTablet()); + UndoRefocusHelper.initialize( + this, tabModelSelector, getLayoutManagerSupplier(), isTablet()); assert getActivityTabStartupMetricsTracker() != null; boolean shouldShowOverviewPageOnStart = shouldShowOverviewPageOnStart();
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/UndoRefocusHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/UndoRefocusHelper.java index e96230c8f..0b629e82 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/UndoRefocusHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/UndoRefocusHelper.java
@@ -4,6 +4,8 @@ package org.chromium.chrome.browser; +import android.content.Context; + import androidx.annotation.VisibleForTesting; import org.chromium.base.Callback; @@ -20,6 +22,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver; import org.chromium.chrome.browser.tabmodel.TabModelUtils; +import org.chromium.ui.base.DeviceFormFactor; import java.util.HashSet; import java.util.Set; @@ -43,16 +46,20 @@ /** * This method is used to create and initialize the UndoRefocusHelper. + * @param context Application context to check form factor. * @param modelSelector TabModelSelector used to subscribe to TabModelSelectorTabModelObserver * to capture when tabs are being closed or the closure is being undone. * @param layoutManagerObservableSupplier This supplies the LayoutManager implementation to * observe the layout state when it's available. * @param isTablet Whether the current device is a tablet. */ - public static void initialize(TabModelSelector modelSelector, + public static void initialize(Context context, TabModelSelector modelSelector, ObservableSupplier<LayoutManagerImpl> layoutManagerObservableSupplier, boolean isTablet) { - if (!ChromeFeatureList.sTabStripImprovements.isEnabled()) return; + if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(context) + || !ChromeFeatureList.sTabStripImprovements.isEnabled()) { + return; + } new UndoRefocusHelper(modelSelector, layoutManagerObservableSupplier, isTablet); }
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java index 7353412..e8293692 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java
@@ -1703,7 +1703,7 @@ calculateOffsetToMakeTabVisible(mInteractingTab, true, true, true, true); mScroller.startScroll( mScrollOffset, 0, (int) fastExpandDelta, 0, time, getExpandDuration()); - } else if (isTabManagementImprovementsEnabled()) { + } else if (isTabGroupsEnabled()) { computeAndUpdateTabGroupMargins(true); } @@ -1728,7 +1728,7 @@ mRunningAnimator.start(); // 3. Clear any tab group margins if they are enabled. - if (isTabManagementImprovementsEnabled()) resetTabGroupMargins(); + if (isTabGroupsEnabled()) resetTabGroupMargins(); // 4. Request an update. mUpdateHost.requestUpdate(); @@ -1825,11 +1825,10 @@ int destIndex = TabModel.INVALID_TAB_INDEX; boolean isFirstTab = curIndex == 0; boolean towardEnd = (offset >= 0) ^ LocalizationUtils.isLayoutRtl(); - boolean tabManagementImprovementsEnabled = - TabUiFeatureUtilities.isTabletTabManagementImprovementsEnabled(mContext); - boolean isInGroup = tabManagementImprovementsEnabled + boolean tabGroupsEnabled = TabUiFeatureUtilities.isTabGroupsAndroidEnabled(mContext); + boolean isInGroup = tabGroupsEnabled && mTabGroupModelFilter.hasOtherRelatedTabs(getTabById(mInteractingTab.getId())); - boolean approachingMargin = tabManagementImprovementsEnabled && towardEnd + boolean approachingMargin = tabGroupsEnabled && towardEnd ? mInteractingTab.getTrailingMargin() > 0f : (!isFirstTab && mStripTabs[curIndex - 1].getTrailingMargin() > 0f); @@ -1872,7 +1871,7 @@ // 3.b. Re-compute tab group margins if necessary. float oldIdealX = mInteractingTab.getIdealX(); - if (tabManagementImprovementsEnabled) computeAndUpdateTabGroupMargins(false); + if (tabGroupsEnabled) computeAndUpdateTabGroupMargins(false); // 3.c. Since we just moved the tab we're dragging, adjust its offset so it stays in // the same apparent position. @@ -2216,8 +2215,8 @@ : CLOSE_BTN_VISIBILITY_THRESHOLD_END); } - private boolean isTabManagementImprovementsEnabled() { - return TabUiFeatureUtilities.isTabletTabManagementImprovementsEnabled(mContext); + private boolean isTabGroupsEnabled() { + return TabUiFeatureUtilities.isTabGroupsAndroidEnabled(mContext); } /**
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java index def290f..fc9dadde 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java
@@ -534,7 +534,7 @@ tabCreatorManager.getTabCreator(false)); mIncognitoHelper.setTabModel(mTabModelSelector.getModel(true), tabCreatorManager.getTabCreator(true)); - if (TabUiFeatureUtilities.isTabletTabManagementImprovementsEnabled(mContext)) { + if (TabUiFeatureUtilities.isTabletTabGroupsEnabled(mContext)) { TabModelFilterProvider provider = mTabModelSelector.getTabModelFilterProvider(); mNormalHelper.setTabGroupModelFilter( (TabGroupModelFilter) provider.getTabModelFilter(false));
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java index 66faee7..3ea0817 100644 --- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/TranslateCompactInfoBar.java
@@ -4,11 +4,15 @@ package org.chromium.chrome.browser.infobar; +import android.app.Activity; +import android.graphics.Rect; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLayoutChangeListener; +import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.ImageButton; import android.widget.LinearLayout; @@ -17,6 +21,7 @@ import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.NativeMethods; import org.chromium.base.metrics.RecordHistogram; +import org.chromium.base.supplier.Supplier; import org.chromium.chrome.R; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.preferences.PrefChangeRegistrar; @@ -288,16 +293,19 @@ boolean isIncognito = TranslateCompactInfoBarJni.get().isIncognito( mNativeTranslateInfoBarPtr, TranslateCompactInfoBar.this); boolean isSourceLangUnknown = mOptions.sourceLanguageCode().equals("und"); + + // TODO(jinsukkim): Get this rect info passed from RootUiCoordinator. + Supplier<Rect> appRect = this::getAppRectInWindow; switch (menuType) { case TranslateMenu.MENU_OVERFLOW: mOverflowMenuHelper = new TranslateMenuHelper(getContext(), mMenuButton, mOptions, - this, isIncognito, isSourceLangUnknown); + this, isIncognito, isSourceLangUnknown, appRect); return; case TranslateMenu.MENU_TARGET_LANGUAGE: case TranslateMenu.MENU_SOURCE_LANGUAGE: if (mLanguageMenuHelper == null) { mLanguageMenuHelper = new TranslateMenuHelper(getContext(), mMenuButton, - mOptions, this, isIncognito, isSourceLangUnknown); + mOptions, this, isIncognito, isSourceLangUnknown, appRect); } return; default: @@ -305,6 +313,25 @@ } } + // Returns {@link Rect} that represents the app client area the popup menu should fit in. + // This is necessary if PopupWindow cannot apply its internal logic that ensures the menu + // will not be clipped off the screen, which can happen if Window#FLAGS_LAYOUT_NO_LIMITS + // is set to allow the app to be drawn outside the screen. Returns {@code null} if not + // necessary. + private Rect getAppRectInWindow() { + View view = getView().getRootView().findViewById(R.id.coordinator); + if (!view.isAttachedToWindow()) return null; + WindowManager.LayoutParams attrs = ((Activity) getContext()).getWindow().getAttributes(); + if ((attrs.flags & WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) == 0) return null; + + int[] loc = new int[2]; + view.getLocationInWindow(loc); + Rect rect = new Rect(0, 0, view.getWidth(), view.getHeight()); + ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams(); + rect.offsetTo(loc[0], loc[1] - lp.topMargin); + return rect; + } + /** * Selects the tab at tabIndex without triggering onTabSelected. This avoids treating the * selection as a user interaction and prevents a potential loop where a translate state change
diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp index e7d1137..2c2c808 100644 --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp
@@ -1321,6 +1321,9 @@ <message name="IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_DESCRIPTION" desc="Description for the type of spell check that sends the text the user types to Google for spelling suggestions. It is important that it is communicated that the text the user types in the browser will be sent to Google."> Uses the same spell checker that’s used in Google search. Text you type in the browser is sent to Google. </message> + <message name="IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_SPELL_CHECK" desc="The label of the toggle that enables the spell check service."> + Check for spelling errors when you type text on web pages + </message> <if expr="not is_macosx"> <message name="IDS_SETTING_LANGUAGES_SPELL_CHECK_DISABLED_REASON" desc="Text that indicates to the user that spell check options are disabled because none of the languages they have added have spell check support."> Spell check isn’t supported for the languages you selected
diff --git a/chrome/app/settings_strings_grdp/IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_SPELL_CHECK.png.sha1 b/chrome/app/settings_strings_grdp/IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_SPELL_CHECK.png.sha1 new file mode 100644 index 0000000..445b68e --- /dev/null +++ b/chrome/app/settings_strings_grdp/IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_SPELL_CHECK.png.sha1
@@ -0,0 +1 @@ +fafc2d2ca07cf86434b8f3129ec69c1c10bc03b7 \ No newline at end of file
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn index a285009..8302d254 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn
@@ -5160,6 +5160,7 @@ "//chromeos/ash/components/dbus/attestation", "//chromeos/ash/components/dbus/attestation:attestation_proto", "//chromeos/ash/components/dbus/concierge", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/image_loader", "//chromeos/ash/components/dbus/session_manager", "//chromeos/ash/components/dbus/update_engine", @@ -5170,6 +5171,7 @@ "//chromeos/ash/components/local_search_service/public/cpp", "//chromeos/ash/components/local_search_service/public/mojom", "//chromeos/ash/components/memory", + "//chromeos/ash/components/network", "//chromeos/ash/services/assistant/public/cpp", "//chromeos/ash/services/auth_factor_config", "//chromeos/ash/services/cros_healthd/public/cpp", @@ -5181,13 +5183,11 @@ "//chromeos/crosapi/cpp:crosapi_constants", "//chromeos/crosapi/mojom", "//chromeos/dbus", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/cryptohome", "//chromeos/dbus/tpm_manager", "//chromeos/dbus/tpm_manager:tpm_manager_proto", "//chromeos/dbus/util", "//chromeos/login/login_state", - "//chromeos/network", "//chromeos/services/bluetooth_config", "//chromeos/services/bluetooth_config/public/mojom", "//chromeos/services/network_config", @@ -8189,9 +8189,9 @@ "//chrome/browser/ash", "//chrome/test:test_support_ui", "//chromeos:test_support", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/oobe_quick_start:oobe_quick_start", "//chromeos/dbus", - "//chromeos/dbus/cros_disks", "//components/login", "//components/session_manager/core", "//components/soda",
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 0d41d74..1ec8f8c 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc
@@ -487,12 +487,15 @@ const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_NewTab[] = { {"default_segment", "new-tab"}, + {"show_ui_only_after_ready", "false"}, {"ignore_segmentation_results", "true"}}; const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Share[] = { {"default_segment", "share"}, + {"show_ui_only_after_ready", "false"}, {"ignore_segmentation_results", "true"}}; const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Voice[] = { {"default_segment", "voice"}, + {"show_ui_only_after_ready", "false"}, {"ignore_segmentation_results", "true"}}; const FeatureEntry::FeatureVariation kAdaptiveButtonInTopToolbarCustomizationVariations[] = { @@ -504,6 +507,49 @@ std::size(kAdaptiveButtonCustomization_Voice), nullptr}, }; +const FeatureEntry::FeatureParam kContextualPageActionPriceTracking_Quiet[] = { + {"action_chip", "false"}, +}; +const FeatureEntry::FeatureParam + kContextualPageActionPriceTracking_ActionChip[] = { + {"action_chip", "true"}, + {"action_chip_time_ms", "3000"}, +}; +const FeatureEntry::FeatureParam + kContextualPageActionPriceTracking_ActionChip_6s[] = { + {"action_chip", "true"}, + {"action_chip_time_ms", "6000"}, +}; +const FeatureEntry::FeatureParam + kContextualPageActionPriceTracking_ActionChip_AltColor[] = { + {"action_chip", "true"}, + {"action_chip_time_ms", "3000"}, + {"action_chip_with_different_color", "true"}, +}; +const FeatureEntry::FeatureParam + kContextualPageActionPriceTracking_ActionChip_AltColor_6s[] = { + {"action_chip", "true"}, + {"action_chip_time_ms", "6000"}, + {"action_chip_with_different_color", "true"}, +}; +const FeatureEntry::FeatureVariation + kContextualPageActionPriceTrackingVariations[] = { + {"Quiet", kContextualPageActionPriceTracking_Quiet, + std::size(kContextualPageActionPriceTracking_Quiet), nullptr}, + {"Action Chip", kContextualPageActionPriceTracking_ActionChip, + std::size(kContextualPageActionPriceTracking_ActionChip), nullptr}, + {"Action Chip - 6s", kContextualPageActionPriceTracking_ActionChip_6s, + std::size(kContextualPageActionPriceTracking_ActionChip_6s), nullptr}, + {"Action Chip - Alternative Color", + kContextualPageActionPriceTracking_ActionChip_AltColor, + std::size(kContextualPageActionPriceTracking_ActionChip_AltColor), + nullptr}, + {"Action Chip - Alternative Color - 6s", + kContextualPageActionPriceTracking_ActionChip_AltColor_6s, + std::size(kContextualPageActionPriceTracking_ActionChip_AltColor_6s), + nullptr}, +}; + const FeatureEntry::FeatureParam kOmniboxRemoveSuggestionHeaderChevron_AllowCollapse[] = { {"allow_group_collapsed_state", "true"}}; @@ -4018,12 +4064,18 @@ {"android-media-picker", flag_descriptions::kAndroidMediaPickerSupportName, flag_descriptions::kAndroidMediaPickerSupportDescription, kOsAndroid, FEATURE_VALUE_TYPE(photo_picker::features::kAndroidMediaPickerSupport)}, + {"contextual-page-actions", flag_descriptions::kContextualPageActionsName, + flag_descriptions::kContextualPageActionsDescription, kOsAndroid, + FEATURE_VALUE_TYPE( + segmentation_platform::features::kContextualPageActions)}, {"contextual-page-actions-with-price-tracking", flag_descriptions::kContextualPageActionsWithPriceTrackingName, flag_descriptions::kContextualPageActionsWithPriceTrackingDescription, kOsAndroid, - FEATURE_VALUE_TYPE( - segmentation_platform::features::kContextualPageActionPriceTracking)}, + FEATURE_WITH_PARAMS_VALUE_TYPE( + segmentation_platform::features::kContextualPageActionPriceTracking, + kContextualPageActionPriceTrackingVariations, + "ContextualPageActionPriceTracking")}, {"reader-mode-heuristics", flag_descriptions::kReaderModeHeuristicsName, flag_descriptions::kReaderModeHeuristicsDescription, kOsAndroid, MULTI_VALUE_TYPE(kReaderModeHeuristicsChoices)},
diff --git a/chrome/browser/apps/app_service/app_icon/app_icon_source.cc b/chrome/browser/apps/app_service/app_icon/app_icon_source.cc index c0012c0..9e02b1fd 100644 --- a/chrome/browser/apps/app_service/app_icon/app_icon_source.cc +++ b/chrome/browser/apps/app_service/app_icon/app_icon_source.cc
@@ -102,7 +102,7 @@ base::BindOnce(&RunCallback, std::move(callback))); } -std::string AppIconSource::GetMimeType(const std::string&) { +std::string AppIconSource::GetMimeType(const GURL&) { // We need to explicitly return a mime type, otherwise if the user tries to // drag the image they get no extension. return "image/png";
diff --git a/chrome/browser/apps/app_service/app_icon/app_icon_source.h b/chrome/browser/apps/app_service/app_icon/app_icon_source.h index 98e80e9..5138f66 100644 --- a/chrome/browser/apps/app_service/app_icon/app_icon_source.h +++ b/chrome/browser/apps/app_service/app_icon/app_icon_source.h
@@ -46,7 +46,7 @@ const GURL& url, const content::WebContents::Getter& wc_getter, content::URLDataSource::GotDataCallback callback) override; - std::string GetMimeType(const std::string&) override; + std::string GetMimeType(const GURL&) override; bool AllowCaching() override; bool ShouldReplaceExistingSource() override;
diff --git a/chrome/browser/apps/app_service/metrics/app_platform_metrics.cc b/chrome/browser/apps/app_service/metrics/app_platform_metrics.cc index 190fce1b..32afd2c 100644 --- a/chrome/browser/apps/app_service/metrics/app_platform_metrics.cc +++ b/chrome/browser/apps/app_service/metrics/app_platform_metrics.cc
@@ -23,6 +23,7 @@ #include "components/app_constants/constants.h" #include "components/prefs/pref_service.h" #include "components/prefs/scoped_user_pref_update.h" +#include "components/services/app_service/public/cpp/app_launch_util.h" #include "components/services/app_service/public/cpp/app_update.h" #include "components/services/app_service/public/cpp/types_util.h" #include "components/ukm/app_source_url_recorder.h" @@ -403,6 +404,11 @@ OnTenMinutes(); RecordAppsUsageTime(); + + // Notify registered observers. + for (auto& observer : observers_) { + observer.OnAppPlatformMetricsDestroyed(); + } } // static @@ -654,6 +660,11 @@ .SetUserDeviceMatrix(GetUserTypeByDeviceTypeMetrics()) .Record(ukm::UkmRecorder::Get()); RemoveSourceId(source_id); + + // Also notify registered observers. + for (auto& observer : observers_) { + observer.OnAppLaunched(app_id, app_type, launch_source); + } } void AppPlatformMetrics::RecordAppUninstallUkm( @@ -674,6 +685,19 @@ .SetUserDeviceMatrix(user_type_by_device_type_) .Record(ukm::UkmRecorder::Get()); RemoveSourceId(source_id); + + // Also notify registered observers. + for (auto& observer : observers_) { + observer.OnAppUninstalled(app_id, app_type, uninstall_source); + } +} + +void AppPlatformMetrics::AddObserver(Observer* observer) { + observers_.AddObserver(observer); +} + +void AppPlatformMetrics::RemoveObserver(Observer* observer) { + observers_.RemoveObserver(observer); } void AppPlatformMetrics::OnAppTypeInitialized(AppType app_type) { @@ -1116,6 +1140,13 @@ .SetUserDeviceMatrix(user_type_by_device_type_) .Record(ukm::UkmRecorder::Get()); RemoveSourceId(source_id); + + // Also notify registered observers. + for (auto& observer : observers_) { + observer.OnAppInstalled(update.AppId(), update.AppType(), + update.InstallSource(), update.InstallReason(), + install_time); + } } void AppPlatformMetrics::UpdateUsageTime( @@ -1143,6 +1174,13 @@ usage_time_update->GetDict().clear(); for (auto it : usage_time_per_two_hours_) { usage_time_update->SetPath(it.first.ToString(), it.second.ConvertToValue()); + + // Also notify registered observers. + for (auto& observer : observers_) { + observer.OnAppUsage(it.second.app_id, + GetAppType(profile_, it.second.app_id), + it.second.running_time); + } } }
diff --git a/chrome/browser/apps/app_service/metrics/app_platform_metrics.h b/chrome/browser/apps/app_service/metrics/app_platform_metrics.h index c4e1944..59ff745 100644 --- a/chrome/browser/apps/app_service/metrics/app_platform_metrics.h +++ b/chrome/browser/apps/app_service/metrics/app_platform_metrics.h
@@ -9,6 +9,8 @@ #include <set> #include <string> +#include "base/observer_list.h" +#include "base/observer_list_types.h" #include "base/time/time.h" #include "base/unguessable_token.h" #include "chrome/browser/apps/app_service/metrics/app_platform_metrics_utils.h" @@ -66,6 +68,43 @@ class AppPlatformMetrics : public apps::AppRegistryCache::Observer, public apps::InstanceRegistry::Observer { public: + // Observer that is notified on certain app related events like install, + // launch, uninstall, etc. + class Observer : public base::CheckedObserver { + public: + Observer() = default; + Observer(const Observer&) = delete; + Observer& operator=(const Observer&) = delete; + ~Observer() override = default; + + // Invoked when app install metrics are being reported. + virtual void OnAppInstalled(const std::string& app_id, + AppType app_type, + InstallSource app_install_source, + InstallReason app_install_reason, + InstallTime app_install_time) {} + + // Invoked when app launch metrics are being reported. + virtual void OnAppLaunched(const std::string& app_id, + AppType app_type, + apps::LaunchSource launch_source) {} + + // Invoked when app uninstall metrics are being reported. + virtual void OnAppUninstalled( + const std::string& app_id, + AppType app_type, + apps::mojom::UninstallSource app_uninstall_source) {} + + // Invoked when app usage metrics are being recorded (every 5 mins). + virtual void OnAppUsage(const std::string& app_id, + AppType app_type, + base::TimeDelta running_time) {} + + // Invoked when the `AppPlatformMetrics` component (being observed) is being + // destroyed. + virtual void OnAppPlatformMetricsDestroyed() {} + }; + explicit AppPlatformMetrics(Profile* profile, apps::AppRegistryCache& app_registry_cache, InstanceRegistry& instance_registry); @@ -135,6 +174,10 @@ const std::string& app_id, apps::mojom::UninstallSource uninstall_source); + void AddObserver(Observer* observer); + + void RemoveObserver(Observer* observer); + private: struct RunningStartTime { base::TimeTicks start_time; @@ -267,6 +310,8 @@ // The app usage time loaded from the user pref during the init phase. std::vector<std::unique_ptr<UsageTime>> usage_times_from_pref_; + + base::ObserverList<Observer> observers_; }; } // namespace apps
diff --git a/chrome/browser/apps/app_service/metrics/app_platform_metrics_service_unittest.cc b/chrome/browser/apps/app_service/metrics/app_platform_metrics_service_unittest.cc index 85716ab..ccd99360 100644 --- a/chrome/browser/apps/app_service/metrics/app_platform_metrics_service_unittest.cc +++ b/chrome/browser/apps/app_service/metrics/app_platform_metrics_service_unittest.cc
@@ -18,6 +18,7 @@ #include "base/test/scoped_feature_list.h" #include "base/test/task_environment.h" #include "base/time/time.h" +#include "base/unguessable_token.h" #include "chrome/browser/apps/app_service/app_service_proxy.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/extension_apps_utils.h" @@ -76,6 +77,50 @@ static_cast<apps::InstanceState>(apps::InstanceState::kStarted | apps::InstanceState::kRunning); +// Mock observer that observes app platform metrics event callbacks for testing +// purposes. +class MockAppPlatformMetricsObserver : public AppPlatformMetrics::Observer { + public: + MockAppPlatformMetricsObserver() = default; + MockAppPlatformMetricsObserver(const MockAppPlatformMetricsObserver&) = + delete; + MockAppPlatformMetricsObserver& operator=( + const MockAppPlatformMetricsObserver&) = delete; + ~MockAppPlatformMetricsObserver() override = default; + + MOCK_METHOD(void, + OnAppInstalled, + (const std::string& app_id, + AppType app_type, + InstallSource app_install_source, + InstallReason app_install_reason, + InstallTime app_install_time), + (override)); + + MOCK_METHOD(void, + OnAppLaunched, + (const std::string& app_id, + AppType app_type, + apps::LaunchSource launch_source), + (override)); + + MOCK_METHOD(void, + OnAppUninstalled, + (const std::string& app_id, + AppType app_type, + apps::mojom::UninstallSource app_uninstall_source), + (override)); + + MOCK_METHOD(void, + OnAppUsage, + (const std::string& app_id, + AppType app_type, + base::TimeDelta running_time), + (override)); + + MOCK_METHOD(void, OnAppPlatformMetricsDestroyed, (), (override)); +}; + void SetScreenOff(bool is_screen_off) { power_manager::ScreenIdleState screen_idle_state; screen_idle_state.set_off(is_screen_off); @@ -2715,4 +2760,130 @@ AppPlatformInputMetricsTest, testing::Bool() /* IsLacrosPrimary */); +// Tests for app platform metrics observers. +class AppPlatformMetricsObserverTest : public AppPlatformMetricsServiceTest { + protected: + void SetUp() override { + AppPlatformMetricsServiceTest::SetUp(); + + // We transfer ownership of the unique_ptr for the app platform metrics + // service in some test scenarios. Therefore, we save a copy of the raw + // pointer so it can be used during teardown. + app_platform_metrics_service_ = app_platform_metrics_service(); + app_platform_metrics_service_->AppPlatformMetrics()->AddObserver( + &observer_); + } + + void TearDown() override { + // App platform metrics component has not been destructed yet, so we + // unregister the observer to reduce noise (observer is destructed before + // the component is). + app_platform_metrics_service_->AppPlatformMetrics()->RemoveObserver( + &observer_); + AppPlatformMetricsServiceTest::TearDown(); + } + + MockAppPlatformMetricsObserver observer_; + raw_ptr<AppPlatformMetricsService> app_platform_metrics_service_; +}; + +TEST_P(AppPlatformMetricsObserverTest, ShouldNotifyObserverOnAppInstalled) { + const std::string app_id(borealis::FakeAppId("borealis-fake")); + EXPECT_CALL( + observer_, + OnAppInstalled(app_id, AppType::kBorealis, InstallSource::kUnknown, + InstallReason::kUser, InstallTime::kRunning)) + .Times(1); + InstallOneApp(app_id, AppType::kBorealis, + /*publisher_id=*/"", Readiness::kReady, InstallSource::kUnknown, + /*is_platform_app=*/false, WindowMode::kBrowser); +} + +TEST_P(AppPlatformMetricsObserverTest, ShouldNotifyObserverOnAppLaunch) { + // Launch a pre-installed app and verify the observer is notified. + const std::string& app_id = "a"; + EXPECT_CALL(observer_, OnAppLaunched(app_id, AppType::kArc, + apps::LaunchSource::kFromChromeInternal)) + .Times(1); + + auto* const proxy = apps::AppServiceProxyFactory::GetForProfile(profile()); + proxy->SetAppPlatformMetricsServiceForTesting(GetAppPlatformMetricsService()); + proxy->Launch(app_id, ui::EF_NONE, + apps::mojom::LaunchSource::kFromChromeInternal, nullptr); + task_environment_.RunUntilIdle(); +} + +TEST_P(AppPlatformMetricsObserverTest, ShouldNotifyObserverOnAppUninstall) { + // Uninstall a pre-installed app and verify the observer is notified. + const std::string& app_id = "a"; + EXPECT_CALL(observer_, + OnAppUninstalled(app_id, AppType::kArc, + apps::mojom::UninstallSource::kAppList)) + .Times(1); + + auto* const proxy = AppServiceProxyFactory::GetForProfile(profile()); + proxy->SetAppPlatformMetricsServiceForTesting(GetAppPlatformMetricsService()); + proxy->UninstallSilently(app_id, apps::mojom::UninstallSource::kAppList); + task_environment_.RunUntilIdle(); +} + +TEST_P(AppPlatformMetricsObserverTest, ShouldNotifyObserverOnAppUsage) { + // Create a new window for the app. + auto window = std::make_unique<aura::Window>(nullptr); + window->Init(ui::LAYER_NOT_DRAWN); + + // Set the window active state and verify the observer is notified + // after a certain period. + const std::string& app_id = "a"; + ModifyInstance(base::UnguessableToken::Create(), app_id, window.get(), + kActiveInstanceState); + task_environment_.FastForwardBy(base::Minutes(2)); + + // Set app inactive. + ModifyInstance(app_id, window.get(), kInactiveInstanceState); + EXPECT_CALL(observer_, OnAppUsage(app_id, AppType::kArc, base::Minutes(2))) + .Times(1); + + // Usage metrics recorded every 5 minutes, so we fast forward. + task_environment_.FastForwardBy(base::Minutes(3)); +} + +TEST_P(AppPlatformMetricsObserverTest, ShouldNotNotifyUnregisteredObservers) { + auto* const proxy = AppServiceProxyFactory::GetForProfile(profile()); + proxy->SetAppPlatformMetricsServiceForTesting(GetAppPlatformMetricsService()); + proxy->AppPlatformMetrics()->RemoveObserver(&observer_); + + // Uninstall a pre-installed app and verify the unregistered observer + // is not notified. + const std::string& app_id = "a"; + EXPECT_CALL(observer_, + OnAppUninstalled(app_id, AppType::kArc, + apps::mojom::UninstallSource::kAppList)) + .Times(0); + proxy->UninstallSilently(app_id, apps::mojom::UninstallSource::kAppList); + task_environment_.RunUntilIdle(); +} + +TEST_P(AppPlatformMetricsObserverTest, ShouldNotifyObserverOnDestruction) { + // Create a new instance of `AppPlatformMetricsService` here so we can + // test destruction lifecycle without affecting pre-existing test teardown + // fixtures. + auto app_platform_metrics_service = + std::make_unique<AppPlatformMetricsService>(profile()); + app_platform_metrics_service->Start( + apps::AppServiceProxyFactory::GetForProfile(profile()) + ->AppRegistryCache(), + apps::AppServiceProxyFactory::GetForProfile(profile()) + ->InstanceRegistry()); + app_platform_metrics_service->AppPlatformMetrics()->AddObserver(&observer_); + + EXPECT_CALL(observer_, OnAppPlatformMetricsDestroyed()).Times(1); + app_platform_metrics_service.reset(); + task_environment_.RunUntilIdle(); +} + +INSTANTIATE_TEST_SUITE_P(All, + AppPlatformMetricsObserverTest, + testing::Bool() /* IsLacrosPrimary */); + } // namespace apps
diff --git a/chrome/browser/apps/app_service/publishers/web_apps_crosapi_browsertest.cc b/chrome/browser/apps/app_service/publishers/web_apps_crosapi_browsertest.cc index 23105ee..73bbc698 100644 --- a/chrome/browser/apps/app_service/publishers/web_apps_crosapi_browsertest.cc +++ b/chrome/browser/apps/app_service/publishers/web_apps_crosapi_browsertest.cc
@@ -81,7 +81,7 @@ base::BindLambdaForTesting( [&](std::unique_ptr<ui::SimpleMenuModel> model) { items.reserve(model->GetItemCount()); - for (int i = 0; i < model->GetItemCount(); ++i) { + for (size_t i = 0; i < model->GetItemCount(); ++i) { items.push_back(base::UTF16ToUTF8(model->GetLabelAt(i))); } @@ -91,7 +91,7 @@ return items; } -void SelectContextMenuForApp(const std::string& app_id, int index) { +void SelectContextMenuForApp(const std::string& app_id, size_t index) { base::RunLoop run_loop; ash::ShelfItemDelegate* delegate = ash::ShelfModel::Get()->GetShelfItemDelegate(ash::ShelfID(app_id)); @@ -164,10 +164,10 @@ return; } - const int kNewWindowIndex = 0; - const int kPinIndex = 1; - const int kUnpinIndex = 1; - const int kCloseIndex = 2; + const size_t kNewWindowIndex = 0; + const size_t kPinIndex = 1; + const size_t kUnpinIndex = 1; + const size_t kCloseIndex = 2; const web_app::AppId app_id = InstallWebApp("https://example.org/", apps::WindowMode::kBrowser); @@ -232,8 +232,8 @@ return; } - const int kPinIndex = 1; - const int kUninstallIndex = 3; + const size_t kPinIndex = 1; + const size_t kUninstallIndex = 3; const web_app::AppId app_id = InstallWebApp("https://example.org/", apps::WindowMode::kBrowser);
diff --git a/chrome/browser/apps/platform_apps/app_browsertest.cc b/chrome/browser/apps/platform_apps/app_browsertest.cc index 6ad44e4..62e392f 100644 --- a/chrome/browser/apps/platform_apps/app_browsertest.cc +++ b/chrome/browser/apps/platform_apps/app_browsertest.cc
@@ -101,7 +101,7 @@ : RenderViewContextMenu(render_frame_host, params) {} bool HasCommandWithId(int command_id) { - return menu_model_.GetIndexOfCommandId(command_id) != -1; + return menu_model_.GetIndexOfCommandId(command_id).has_value(); } void Show() override {}
diff --git a/chrome/browser/ash/BUILD.gn b/chrome/browser/ash/BUILD.gn index 64a66b4..cce97c9 100644 --- a/chrome/browser/ash/BUILD.gn +++ b/chrome/browser/ash/BUILD.gn
@@ -1578,6 +1578,7 @@ "//chromeos/ash/components/dbus/cicerone:cicerone_proto", "//chromeos/ash/components/dbus/concierge", "//chromeos/ash/components/dbus/concierge:concierge_proto", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/fusebox:proto", "//chromeos/ash/components/dbus/gnubby", "//chromeos/ash/components/dbus/image_burner", @@ -1596,6 +1597,7 @@ "//chromeos/ash/components/dbus/userdataauth:userdataauth_proto", "//chromeos/ash/components/feature_usage", "//chromeos/ash/components/memory", + "//chromeos/ash/components/network", "//chromeos/ash/components/network/portal_detector", "//chromeos/ash/services/cros_healthd/public/cpp", "//chromeos/ash/services/cros_healthd/public/mojom", @@ -1604,7 +1606,6 @@ "//chromeos/crosapi/mojom", "//chromeos/dbus/common", "//chromeos/dbus/constants", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/cryptohome:cryptohome_proto", "//chromeos/dbus/debug_daemon", "//chromeos/dbus/dlcservice", @@ -1615,7 +1616,6 @@ "//chromeos/dbus/tpm_manager:tpm_manager_proto", "//chromeos/login/login_state", "//chromeos/metrics", - "//chromeos/network", "//chromeos/services/machine_learning/public/mojom", "//chromeos/services/network_config/public/mojom", "//chromeos/services/network_health/public/mojom",
diff --git a/chrome/browser/ash/app_restore/arc_ghost_window_delegate.cc b/chrome/browser/ash/app_restore/arc_ghost_window_delegate.cc index cf9e043c..c6cb5d64 100644 --- a/chrome/browser/ash/app_restore/arc_ghost_window_delegate.cc +++ b/chrome/browser/ash/app_restore/arc_ghost_window_delegate.cc
@@ -17,7 +17,6 @@ ArcGhostWindowDelegate::ArcGhostWindowDelegate( exo::ClientControlledShellSurface* shell_surface, - ArcWindowHandler* handler, int window_id, int64_t display_id, const gfx::Rect& bounds, @@ -26,12 +25,10 @@ bounds_(gfx::Rect(bounds)), pending_close_(false), window_state_(window_state), - shell_surface_(shell_surface), - arc_handler_(handler) { + shell_surface_(shell_surface) { DCHECK(shell_surface); - DCHECK(handler); - observation_.Observe(handler); + observation_.Observe(ArcWindowHandler::Get()); SetDisplayId(display_id); } ArcGhostWindowDelegate::~ArcGhostWindowDelegate() = default; @@ -162,7 +159,7 @@ } void ArcGhostWindowDelegate::UpdateWindowInfoToArc() { - arc_handler_->OnWindowInfoUpdated( + ArcWindowHandler::Get()->OnWindowInfoUpdated( window_id_, pending_close_ ? kNullWindowState : (int)window_state_, display_id_, gfx::ScaleToRoundedRect(bounds_, scale_factor_)); }
diff --git a/chrome/browser/ash/app_restore/arc_ghost_window_delegate.h b/chrome/browser/ash/app_restore/arc_ghost_window_delegate.h index 268d250..ce3c9d0 100644 --- a/chrome/browser/ash/app_restore/arc_ghost_window_delegate.h +++ b/chrome/browser/ash/app_restore/arc_ghost_window_delegate.h
@@ -21,7 +21,6 @@ public ArcWindowHandler::Observer { public: ArcGhostWindowDelegate(exo::ClientControlledShellSurface* shell_surface, - ArcWindowHandler* handler, int window_id, int64_t display_id, const gfx::Rect& bounds, @@ -64,7 +63,6 @@ chromeos::WindowStateType window_state_; exo::ClientControlledShellSurface* shell_surface_; - ArcWindowHandler* arc_handler_; base::ScopedObservation<ArcWindowHandler, ArcWindowHandler::Observer> observation_{this}; };
diff --git a/chrome/browser/ash/app_restore/arc_ghost_window_shell_surface.cc b/chrome/browser/ash/app_restore/arc_ghost_window_shell_surface.cc index 31f9227b..c28c031 100644 --- a/chrome/browser/ash/app_restore/arc_ghost_window_shell_surface.cc +++ b/chrome/browser/ash/app_restore/arc_ghost_window_shell_surface.cc
@@ -73,7 +73,6 @@ // static std::unique_ptr<ArcGhostWindowShellSurface> ArcGhostWindowShellSurface::Create( - ArcWindowHandler* window_handler, const std::string& app_id, int window_id, const gfx::Rect& bounds, @@ -119,8 +118,8 @@ // TODO(sstan): Add set_surface_destroyed_callback. shell_surface->set_delegate(std::make_unique<ArcGhostWindowDelegate>( - shell_surface.get(), window_handler, window_id, display_id_value, - local_bounds, window_state.value_or(chromeos::WindowStateType::kDefault))); + shell_surface.get(), window_id, display_id_value, local_bounds, + window_state.value_or(chromeos::WindowStateType::kDefault))); shell_surface->set_close_callback(std::move(close_callback)); shell_surface->SetAppId(app_id);
diff --git a/chrome/browser/ash/app_restore/arc_ghost_window_shell_surface.h b/chrome/browser/ash/app_restore/arc_ghost_window_shell_surface.h index accfe4d..a90afffd 100644 --- a/chrome/browser/ash/app_restore/arc_ghost_window_shell_surface.h +++ b/chrome/browser/ash/app_restore/arc_ghost_window_shell_surface.h
@@ -17,8 +17,6 @@ namespace ash { namespace full_restore { -class ArcWindowHandler; - // Explicitly identifies ARC ghost surface. extern const aura::WindowProperty<bool>* const kArcGhostSurface; @@ -32,7 +30,6 @@ ~ArcGhostWindowShellSurface() override; static std::unique_ptr<ArcGhostWindowShellSurface> Create( - ArcWindowHandler* window_handler, const std::string& app_id, int window_id, const gfx::Rect& bounds,
diff --git a/chrome/browser/ash/app_restore/arc_window_handler.cc b/chrome/browser/ash/app_restore/arc_window_handler.cc index b28eb96e..ace54b0 100644 --- a/chrome/browser/ash/app_restore/arc_window_handler.cc +++ b/chrome/browser/ash/app_restore/arc_window_handler.cc
@@ -18,18 +18,21 @@ namespace ash { namespace full_restore { -ArcWindowHandler::WindowSessionResolver::WindowSessionResolver( - ArcWindowHandler* handler) - : handler_(handler) {} +namespace { + +ArcWindowHandler* g_instance = nullptr; + +} // namespace void ArcWindowHandler::WindowSessionResolver::PopulateProperties( const Params& params, ui::PropertyHandler& out_properties_container) { if (params.window_session_id <= 0) return; + auto* handler = ArcWindowHandler::Get(); auto it = - handler_->session_id_to_shell_surface_.find(params.window_session_id); - if (it != handler_->session_id_to_shell_surface_.end()) { + handler->session_id_to_shell_surface_.find(params.window_session_id); + if (it != handler->session_id_to_shell_surface_.end()) { // Reuse the ghost window instance for real ARC app window. if (it->second->HasOverlay()) it->second->RemoveOverlay(); @@ -40,8 +43,8 @@ } SetShellClientControlledShellSurface(&out_properties_container, it->second.release()); - handler_->session_id_to_shell_surface_.erase(it); - handler_->ghost_window_pop_count_++; + handler->session_id_to_shell_surface_.erase(it); + handler->ghost_window_pop_count_++; } else { // ARC ghost window instance. out_properties_container.SetProperty(app_restore::kRealArcTaskWindow, @@ -50,19 +53,28 @@ } ArcWindowHandler::ArcWindowHandler() { + DCHECK_EQ(nullptr, g_instance); exo::WMHelper::GetInstance()->RegisterAppPropertyResolver( - std::make_unique<WindowSessionResolver>(this)); + std::make_unique<WindowSessionResolver>()); auto* lifetime_manager = exo::WMHelper::GetInstance()->GetLifetimeManager(); if (lifetime_manager) lifetime_manager->AddObserver(this); + g_instance = this; } ArcWindowHandler::~ArcWindowHandler() { + DCHECK_EQ(this, g_instance); if (exo::WMHelper::HasInstance()) { auto* lifetime_manager = exo::WMHelper::GetInstance()->GetLifetimeManager(); if (lifetime_manager) lifetime_manager->RemoveObserver(this); } + g_instance = nullptr; +} + +// static +ArcWindowHandler* ArcWindowHandler::Get() { + return g_instance; } void ArcWindowHandler::OnDestroyed() { @@ -105,7 +117,7 @@ } auto shell_surface = ArcGhostWindowShellSurface::Create( - this, app_id, session_id, adjust_bounds, restore_data, + app_id, session_id, adjust_bounds, restore_data, base::BindRepeating(&ArcWindowHandler::CloseWindow, weak_ptr_factory_.GetWeakPtr(), session_id)); if (!shell_surface)
diff --git a/chrome/browser/ash/app_restore/arc_window_handler.h b/chrome/browser/ash/app_restore/arc_window_handler.h index e4f61ca..14788ce 100644 --- a/chrome/browser/ash/app_restore/arc_window_handler.h +++ b/chrome/browser/ash/app_restore/arc_window_handler.h
@@ -31,7 +31,7 @@ // the corresponding window session id. class WindowSessionResolver : public exo::WMHelper::AppPropertyResolver { public: - explicit WindowSessionResolver(ArcWindowHandler* handler); + WindowSessionResolver() = default; WindowSessionResolver(const WindowSessionResolver&) = delete; WindowSessionResolver& operator=(const WindowSessionResolver&) = delete; ~WindowSessionResolver() override = default; @@ -40,9 +40,6 @@ void PopulateProperties( const Params& params, ui::PropertyHandler& out_properties_container) override; - - private: - ArcWindowHandler* handler_; }; public: @@ -64,6 +61,12 @@ ArcWindowHandler& operator=(const ArcWindowHandler&) = delete; ~ArcWindowHandler() override; + // ArcWindowHandler is created and destroyed with the + // ash::AppRestore::AppRestoreArcTaskHandler. + // ArcWindowHandler::Get may be nullptr if accessed outside the expected + // lifetime. + static ArcWindowHandler* Get(); + // Returns true if the ghost window is created and launched. Otherwise, // returns false. bool LaunchArcGhostWindow(const std::string& app_id,
diff --git a/chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc b/chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc index 2991fda5..59df601b 100644 --- a/chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc +++ b/chrome/browser/ash/arc/app_shortcuts/arc_app_shortcuts_menu_builder_unittest.cc
@@ -8,7 +8,7 @@ #include <utility> #include "base/run_loop.h" -#include "base/strings/stringprintf.h" +#include "base/strings/string_number_conversions.h" #include "base/strings/utf_string_conversions.h" #include "base/test/bind.h" #include "chrome/browser/chromeos/arc/icon_decode_request.h" @@ -85,8 +85,8 @@ EXPECT_EQ(first_item_label, menu->GetLabelAt(i++)); EXPECT_EQ(ui::DOUBLE_SEPARATOR, menu->GetSeparatorTypeAt(i++)); // There is a separator between each app shortcut. - for (int shortcut_index = 0; i < menu->GetItemCount(); ++i) { - EXPECT_EQ(base::StringPrintf("ShortLabel %d", shortcut_index++), + for (size_t shortcut_index = 0; i < menu->GetItemCount(); ++i) { + EXPECT_EQ("ShortLabel " + base::NumberToString(shortcut_index++), base::UTF16ToUTF8(menu->GetLabelAt(i++))); if (i < menu->GetItemCount()) EXPECT_EQ(ui::PADDED_SEPARATOR, menu->GetSeparatorTypeAt(i));
diff --git a/chrome/browser/ash/arc/tracing/arc_app_performance_tracing_unittest.cc b/chrome/browser/ash/arc/tracing/arc_app_performance_tracing_unittest.cc index 1199561..78a9af8 100644 --- a/chrome/browser/ash/arc/tracing/arc_app_performance_tracing_unittest.cc +++ b/chrome/browser/ash/arc/tracing/arc_app_performance_tracing_unittest.cc
@@ -324,12 +324,13 @@ display::Display display = display::Screen::GetScreen()->GetDisplayNearestWindow( ash::Shell::GetPrimaryRootWindow()); + std::unique_ptr<ash::full_restore::ArcWindowHandler> ghost_window_handler = + std::make_unique<ash::full_restore::ArcWindowHandler>(); - ash::full_restore::ArcWindowHandler handler; app_restore::AppRestoreData restore_data; restore_data.display_id = display.id(); auto ghost_window = ash::full_restore::ArcGhostWindowShellSurface::Create( - &handler, "app_id" /* app_id */, 1 /* window_id */, + "app_id" /* app_id */, 1 /* window_id */, gfx::Rect(10, 10, 100, 100) /* bounds */, &restore_data, base::BindRepeating([]() {})); ASSERT_TRUE(ghost_window); @@ -354,12 +355,6 @@ // Ghost window should not trigger tracing sessions. DCHECK(!tracing_helper().GetTracingSession()); - - // ArcWindowHandler depends on WMHelper, which is supposed to be destroyed - // before handler is destroyed. It is deleted in - // ArcAppPerformanceTracingTesthelper, which happens later, so just call - // OnDestroyed() here. - handler.OnDestroyed(); } } // namespace arc
diff --git a/chrome/browser/ash/borealis/borealis_installer.h b/chrome/browser/ash/borealis/borealis_installer.h index b62b966..ef2f291 100644 --- a/chrome/browser/ash/borealis/borealis_installer.h +++ b/chrome/browser/ash/borealis/borealis_installer.h
@@ -34,7 +34,11 @@ public: virtual void OnProgressUpdated(double fraction_complete) = 0; virtual void OnStateUpdated(InstallingState new_state) = 0; - virtual void OnInstallationEnded(BorealisInstallResult result) = 0; + // Called when installation succeeds/fails, per |result|. If it fails, + // |error_description| contains a string useful for debugging/understanding + // the cause of the failure, not for end-users. + virtual void OnInstallationEnded(BorealisInstallResult result, + const std::string& error_description) = 0; virtual void OnCancelInitiated() = 0; };
diff --git a/chrome/browser/ash/borealis/borealis_installer_impl.cc b/chrome/browser/ash/borealis/borealis_installer_impl.cc index a5a4881f..b47549f4 100644 --- a/chrome/browser/ash/borealis/borealis_installer_impl.cc +++ b/chrome/browser/ash/borealis/borealis_installer_impl.cc
@@ -5,6 +5,7 @@ #include "chrome/browser/ash/borealis/borealis_installer_impl.h" #include <memory> +#include <sstream> #include "base/bind.h" #include "base/memory/weak_ptr.h" @@ -25,7 +26,6 @@ #include "chromeos/ash/components/dbus/vm_applications/apps.pb.h" #include "chromeos/dbus/dlcservice/dlcservice.pb.h" #include "components/prefs/pref_service.h" -#include "content/public/browser/browser_thread.h" #include "content/public/browser/network_service_instance.h" #include "third_party/cros_system_api/dbus/dlcservice/dbus-constants.h" @@ -42,7 +42,7 @@ class BorealisInstallerImpl::Installation : public Transition<BorealisInstallerImpl::InstallInfo, BorealisInstallerImpl::InstallInfo, - BorealisInstallResult>, + Described<BorealisInstallResult>>, public guest_os::GuestOsRegistryService::Observer { public: Installation( @@ -60,7 +60,9 @@ base::TimeTicks start_time() { return installation_start_tick_; } - void Cancel() { Fail(BorealisInstallResult::kCancelled); } + void Cancel() { + Fail({BorealisInstallResult::kCancelled, "Installation cancelled by user"}); + } private: void Start(std::unique_ptr<BorealisInstallerImpl::InstallInfo> start_instance) @@ -79,9 +81,9 @@ void OnAllowedCheckCompleted(BorealisFeatures::AllowStatus allow_status) { if (allow_status != BorealisFeatures::AllowStatus::kAllowed) { - LOG(ERROR) << "Installation of Borealis cannot be started because " - << "Borealis is not allowed: " << allow_status; - Fail(BorealisInstallResult::kBorealisNotAllowed); + std::stringstream ss; + ss << "Borealis is not allowed: " << allow_status; + Fail({BorealisInstallResult::kBorealisNotAllowed, ss.str()}); return; } SetState(InstallingState::kInstallingDlc); @@ -116,35 +118,33 @@ } // At this point, the Borealis DLC installation has failed. - BorealisInstallResult result = BorealisInstallResult::kDlcUnknownError; + Fail(DescribeDlcFailure(install_result.error)); + } - if (install_result.error == dlcservice::kErrorInternal) { - LOG(ERROR) << "Something went wrong internally with DlcService."; - result = BorealisInstallResult::kDlcInternalError; - } else if (install_result.error == dlcservice::kErrorInvalidDlc) { - LOG(ERROR) - << "Borealis DLC is not supported, need to enable Borealis DLC."; - result = BorealisInstallResult::kDlcUnsupportedError; - } else if (install_result.error == dlcservice::kErrorBusy) { - LOG(ERROR) - << "Borealis DLC is not able to be installed as dlcservice is busy."; - result = BorealisInstallResult::kDlcBusyError; - } else if (install_result.error == dlcservice::kErrorNeedReboot) { - LOG(ERROR) << "Device has pending update and needs a reboot to use " - "Borealis DLC."; - result = BorealisInstallResult::kDlcNeedRebootError; - } else if (install_result.error == dlcservice::kErrorAllocation) { - LOG(ERROR) << "Device needs to free space to use Borealis DLC."; - result = BorealisInstallResult::kDlcNeedSpaceError; - } else if (install_result.error == dlcservice::kErrorNoImageFound) { - LOG(ERROR) - << "Omaha could not provide an image, device may need to be updated."; - result = BorealisInstallResult::kDlcNeedUpdateError; - } else { - LOG(ERROR) << "Failed to install Borealis DLC: " << install_result.error; + Described<BorealisInstallResult> DescribeDlcFailure( + const std::string& error) { + if (error == dlcservice::kErrorInternal) { + return {BorealisInstallResult::kDlcInternalError, + "Something went wrong internally with DlcService"}; + } else if (error == dlcservice::kErrorInvalidDlc) { + return {BorealisInstallResult::kDlcUnsupportedError, + "Borealis DLC is not supported, need to enable Borealis DLC"}; + } else if (error == dlcservice::kErrorBusy) { + return {BorealisInstallResult::kDlcBusyError, + "Borealis DLC is not able to be installed as dlcservice is busy"}; + } else if (error == dlcservice::kErrorNeedReboot) { + return { + BorealisInstallResult::kDlcNeedRebootError, + "Device has pending update and needs a reboot to use Borealis DLC"}; + } else if (error == dlcservice::kErrorAllocation) { + return {BorealisInstallResult::kDlcNeedSpaceError, + "Device needs to free space to use Borealis DLC."}; + } else if (error == dlcservice::kErrorNoImageFound) { + return { + BorealisInstallResult::kDlcNeedUpdateError, + "Omaha could not provide an image, device may need to be updated."}; } - - Fail(result); + return {BorealisInstallResult::kDlcUnknownError, "DLC failure: " + error}; } // As part of its installation we perform a dry run of borealis. This ensures @@ -162,10 +162,11 @@ WaitForMainApp(); return; } - LOG(ERROR) << "Failed to start borealis (code " - << static_cast<int>(result.Error().error()) - << "): " << result.Error().description(); - Fail(BorealisInstallResult::kStartupFailed); + std::stringstream ss; + ss << "Failed to start borealis (code " + << static_cast<int>(result.Error().error()) + << "): " << result.Error().description(); + Fail({BorealisInstallResult::kStartupFailed, ss.str()}); } void WaitForMainApp() { @@ -213,8 +214,8 @@ return; if (!found) { install_info_.reset(); - LOG(ERROR) << "Failed to verify that the main app has been created"; - Fail(BorealisInstallResult::kMainAppNotPresent); + Fail({BorealisInstallResult::kMainAppNotPresent, + "Failed to verify that the main app has been created"}); return; } Succeed(std::move(install_info_)); @@ -332,17 +333,16 @@ void BorealisInstallerImpl::Start() { RecordBorealisInstallNumAttemptsHistogram(); if (IsProcessing()) { - LOG(ERROR) << "Installation of Borealis is already in progress."; - OnInstallComplete( - Unexpected<std::unique_ptr<InstallInfo>, BorealisInstallResult>( - BorealisInstallResult::kBorealisInstallInProgress)); + OnInstallComplete(Installation::Result::Unexpected(Installation::ErrorState{ + BorealisInstallResult::kBorealisInstallInProgress, + "Installation of Borealis is already in progress"})); return; } if (content::GetNetworkConnectionTracker()->IsOffline()) { - OnInstallComplete( - Unexpected<std::unique_ptr<InstallInfo>, BorealisInstallResult>( - BorealisInstallResult::kOffline)); + OnInstallComplete(Installation::Result::Unexpected( + Installation::ErrorState{BorealisInstallResult::kOffline, + "Can not install Borealis while offline"})); return; } @@ -463,11 +463,11 @@ } void BorealisInstallerImpl::OnInstallComplete( - Expected<std::unique_ptr<InstallInfo>, BorealisInstallResult> + Expected<std::unique_ptr<InstallInfo>, Described<BorealisInstallResult>> result_or_error) { BorealisInstallResult result = result_or_error ? BorealisInstallResult::kSuccess - : result_or_error.Error(); + : result_or_error.Error().error(); // If another installation is in progress, we don't want to reset any states // and interfere with the process. When that process completes, it will reset // these states. @@ -486,7 +486,8 @@ RecordBorealisInstallResultHistogram(result); } for (auto& observer : observers_) { - observer.OnInstallationEnded(result); + observer.OnInstallationEnded( + result, result_or_error ? "" : result_or_error.Error().description()); } }
diff --git a/chrome/browser/ash/borealis/borealis_installer_impl.h b/chrome/browser/ash/borealis/borealis_installer_impl.h index bab6bf39..ea3626d 100644 --- a/chrome/browser/ash/borealis/borealis_installer_impl.h +++ b/chrome/browser/ash/borealis/borealis_installer_impl.h
@@ -11,6 +11,7 @@ #include "base/time/time.h" #include "chrome/browser/ash/borealis/borealis_installer.h" #include "chrome/browser/ash/borealis/borealis_metrics.h" +#include "chrome/browser/ash/borealis/infra/described.h" #include "chrome/browser/ash/borealis/infra/expected.h" #include "chromeos/dbus/dlcservice/dlcservice_client.h" @@ -62,8 +63,9 @@ void UpdateProgress(double state_progress); void UpdateInstallingState(InstallingState installing_state); - void OnInstallComplete(Expected<std::unique_ptr<InstallInfo>, - BorealisInstallResult> result_or_error); + void OnInstallComplete( + Expected<std::unique_ptr<InstallInfo>, Described<BorealisInstallResult>> + result_or_error); void OnUninstallComplete( base::OnceCallback<void(BorealisUninstallResult)> on_uninstall_callback, Expected<std::unique_ptr<InstallInfo>, BorealisUninstallResult> result);
diff --git a/chrome/browser/ash/borealis/borealis_installer_unittest.cc b/chrome/browser/ash/borealis/borealis_installer_unittest.cc index 18d4b23b..4f7e091 100644 --- a/chrome/browser/ash/borealis/borealis_installer_unittest.cc +++ b/chrome/browser/ash/borealis/borealis_installer_unittest.cc
@@ -52,7 +52,8 @@ public: MOCK_METHOD1(OnProgressUpdated, void(double)); MOCK_METHOD1(OnStateUpdated, void(InstallingState)); - MOCK_METHOD1(OnInstallationEnded, void(BorealisInstallResult)); + MOCK_METHOD2(OnInstallationEnded, + void(BorealisInstallResult, const std::string&)); MOCK_METHOD0(OnCancelInitiated, void()); }; @@ -160,7 +161,8 @@ scoped_allowance_.reset(); EXPECT_CALL(*observer_, - OnInstallationEnded(BorealisInstallResult::kBorealisNotAllowed)); + OnInstallationEnded(BorealisInstallResult::kBorealisNotAllowed, + testing::Not(""))); StartAndRunToCompletion(); UpdateCurrentDlcs(); @@ -176,7 +178,8 @@ network::TestNetworkConnectionTracker::GetInstance()->SetConnectionType( network::mojom::ConnectionType::CONNECTION_NONE); - EXPECT_CALL(*observer_, OnInstallationEnded(BorealisInstallResult::kOffline)); + EXPECT_CALL(*observer_, OnInstallationEnded(BorealisInstallResult::kOffline, + testing::Not(""))); StartAndRunToCompletion(); UpdateCurrentDlcs(); @@ -188,7 +191,8 @@ TEST_F(BorealisInstallerTest, SucessfulInstallation) { PrepareSuccessfulInstallation(); - EXPECT_CALL(*observer_, OnInstallationEnded(BorealisInstallResult::kSuccess)); + EXPECT_CALL(*observer_, + OnInstallationEnded(BorealisInstallResult::kSuccess, "")); StartAndRunToCompletion(); UpdateCurrentDlcs(); @@ -206,7 +210,8 @@ // well before, to simulate when garcon actually wins the race. CreateFakeMainApp(&profile_); - EXPECT_CALL(*observer_, OnInstallationEnded(BorealisInstallResult::kSuccess)); + EXPECT_CALL(*observer_, + OnInstallationEnded(BorealisInstallResult::kSuccess, "")); StartAndRunToCompletion(); } @@ -226,8 +231,8 @@ FakeDlcserviceClient()->set_install_error(dlcservice::kErrorNone); EXPECT_CALL(*observer_, OnCancelInitiated()); - EXPECT_CALL(*observer_, - OnInstallationEnded(BorealisInstallResult::kCancelled)); + EXPECT_CALL(*observer_, OnInstallationEnded(BorealisInstallResult::kCancelled, + testing::Not(""))); installer_->Start(); installer_->Cancel(); @@ -243,10 +248,11 @@ TEST_F(BorealisInstallerTest, InstallationInProgess) { PrepareSuccessfulInstallation(); - EXPECT_CALL( - *observer_, - OnInstallationEnded(BorealisInstallResult::kBorealisInstallInProgress)); - EXPECT_CALL(*observer_, OnInstallationEnded(BorealisInstallResult::kSuccess)); + EXPECT_CALL(*observer_, OnInstallationEnded( + BorealisInstallResult::kBorealisInstallInProgress, + testing::Not(""))); + EXPECT_CALL(*observer_, + OnInstallationEnded(BorealisInstallResult::kSuccess, "")); installer_->Start(); installer_->Start(); @@ -272,7 +278,8 @@ EXPECT_FALSE( BorealisService::GetForProfile(&profile_)->Features().IsEnabled()); - EXPECT_CALL(*observer_, OnInstallationEnded(BorealisInstallResult::kSuccess)); + EXPECT_CALL(*observer_, + OnInstallationEnded(BorealisInstallResult::kSuccess, "")); installer_->Start(); task_environment_.RunUntilIdle(); @@ -287,7 +294,8 @@ TEST_F(BorealisInstallerTest, SucessfulInstallationRecordMetrics) { PrepareSuccessfulInstallation(); - EXPECT_CALL(*observer_, OnInstallationEnded(BorealisInstallResult::kSuccess)); + EXPECT_CALL(*observer_, + OnInstallationEnded(BorealisInstallResult::kSuccess, "")); StartAndRunToCompletion(); histogram_tester_.ExpectTotalCount(kBorealisInstallNumAttemptsHistogram, 1); @@ -301,7 +309,8 @@ FakeDlcserviceClient()->set_install_error(dlcservice::kErrorInternal); EXPECT_CALL(*observer_, - OnInstallationEnded(BorealisInstallResult::kDlcInternalError)); + OnInstallationEnded(BorealisInstallResult::kDlcInternalError, + testing::Not(""))); StartAndRunToCompletion(); histogram_tester_.ExpectTotalCount(kBorealisInstallNumAttemptsHistogram, 1); @@ -326,7 +335,8 @@ EXPECT_CALL(*observer_, OnStateUpdated(InstallingState::kInstallingDlc)); EXPECT_CALL(*observer_, OnStateUpdated(InstallingState::kStartingUp)); EXPECT_CALL(*observer_, - OnInstallationEnded(BorealisInstallResult::kStartupFailed)); + OnInstallationEnded(BorealisInstallResult::kStartupFailed, + testing::HasSubstr("Some Error"))); StartAndRunToCompletion(); } @@ -345,7 +355,8 @@ installer_impl_->SetMainAppTimeoutForTesting(base::Seconds(0)); EXPECT_CALL(*observer_, - OnInstallationEnded(BorealisInstallResult::kMainAppNotPresent)); + OnInstallationEnded(BorealisInstallResult::kMainAppNotPresent, + testing::Not(""))); StartAndRunToCompletion(); } @@ -358,7 +369,8 @@ EXPECT_CALL(*observer_, OnStateUpdated(InstallingState::kCheckingIfAllowed)); EXPECT_CALL(*observer_, OnStateUpdated(InstallingState::kInstallingDlc)); - EXPECT_CALL(*observer_, OnInstallationEnded(GetParam().second)); + EXPECT_CALL(*observer_, + OnInstallationEnded(GetParam().second, testing::Not(""))); StartAndRunToCompletion(); }
diff --git a/chrome/browser/ash/borealis/infra/transition.h b/chrome/browser/ash/borealis/infra/transition.h index a8fcab1..debba6d 100644 --- a/chrome/browser/ash/borealis/infra/transition.h +++ b/chrome/browser/ash/borealis/infra/transition.h
@@ -38,6 +38,12 @@ template <typename S, typename T, typename E> class Transition { public: + using InitialState = S; + + using FinalState = T; + + using ErrorState = E; + using Result = Expected<std::unique_ptr<T>, E>; using OnCompleteSignature = void(Result);
diff --git a/chrome/browser/ash/crosapi/BUILD.gn b/chrome/browser/ash/crosapi/BUILD.gn index f890097..e1d89403 100644 --- a/chrome/browser/ash/crosapi/BUILD.gn +++ b/chrome/browser/ash/crosapi/BUILD.gn
@@ -253,12 +253,14 @@ "//chrome/common", "//chrome/common:channel_info", "//chrome/common:constants", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/lorgnette_manager:lorgnette_proto", "//chromeos/ash/components/dbus/resourced", "//chromeos/ash/components/dbus/session_manager", "//chromeos/ash/components/dbus/update_engine", "//chromeos/ash/components/dbus/upstart", "//chromeos/ash/components/dbus/userdataauth:userdataauth_proto", + "//chromeos/ash/components/network", "//chromeos/components/cdm_factory_daemon:cdm_factory_daemon_browser", "//chromeos/components/quick_answers/public/cpp:prefs", "//chromeos/components/remote_apps/mojom", @@ -267,11 +269,9 @@ "//chromeos/crosapi/cpp:crosapi_constants", "//chromeos/crosapi/mojom", "//chromeos/dbus", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/power", "//chromeos/dbus/util", "//chromeos/login/login_state", - "//chromeos/network", "//chromeos/printing", "//chromeos/services/machine_learning/public/cpp", "//chromeos/services/network_config/public/cpp",
diff --git a/chrome/browser/ash/crosapi/environment_provider.cc b/chrome/browser/ash/crosapi/environment_provider.cc index 34e5c33..df1a936 100644 --- a/chrome/browser/ash/crosapi/environment_provider.cc +++ b/chrome/browser/ash/crosapi/environment_provider.cc
@@ -14,9 +14,9 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profiles_state.h" #include "chrome/browser/web_applications/preinstalled_web_app_config_utils.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/crosapi/mojom/crosapi.mojom.h" #include "chromeos/crosapi/mojom/policy_namespace.mojom.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "components/account_id/account_id.h" #include "components/account_manager_core/account.h" #include "components/policy/core/common/cloud/cloud_policy_constants.h"
diff --git a/chrome/browser/ash/crosapi/test_controller_ash.cc b/chrome/browser/ash/crosapi/test_controller_ash.cc index b34e7a1..ca038d0 100644 --- a/chrome/browser/ash/crosapi/test_controller_ash.cc +++ b/chrome/browser/ash/crosapi/test_controller_ash.cc
@@ -391,7 +391,7 @@ std::unique_ptr<ui::SimpleMenuModel> model) { std::vector<std::string> items; items.reserve(model->GetItemCount()); - for (int i = 0; i < model->GetItemCount(); ++i) { + for (size_t i = 0; i < model->GetItemCount(); ++i) { items.push_back(base::UTF16ToUTF8(model->GetLabelAt(i))); } std::move(callback).Run(std::move(items)); @@ -400,7 +400,7 @@ void TestControllerAsh::OnSelectContextMenuForShelfItem( SelectContextMenuForShelfItemCallback callback, const std::string& item_id, - uint32_t index, + size_t index, std::unique_ptr<ui::SimpleMenuModel> model) { if (index < model->GetItemCount()) { model->ActivatedAt(index, /*event_flags=*/0);
diff --git a/chrome/browser/ash/crosapi/test_controller_ash.h b/chrome/browser/ash/crosapi/test_controller_ash.h index eadf3f6..3b8de6b 100644 --- a/chrome/browser/ash/crosapi/test_controller_ash.h +++ b/chrome/browser/ash/crosapi/test_controller_ash.h
@@ -120,7 +120,7 @@ static void OnSelectContextMenuForShelfItem( SelectContextMenuForShelfItemCallback callback, const std::string& item_id, - uint32_t index, + size_t index, std::unique_ptr<ui::SimpleMenuModel> model); // Each call to EnterOverviewMode or ExitOverviewMode spawns a waiter for the
diff --git a/chrome/browser/ash/crosapi/vpn_service_ash.cc b/chrome/browser/ash/crosapi/vpn_service_ash.cc index 7109a70..0d9d227 100644 --- a/chrome/browser/ash/crosapi/vpn_service_ash.cc +++ b/chrome/browser/ash/crosapi/vpn_service_ash.cc
@@ -11,10 +11,7 @@ #include "base/callback_helpers.h" #include "base/guid.h" #include "base/memory/raw_ptr.h" -#include "base/notreached.h" -#include "base/run_loop.h" #include "base/values.h" -#include "chrome/browser/ash/crosapi/crosapi_ash.h" #include "chrome/browser/ash/profiles/profile_helper.h" #include "chrome/browser/profiles/profile_manager.h" #include "chromeos/ash/components/network/network_configuration_handler.h" @@ -26,10 +23,6 @@ #include "chromeos/dbus/shill/shill_third_party_vpn_driver_client.h" #include "chromeos/dbus/shill/shill_third_party_vpn_observer.h" #include "crypto/sha2.h" -#include "extensions/browser/extension_event_histogram_value.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "mojo/public/cpp/bindings/self_owned_receiver.h" #include "third_party/cros_system_api/dbus/shill/dbus-constants.h" namespace { @@ -574,13 +567,7 @@ const std::string& extension_id, mojo::PendingReceiver<crosapi::mojom::VpnServiceForExtension> receiver, mojo::PendingRemote<crosapi::mojom::EventObserverForExtension> observer) { - auto it = extension_id_to_service_.find(extension_id); - if (it == extension_id_to_service_.end()) { - it = extension_id_to_service_.insert( - it, {extension_id, - std::make_unique<VpnServiceForExtensionAsh>(extension_id)}); - } - const auto& service = it->second; + auto* service = GetVpnServiceForExtension(extension_id); service->BindReceiverAndObserver(std::move(receiver), std::move(observer)); } @@ -649,13 +636,7 @@ return; } - auto it = extension_id_to_service_.find(*extension_id); - if (it == extension_id_to_service_.end()) { - it = extension_id_to_service_.insert( - it, {*extension_id, - std::make_unique<VpnServiceForExtensionAsh>(*extension_id)}); - } - auto& service = it->second; + auto* service = GetVpnServiceForExtension(*extension_id); if (service->HasConfigurationForServicePath(service_path)) { return; } @@ -663,4 +644,13 @@ service_path); } +VpnServiceForExtensionAsh* VpnServiceAsh::GetVpnServiceForExtension( + const std::string& extension_id) { + auto& service = extension_id_to_service_[extension_id]; + if (!service) { + service = std::make_unique<VpnServiceForExtensionAsh>(extension_id); + } + return service.get(); +} + } // namespace crosapi
diff --git a/chrome/browser/ash/crosapi/vpn_service_ash.h b/chrome/browser/ash/crosapi/vpn_service_ash.h index d794f48..0b365bc 100644 --- a/chrome/browser/ash/crosapi/vpn_service_ash.h +++ b/chrome/browser/ash/crosapi/vpn_service_ash.h
@@ -258,6 +258,10 @@ const std::string& service_path, absl::optional<base::Value> configuration_properties); + // Always returns a valid pointer. + VpnServiceForExtensionAsh* GetVpnServiceForExtension( + const std::string& extension_id); + // Ids of enabled vpn extensions. base::flat_set<std::string> vpn_extensions_;
diff --git a/chrome/browser/ash/crostini/ansible/ansible_management_service.cc b/chrome/browser/ash/crostini/ansible/ansible_management_service.cc index be425e0..cdd20ba 100644 --- a/chrome/browser/ash/crostini/ansible/ansible_management_service.cc +++ b/chrome/browser/ash/crostini/ansible/ansible_management_service.cc
@@ -225,7 +225,12 @@ OnConfigurationFinished(container_id, false); break; case vm_tools::cicerone::ApplyAnsiblePlaybookProgressSignal::IN_PROGRESS: - // TODO(okalitova): Report Ansible playbook application progress. + for (auto& observer : observers_) { + observer.OnAnsibleSoftwareConfigurationProgress( + container_id, + std::vector<std::string>(signal.status_string().begin(), + signal.status_string().end())); + } break; default: NOTREACHED();
diff --git a/chrome/browser/ash/crostini/ansible/ansible_management_service.h b/chrome/browser/ash/crostini/ansible/ansible_management_service.h index b05400e..aa1cddd 100644 --- a/chrome/browser/ash/crostini/ansible/ansible_management_service.h +++ b/chrome/browser/ash/crostini/ansible/ansible_management_service.h
@@ -43,6 +43,9 @@ ~Observer() override = default; virtual void OnAnsibleSoftwareConfigurationStarted( const guest_os::GuestId& container_id) = 0; + virtual void OnAnsibleSoftwareConfigurationProgress( + const guest_os::GuestId& container_id, + const std::vector<std::string>& status_lines) {} virtual void OnAnsibleSoftwareConfigurationFinished( const guest_os::GuestId& container_id, bool success) = 0;
diff --git a/chrome/browser/ash/crostini/crostini_sshfs.cc b/chrome/browser/ash/crostini/crostini_sshfs.cc index 2d13d4b..c3e73e1 100644 --- a/chrome/browser/ash/crostini/crostini_sshfs.cc +++ b/chrome/browser/ash/crostini/crostini_sshfs.cc
@@ -20,7 +20,7 @@ #include "chrome/browser/ash/file_manager/path_util.h" #include "chrome/browser/ash/file_manager/volume_manager.h" #include "chrome/browser/profiles/profile.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "content/public/browser/browser_thread.h" #include "storage/browser/file_system/external_mount_points.h"
diff --git a/chrome/browser/ash/crostini/crostini_sshfs_unittest.cc b/chrome/browser/ash/crostini/crostini_sshfs_unittest.cc index 89a72e7..66206dd 100644 --- a/chrome/browser/ash/crostini/crostini_sshfs_unittest.cc +++ b/chrome/browser/ash/crostini/crostini_sshfs_unittest.cc
@@ -25,9 +25,9 @@ #include "chromeos/ash/components/dbus/cicerone/cicerone_client.h" #include "chromeos/ash/components/dbus/concierge/concierge_client.h" #include "chromeos/ash/components/dbus/concierge/fake_concierge_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/seneschal/seneschal_client.h" #include "chromeos/ash/components/dbus/vm_applications/apps.pb.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "components/keyed_service/content/browser_context_keyed_service_factory.h" #include "content/public/browser/browser_context.h"
diff --git a/chrome/browser/ash/crostini/crostini_terminal.cc b/chrome/browser/ash/crostini/crostini_terminal.cc index f659d328..42c062a 100644 --- a/chrome/browser/ash/crostini/crostini_terminal.cc +++ b/chrome/browser/ash/crostini/crostini_terminal.cc
@@ -605,7 +605,8 @@ return base::EscapeQueryParamValue(v, /*use_plus=*/true); }; std::string settings_profile_param; - if (settings_profile && !settings_profile->empty()) { + if (settings_profile && !settings_profile->empty() && + *settings_profile != kSettingsProfileDefault) { settings_profile_param = base::StrCat( {"?", kSettingsProfileUrlParam, "=", escape(*settings_profile)}); }
diff --git a/chrome/browser/ash/dbus/ash_dbus_helper.cc b/chrome/browser/ash/dbus/ash_dbus_helper.cc index 8123519..f5b295d2 100644 --- a/chrome/browser/ash/dbus/ash_dbus_helper.cc +++ b/chrome/browser/ash/dbus/ash_dbus_helper.cc
@@ -33,6 +33,7 @@ #include "chromeos/ash/components/dbus/chunneld/chunneld_client.h" #include "chromeos/ash/components/dbus/cicerone/cicerone_client.h" #include "chromeos/ash/components/dbus/concierge/concierge_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/cros_healthd/cros_healthd_client.h" #include "chromeos/ash/components/dbus/cups_proxy/cups_proxy_client.h" #include "chromeos/ash/components/dbus/federated/federated_client.h" @@ -72,7 +73,6 @@ #include "chromeos/ash/components/dbus/vm_plugin_dispatcher/vm_plugin_dispatcher_client.h" #include "chromeos/ash/components/hibernate/buildflags.h" // ENABLE_HIBERNATE #include "chromeos/dbus/constants/dbus_paths.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/dlcservice/dlcservice_client.h" #include "chromeos/dbus/dlp/dlp_client.h"
diff --git a/chrome/browser/ash/drive/drive_integration_service.cc b/chrome/browser/ash/drive/drive_integration_service.cc index b199b72..6ff9dbd0 100644 --- a/chrome/browser/ash/drive/drive_integration_service.cc +++ b/chrome/browser/ash/drive/drive_integration_service.cc
@@ -349,7 +349,7 @@ // Observes drive disable Preference's change. class DriveIntegrationService::PreferenceWatcher : public network::NetworkConnectionTracker::NetworkConnectionObserver, - public chromeos::NetworkPortalDetector::Observer { + public ash::NetworkPortalDetector::Observer { public: explicit PreferenceWatcher(PrefService* pref_service) : pref_service_(pref_service), integration_service_(nullptr) { @@ -378,7 +378,7 @@ if (integration_service_) { content::GetNetworkConnectionTracker()->RemoveNetworkConnectionObserver( this); - chromeos::network_portal_detector::GetInstance()->RemoveObserver(this); + ash::network_portal_detector::GetInstance()->RemoveObserver(this); } } @@ -406,9 +406,9 @@ bool is_offline() const { return last_portal_status_ != - chromeos::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE && + ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE && last_portal_status_ != - chromeos::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN; + ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN; } private: @@ -438,9 +438,8 @@ } void AddNetworkPortalDetectorObserver() { - if (chromeos::network_portal_detector::IsInitialized()) { - chromeos::network_portal_detector::GetInstance()->AddAndFireObserver( - this); + if (ash::network_portal_detector::IsInitialized()) { + ash::network_portal_detector::GetInstance()->AddAndFireObserver(this); } else { // The NetworkPortalDetector instance still not ready. Postpone even more. base::SequencedTaskRunnerHandle::Get()->PostDelayedTask( @@ -452,16 +451,15 @@ } } - // chromeos::NetworkPortalDetector::Observer + // ash::NetworkPortalDetector::Observer void OnPortalDetectionCompleted( const chromeos::NetworkState* network, - const chromeos::NetworkPortalDetector::CaptivePortalStatus status) - override { + const ash::NetworkPortalDetector::CaptivePortalStatus status) override { last_portal_status_ = status; if (integration_service_->remount_when_online_ && last_portal_status_ == - chromeos::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) { + ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE) { integration_service_->remount_when_online_ = false; integration_service_->mount_start_ = {}; integration_service_->AddDriveMountPoint(); @@ -482,8 +480,8 @@ PrefService* pref_service_; PrefChangeRegistrar pref_change_registrar_; DriveIntegrationService* integration_service_; - chromeos::NetworkPortalDetector::CaptivePortalStatus last_portal_status_ = - chromeos::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN; + ash::NetworkPortalDetector::CaptivePortalStatus last_portal_status_ = + ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN; base::WeakPtrFactory<PreferenceWatcher> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/ash/file_manager/fake_disk_mount_manager.h b/chrome/browser/ash/file_manager/fake_disk_mount_manager.h index faab9fa..1bb03926 100644 --- a/chrome/browser/ash/file_manager/fake_disk_mount_manager.h +++ b/chrome/browser/ash/file_manager/fake_disk_mount_manager.h
@@ -14,7 +14,7 @@ #include "base/callback.h" #include "base/containers/queue.h" #include "base/observer_list.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" namespace file_manager {
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest.cc b/chrome/browser/ash/file_manager/file_manager_browsertest.cc index 234bb05..3c2d3f3 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest.cc
@@ -1639,10 +1639,8 @@ TestCase("enableDisableStorageSettingsLink").FilesSwa(), TestCase("showAvailableStorageMyFiles"), TestCase("showAvailableStorageMyFiles").FilesSwa(), - // Disabled until Drive quota can be properly displayed. - // crbug.com/1177203 - // TestCase("showAvailableStorageDrive"), - // TestCase("showAvailableStorageDrive").FilesSwa(), + TestCase("showAvailableStorageDrive"), + TestCase("showAvailableStorageDrive").FilesSwa(), TestCase("showAvailableStorageSmbfs"), TestCase("showAvailableStorageSmbfs").FilesSwa(), TestCase("showAvailableStorageDocProvider")
diff --git a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc index a12924a..754d5b7 100644 --- a/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc +++ b/chrome/browser/ash/file_manager/file_manager_browsertest_base.cc
@@ -105,9 +105,9 @@ #include "chrome/common/pref_names.h" #include "chrome/test/base/test_switches.h" #include "chromeos/ash/components/dbus/concierge/concierge_service.pb.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h" #include "chromeos/dbus/constants/dbus_switches.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" -#include "chromeos/dbus/cros_disks/fake_cros_disks_client.h" #include "components/drive/drive_pref_names.h" #include "components/prefs/pref_service.h" #include "components/services/app_service/public/cpp/app_launch_util.h"
diff --git a/chrome/browser/ash/file_manager/file_tasks.cc b/chrome/browser/ash/file_manager/file_tasks.cc index 3871550..0c9c591 100644 --- a/chrome/browser/ash/file_manager/file_tasks.cc +++ b/chrome/browser/ash/file_manager/file_tasks.cc
@@ -706,6 +706,28 @@ return ""; } +bool TaskDescriptor::operator<(const TaskDescriptor& other) const { + if (app_id < other.app_id) { + return true; + } else if (app_id > other.app_id) { + return false; + } + + // If we're here, it's because app_id == other.app_id. + if (task_type < other.task_type) { + return true; + } else if (task_type > other.task_type) { + return false; + } + + // If we're here, it's because task_type == other.task_type. + if (action_id < other.action_id) { + return true; + } else { + return false; + } +} + FullTaskDescriptor::FullTaskDescriptor(const TaskDescriptor& in_task_descriptor, const std::string& in_task_title, const Verb in_task_verb, @@ -864,17 +886,27 @@ notifier->NotifyFileTasks(file_urls); } - // Some action IDs of the file manager's file browser handlers require the - // files to be directly opened with the browser. In a multiprofile session - // this will always open on the current desktop, regardless of which profile - // owns the files, so return TASK_RESULT_OPENED. const std::string parsed_action_id(ParseFilesAppActionId(task.action_id)); if (IsFilesAppId(task.app_id) && (parsed_action_id == "upload-office-to-drive")) { - return chromeos::cloud_upload::CloudUploadDialog::Show(); + const bool opened = chromeos::cloud_upload::CloudUploadDialog::Show(); + if (done) { + if (opened) { + std::move(done).Run( + extensions::api::file_manager_private::TASK_RESULT_OPENED, ""); + } else { + std::move(done).Run( + extensions::api::file_manager_private::TASK_RESULT_FAILED, ""); + } + } + return true; } + // Some action IDs of the file manager's file browser handlers require the + // files to be directly opened with the browser. In a multiprofile session + // this will always open on the current desktop, regardless of which profile + // owns the files, so return TASK_RESULT_OPENED. if (ShouldBeOpenedWithBrowser(task.app_id, parsed_action_id)) { const bool result = OpenFilesWithBrowser(profile, file_urls, parsed_action_id);
diff --git a/chrome/browser/ash/file_manager/file_tasks.h b/chrome/browser/ash/file_manager/file_tasks.h index b86a2f0..ccc3b262 100644 --- a/chrome/browser/ash/file_manager/file_tasks.h +++ b/chrome/browser/ash/file_manager/file_tasks.h
@@ -182,10 +182,7 @@ } TaskDescriptor() = default; - bool operator<(const TaskDescriptor& other) const { - return app_id < other.app_id || task_type < other.task_type || - action_id < other.action_id; - } + bool operator<(const TaskDescriptor& other) const; std::string app_id; TaskType task_type;
diff --git a/chrome/browser/ash/file_manager/file_tasks_unittest.cc b/chrome/browser/ash/file_manager/file_tasks_unittest.cc index 4bddb94b..d024ce3 100644 --- a/chrome/browser/ash/file_manager/file_tasks_unittest.cc +++ b/chrome/browser/ash/file_manager/file_tasks_unittest.cc
@@ -151,6 +151,25 @@ EXPECT_FALSE(ParseTaskID("app-id|unknown|action-id", &task)); } +TEST(FileManagerFileTasksTest, BaseContainsFindsTaskDescriptors) { + // Create several task descriptors that each have one field with the + // "smallest" value in that category. i.e. task_1 has the "smallest" app_id + // value, task_2 has the "smallest" task type value, and task_3 has the + // "smallest" action_id value. + TaskDescriptor task_1("a", TASK_TYPE_ARC_APP, "other"); + TaskDescriptor task_2("b", TASK_TYPE_FILE_BROWSER_HANDLER, "view"); + TaskDescriptor task_3("c", TASK_TYPE_FILE_HANDLER, "edit"); + + std::set<TaskDescriptor> tasks; + tasks.insert(task_1); + tasks.insert(task_2); + tasks.insert(task_3); + + ASSERT_TRUE(base::Contains(tasks, task_1)); + ASSERT_TRUE(base::Contains(tasks, task_2)); + ASSERT_TRUE(base::Contains(tasks, task_3)); +} + // Test that the right task is chosen from multiple choices per mime types // and file extensions. TEST(FileManagerFileTasksTest, ChooseAndSetDefaultTask_MultipleTasks) {
diff --git a/chrome/browser/ash/file_manager/fusebox_mounter.cc b/chrome/browser/ash/file_manager/fusebox_mounter.cc index 1b8ce63..4342b814 100644 --- a/chrome/browser/ash/file_manager/fusebox_mounter.cc +++ b/chrome/browser/ash/file_manager/fusebox_mounter.cc
@@ -15,8 +15,8 @@ #include "base/logging.h" #include "base/memory/weak_ptr.h" #include "base/strings/string_util.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/fusebox/fusebox_reverse_client.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" namespace file_manager {
diff --git a/chrome/browser/ash/file_manager/fusebox_mounter.h b/chrome/browser/ash/file_manager/fusebox_mounter.h index 40ea0879..13617e8 100644 --- a/chrome/browser/ash/file_manager/fusebox_mounter.h +++ b/chrome/browser/ash/file_manager/fusebox_mounter.h
@@ -10,7 +10,7 @@ #include "ash/components/disks/disk_mount_manager.h" #include "base/callback_forward.h" #include "base/memory/weak_ptr.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" namespace file_manager {
diff --git a/chrome/browser/ash/file_manager/io_task_controller.cc b/chrome/browser/ash/file_manager/io_task_controller.cc index 9831302c..d3b96344 100644 --- a/chrome/browser/ash/file_manager/io_task_controller.cc +++ b/chrome/browser/ash/file_manager/io_task_controller.cc
@@ -5,6 +5,8 @@ #include "chrome/browser/ash/file_manager/io_task_controller.h" #include "base/task/bind_post_task.h" +#include "content/public/browser/device_service.h" +#include "services/device/public/mojom/wake_lock_provider.mojom.h" namespace file_manager { @@ -34,7 +36,7 @@ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); NotifyIOTaskObservers(status); - tasks_.erase(task_id); + RemoveIOTask(task_id); } void IOTaskController::AddObserver(IOTaskController::Observer* observer) { @@ -57,13 +59,13 @@ NotifyIOTaskObservers(task->progress()); // TODO(b/199807189): Queue the task. - task->Execute(base::BindRepeating(&IOTaskController::OnIOTaskProgress, + PutIOTask(task_id, std::move(task)) + ->Execute(base::BindRepeating(&IOTaskController::OnIOTaskProgress, weak_ptr_factory_.GetWeakPtr()), base::BindPostTask( base::SequencedTaskRunnerHandle::Get(), base::BindOnce(&IOTaskController::OnIOTaskComplete, weak_ptr_factory_.GetWeakPtr(), task_id))); - tasks_[task_id] = std::move(task); return task_id; } @@ -75,12 +77,44 @@ IOTask* task = it->second.get(); task->Cancel(); NotifyIOTaskObservers(task->progress()); - tasks_.erase(it); + RemoveIOTask(task_id); } else { LOG(WARNING) << "Failed to cancel task: " << task_id << " not found"; } } +device::mojom::WakeLock* IOTaskController::GetWakeLock() { + if (!wake_lock_) { + mojo::Remote<device::mojom::WakeLockProvider> provider; + content::GetDeviceService().BindWakeLockProvider( + provider.BindNewPipeAndPassReceiver()); + provider->GetWakeLockWithoutContext( + device::mojom::WakeLockType::kPreventDisplaySleep, + device::mojom::WakeLockReason::kOther, "IOTask", + wake_lock_.BindNewPipeAndPassReceiver()); + } + return wake_lock_.get(); +} + +IOTask* IOTaskController::PutIOTask(const IOTaskId task_id, + std::unique_ptr<IOTask> task) { + if (tasks_.empty()) { + GetWakeLock()->RequestWakeLock(); + ++wake_lock_counter_for_tests_; + } + IOTask* task_ptr = task.get(); + tasks_[task_id] = std::move(task); + return task_ptr; +} + +void IOTaskController::RemoveIOTask(const IOTaskId task_id) { + tasks_.erase(task_id); + if (tasks_.empty()) { + GetWakeLock()->CancelWakeLock(); + --wake_lock_counter_for_tests_; + } +} + } // namespace io_task } // namespace file_manager
diff --git a/chrome/browser/ash/file_manager/io_task_controller.h b/chrome/browser/ash/file_manager/io_task_controller.h index 8fc985f..28f967c 100644 --- a/chrome/browser/ash/file_manager/io_task_controller.h +++ b/chrome/browser/ash/file_manager/io_task_controller.h
@@ -14,6 +14,8 @@ #include "base/sequence_checker.h" #include "base/task/sequenced_task_runner.h" #include "chrome/browser/ash/file_manager/io_task.h" +#include "mojo/public/cpp/bindings/remote.h" +#include "services/device/public/mojom/wake_lock.mojom.h" #include "storage/browser/file_system/file_system_file_util.h" namespace file_manager { @@ -46,11 +48,30 @@ // Cancels or removes a task from the queue. void Cancel(IOTaskId task_id); + // For tests only; returns the current wake lock counter. This counter is + // incremented by 1 for every time we get a wake lock and decremented every + // time we release it. + int wake_lock_counter_for_tests() const { + return wake_lock_counter_for_tests_; + } + private: void NotifyIOTaskObservers(const ProgressStatus& status); void OnIOTaskProgress(const ProgressStatus& status); void OnIOTaskComplete(IOTaskId task_id, ProgressStatus status); + // Service method for lazily getting the wake lock. + device::mojom::WakeLock* GetWakeLock(); + + // Put a new task with the given task_id in the task map. This method also + // manages the wake lock by requesting a lock if this is the first task. It + // returns the pointer to the just stored task. + IOTask* PutIOTask(const IOTaskId task_id, std::unique_ptr<IOTask> task); + + // Removes a task by its ID. This method also manages the wake lock by + // releasing it if this was the last registered task. + void RemoveIOTask(const IOTaskId task_id); + SEQUENCE_CHECKER(sequence_checker_); base::ObserverList<Observer> observers_; @@ -58,6 +79,11 @@ IOTaskId last_id_ = 0; std::map<IOTaskId, std::unique_ptr<IOTask>> tasks_; + // For keeping the device awake during IO tasks. + mojo::Remote<device::mojom::WakeLock> wake_lock_; + + int wake_lock_counter_for_tests_ = 0; + base::WeakPtrFactory<IOTaskController> weak_ptr_factory_{this}; };
diff --git a/chrome/browser/ash/file_manager/io_task_controller_unittest.cc b/chrome/browser/ash/file_manager/io_task_controller_unittest.cc index 1e9bd3ab..dd659b4b 100644 --- a/chrome/browser/ash/file_manager/io_task_controller_unittest.cc +++ b/chrome/browser/ash/file_manager/io_task_controller_unittest.cc
@@ -9,6 +9,7 @@ #include "base/run_loop.h" #include "base/test/gmock_callback_support.h" #include "base/test/task_environment.h" +#include "content/public/test/browser_task_environment.h" #include "storage/browser/file_system/file_system_url.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -42,7 +43,7 @@ class IOTaskControllerTest : public testing::Test { protected: - base::test::SingleThreadTaskEnvironment task_environment_; + content::BrowserTaskEnvironment browser_task_environment_; IOTaskController io_task_controller_; }; @@ -76,8 +77,10 @@ base_matcher))); // Queue the I/O task, which will also synchronously execute it. + EXPECT_EQ(0, io_task_controller_.wake_lock_counter_for_tests()); auto task_id = io_task_controller_.Add( std::make_unique<DummyIOTask>(source_urls, dest, OperationType::kCopy)); + EXPECT_EQ(1, io_task_controller_.wake_lock_counter_for_tests()); // Wait for the two callbacks posted to the main sequence to finish. { @@ -102,6 +105,7 @@ // Cancel() should have no effect once a task is completed. io_task_controller_.Cancel(task_id); base::RunLoop().RunUntilIdle(); + EXPECT_EQ(0, io_task_controller_.wake_lock_counter_for_tests()); io_task_controller_.RemoveObserver(&observer); }
diff --git a/chrome/browser/ash/file_manager/path_util_unittest.cc b/chrome/browser/ash/file_manager/path_util_unittest.cc index a2dff7e..ba0b01d0 100644 --- a/chrome/browser/ash/file_manager/path_util_unittest.cc +++ b/chrome/browser/ash/file_manager/path_util_unittest.cc
@@ -46,8 +46,8 @@ #include "chromeos/ash/components/dbus/chunneld/chunneld_client.h" #include "chromeos/ash/components/dbus/cicerone/cicerone_client.h" #include "chromeos/ash/components/dbus/concierge/concierge_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/seneschal/seneschal_client.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "components/account_id/account_id.h" #include "components/drive/drive_pref_names.h"
diff --git a/chrome/browser/ash/file_manager/trash_unittest_base.cc b/chrome/browser/ash/file_manager/trash_unittest_base.cc index 2142cb37..36a12809 100644 --- a/chrome/browser/ash/file_manager/trash_unittest_base.cc +++ b/chrome/browser/ash/file_manager/trash_unittest_base.cc
@@ -14,8 +14,8 @@ #include "chrome/browser/ash/file_manager/volume_manager_factory.h" #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h" #include "chromeos/ash/components/dbus/chunneld/chunneld_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/seneschal/seneschal_client.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "storage/browser/file_system/external_mount_points.h" #include "storage/browser/test/test_file_system_context.h"
diff --git a/chrome/browser/ash/file_manager/volume_manager.h b/chrome/browser/ash/file_manager/volume_manager.h index 82b0c466..bcf88b5 100644 --- a/chrome/browser/ash/file_manager/volume_manager.h +++ b/chrome/browser/ash/file_manager/volume_manager.h
@@ -26,7 +26,7 @@ #include "chrome/browser/ash/file_system_provider/provided_file_system_info.h" #include "chrome/browser/ash/file_system_provider/service.h" #include "chrome/browser/ash/guest_os/public/types.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "components/keyed_service/core/keyed_service.h" #include "components/prefs/pref_change_registrar.h" #include "components/storage_monitor/removable_storage_observer.h"
diff --git a/chrome/browser/ash/file_manager/volume_manager_observer.h b/chrome/browser/ash/file_manager/volume_manager_observer.h index f702a9c..3bd7fd3 100644 --- a/chrome/browser/ash/file_manager/volume_manager_observer.h +++ b/chrome/browser/ash/file_manager/volume_manager_observer.h
@@ -7,7 +7,7 @@ #include <string> -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" namespace ash { namespace disks {
diff --git a/chrome/browser/ash/guest_os/public/guest_os_mount_provider_unittest.cc b/chrome/browser/ash/guest_os/public/guest_os_mount_provider_unittest.cc index 1413168831..fa6e63b 100644 --- a/chrome/browser/ash/guest_os/public/guest_os_mount_provider_unittest.cc +++ b/chrome/browser/ash/guest_os/public/guest_os_mount_provider_unittest.cc
@@ -19,7 +19,7 @@ #include "chrome/browser/ash/guest_os/guest_id.h" #include "chrome/browser/ash/guest_os/guest_os_test_helpers.h" #include "chrome/test/base/testing_profile.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "components/keyed_service/content/browser_context_keyed_service_factory.h" #include "content/public/browser/browser_context.h" #include "content/public/test/browser_task_environment.h"
diff --git a/chrome/browser/ash/login/app_mode/test/kiosk_update_browsertest.cc b/chrome/browser/ash/login/app_mode/test/kiosk_update_browsertest.cc index 96ec22c..17f61579 100644 --- a/chrome/browser/ash/login/app_mode/test/kiosk_update_browsertest.cc +++ b/chrome/browser/ash/login/app_mode/test/kiosk_update_browsertest.cc
@@ -20,7 +20,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/common/chrome_paths.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "content/public/test/browser_test.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_system.h"
diff --git a/chrome/browser/ash/login/auth/cryptohome_authenticator_unittest.cc b/chrome/browser/ash/login/auth/cryptohome_authenticator_unittest.cc index 192d7690..53e7823 100644 --- a/chrome/browser/ash/login/auth/cryptohome_authenticator_unittest.cc +++ b/chrome/browser/ash/login/auth/cryptohome_authenticator_unittest.cc
@@ -36,9 +36,9 @@ #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/base/testing_profile_manager.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/userdataauth/fake_cryptohome_misc_client.h" #include "chromeos/ash/components/dbus/userdataauth/fake_userdataauth_client.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/cryptohome/account_identifier_operators.h" #include "chromeos/dbus/cryptohome/rpc.pb.h" #include "chromeos/login/login_state/login_state.h"
diff --git a/chrome/browser/ash/note_taking_helper_unittest.cc b/chrome/browser/ash/note_taking_helper_unittest.cc index 426fa253..faa98536 100644 --- a/chrome/browser/ash/note_taking_helper_unittest.cc +++ b/chrome/browser/ash/note_taking_helper_unittest.cc
@@ -51,9 +51,9 @@ #include "chrome/test/base/browser_with_test_window_test.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/base/testing_profile_manager.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/session_manager/fake_session_manager_client.h" #include "chromeos/ash/components/dbus/session_manager/session_manager_client.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "components/arc/test/fake_intent_helper_host.h" #include "components/arc/test/fake_intent_helper_instance.h" #include "components/crx_file/id_util.h"
diff --git a/chrome/browser/ash/policy/reporting/arc_app_install_event_logger_unittest.cc b/chrome/browser/ash/policy/reporting/arc_app_install_event_logger_unittest.cc index 0e0f20fb..aa1cacf2 100644 --- a/chrome/browser/ash/policy/reporting/arc_app_install_event_logger_unittest.cc +++ b/chrome/browser/ash/policy/reporting/arc_app_install_event_logger_unittest.cc
@@ -17,8 +17,8 @@ #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/network/network_handler_test_helper.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "components/policy/policy_constants.h" #include "components/policy/proto/device_management_backend.pb.h" #include "components/prefs/pref_service.h"
diff --git a/chrome/browser/ash/policy/reporting/extension_install_event_logger_unittest.cc b/chrome/browser/ash/policy/reporting/extension_install_event_logger_unittest.cc index d9b2a4a..2e18e7b 100644 --- a/chrome/browser/ash/policy/reporting/extension_install_event_logger_unittest.cc +++ b/chrome/browser/ash/policy/reporting/extension_install_event_logger_unittest.cc
@@ -13,8 +13,8 @@ #include "chrome/common/pref_names.h" #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/network/network_handler_test_helper.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "components/policy/policy_constants.h" #include "components/policy/proto/device_management_backend.pb.h" #include "components/prefs/testing_pref_service.h"
diff --git a/chrome/browser/ash/policy/status_collector/device_status_collector_browsertest.cc b/chrome/browser/ash/policy/status_collector/device_status_collector_browsertest.cc index d92d2c34..d33fdc84 100644 --- a/chrome/browser/ash/policy/status_collector/device_status_collector_browsertest.cc +++ b/chrome/browser/ash/policy/status_collector/device_status_collector_browsertest.cc
@@ -68,6 +68,7 @@ #include "chromeos/ash/components/dbus/attestation/attestation_client.h" #include "chromeos/ash/components/dbus/cicerone/cicerone_client.h" #include "chromeos/ash/components/dbus/concierge/concierge_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/seneschal/seneschal_client.h" #include "chromeos/ash/components/dbus/update_engine/fake_update_engine_client.h" #include "chromeos/ash/components/dbus/update_engine/update_engine_client.h" @@ -80,7 +81,6 @@ #include "chromeos/ash/services/cros_healthd/public/cpp/fake_cros_healthd.h" #include "chromeos/ash/services/cros_healthd/public/mojom/cros_healthd.mojom.h" #include "chromeos/ash/services/cros_healthd/public/mojom/cros_healthd_probe.mojom.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/power_manager/idle.pb.h" #include "chromeos/dbus/shill/shill_device_client.h"
diff --git a/chrome/browser/ash/policy/status_collector/legacy_device_status_collector_browsertest.cc b/chrome/browser/ash/policy/status_collector/legacy_device_status_collector_browsertest.cc index 180af87..c024b68 100644 --- a/chrome/browser/ash/policy/status_collector/legacy_device_status_collector_browsertest.cc +++ b/chrome/browser/ash/policy/status_collector/legacy_device_status_collector_browsertest.cc
@@ -66,6 +66,7 @@ #include "chromeos/ash/components/dbus/attestation/attestation_client.h" #include "chromeos/ash/components/dbus/cicerone/cicerone_client.h" #include "chromeos/ash/components/dbus/concierge/concierge_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/seneschal/seneschal_client.h" #include "chromeos/ash/components/dbus/update_engine/fake_update_engine_client.h" #include "chromeos/ash/components/dbus/update_engine/update_engine_client.h" @@ -77,7 +78,6 @@ #include "chromeos/ash/components/network/network_state_handler.h" #include "chromeos/ash/services/cros_healthd/public/mojom/cros_healthd.mojom.h" #include "chromeos/ash/services/cros_healthd/public/mojom/cros_healthd_probe.mojom.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/power_manager/idle.pb.h" #include "chromeos/dbus/shill/shill_device_client.h"
diff --git a/chrome/browser/ash/system_extensions/system_extensions_data_source.cc b/chrome/browser/ash/system_extensions/system_extensions_data_source.cc index acf96b0c..1edbbbc 100644 --- a/chrome/browser/ash/system_extensions/system_extensions_data_source.cc +++ b/chrome/browser/ash/system_extensions/system_extensions_data_source.cc
@@ -81,9 +81,9 @@ base::BindOnce(&ReadFile, path, std::move(callback))); } -std::string SystemExtensionsDataSource::GetMimeType(const std::string& path) { +std::string SystemExtensionsDataSource::GetMimeType(const GURL& url) { std::string mime_type(kDefaultMime); - std::string ext = base::FilePath(path).Extension(); + std::string ext = base::FilePath(url.path_piece()).Extension(); if (!ext.empty()) net::GetWellKnownMimeTypeFromExtension(ext.substr(1), &mime_type); return mime_type;
diff --git a/chrome/browser/ash/system_extensions/system_extensions_data_source.h b/chrome/browser/ash/system_extensions/system_extensions_data_source.h index 935efac..c065e15 100644 --- a/chrome/browser/ash/system_extensions/system_extensions_data_source.h +++ b/chrome/browser/ash/system_extensions/system_extensions_data_source.h
@@ -33,7 +33,7 @@ const content::WebContents::Getter& wc_getter, content::URLDataSource::GotDataCallback callback) override; - std::string GetMimeType(const std::string& path) override; + std::string GetMimeType(const GURL& url) override; bool ShouldServeMimeTypeAsContentTypeHeader() override; const ui::TemplateReplacements* GetReplacements() override;
diff --git a/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc b/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc index 154f3ba..71585bba 100644 --- a/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc +++ b/chrome/browser/ash/system_web_apps/system_web_app_manager_browsertest.cc
@@ -1606,7 +1606,7 @@ run_loop.Run(); } - auto check_shortcut = [&menu_model](int index, int shortcut_index, + auto check_shortcut = [&menu_model](size_t index, int shortcut_index, const std::u16string& label) { EXPECT_EQ(menu_model->GetTypeAt(index), ui::MenuModel::TYPE_COMMAND); EXPECT_EQ(menu_model->GetCommandIdAt(index), @@ -1623,7 +1623,7 @@ ui_test_utils::UrlLoadObserver url_observer( GURL("chrome://test-system-app/pwa.html#two"), content::NotificationService::AllSources()); - menu_model->ActivatedAt(menu_model->GetIndexOfCommandId(command_id), + menu_model->ActivatedAt(menu_model->GetIndexOfCommandId(command_id).value(), ui::EF_LEFT_MOUSE_BUTTON); url_observer.Wait(); }
diff --git a/chrome/browser/ash/usb/cros_usb_detector_unittest.cc b/chrome/browser/ash/usb/cros_usb_detector_unittest.cc index ffbd52d..cca37c1 100644 --- a/chrome/browser/ash/usb/cros_usb_detector_unittest.cc +++ b/chrome/browser/ash/usb/cros_usb_detector_unittest.cc
@@ -39,9 +39,9 @@ #include "chromeos/ash/components/dbus/cicerone/fake_cicerone_client.h" #include "chromeos/ash/components/dbus/concierge/concierge_client.h" #include "chromeos/ash/components/dbus/concierge/fake_concierge_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/seneschal/seneschal_client.h" #include "chromeos/ash/components/dbus/vm_plugin_dispatcher/fake_vm_plugin_dispatcher_client.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "services/device/public/cpp/test/fake_usb_device_info.h" #include "services/device/public/cpp/test/fake_usb_device_manager.h"
diff --git a/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc b/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc index 6e556683..7f226c12 100644 --- a/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc +++ b/chrome/browser/ash/web_applications/media_app/media_app_integration_browsertest.cc
@@ -41,8 +41,8 @@ #include "chrome/browser/ui/browser_window.h" #include "chrome/browser/web_applications/web_app_helpers.h" #include "chrome/common/chrome_paths.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/constants/chromeos_features.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "components/crash/content/browser/error_reporting/mock_crash_endpoint.h" #include "components/services/app_service/public/cpp/intent.h" #include "content/public/browser/media_session_service.h"
diff --git a/chrome/browser/ash/web_applications/terminal_source.cc b/chrome/browser/ash/web_applications/terminal_source.cc index 1cf1d2b5..74222577 100644 --- a/chrome/browser/ash/web_applications/terminal_source.cc +++ b/chrome/browser/ash/web_applications/terminal_source.cc
@@ -180,9 +180,9 @@ base::BindOnce(&ReadFile, downloads_, path, std::move(callback))); } -std::string TerminalSource::GetMimeType(const std::string& path) { +std::string TerminalSource::GetMimeType(const GURL& url) { std::string mime_type(kDefaultMime); - std::string ext = base::FilePath(path).Extension(); + std::string ext = base::FilePath(url.path_piece()).Extension(); if (!ext.empty()) net::GetWellKnownMimeTypeFromExtension(ext.substr(1), &mime_type); return mime_type;
diff --git a/chrome/browser/ash/web_applications/terminal_source.h b/chrome/browser/ash/web_applications/terminal_source.h index 6646785f87..4907df79 100644 --- a/chrome/browser/ash/web_applications/terminal_source.h +++ b/chrome/browser/ash/web_applications/terminal_source.h
@@ -41,7 +41,7 @@ const GURL& url, const content::WebContents::Getter& wc_getter, content::URLDataSource::GotDataCallback callback) override; - std::string GetMimeType(const std::string& path) override; + std::string GetMimeType(const GURL& url) override; bool ShouldServeMimeTypeAsContentTypeHeader() override; const ui::TemplateReplacements* GetReplacements() override; std::string GetContentSecurityPolicy(
diff --git a/chrome/browser/autofill/autofill_context_menu_manager_unittest.cc b/chrome/browser/autofill/autofill_context_menu_manager_unittest.cc index 0395a1d..e026ad1a 100644 --- a/chrome/browser/autofill/autofill_context_menu_manager_unittest.cc +++ b/chrome/browser/autofill/autofill_context_menu_manager_unittest.cc
@@ -105,7 +105,7 @@ std::vector<std::u16string> all_added_strings; // Check for top level menu with autofill options. - ASSERT_EQ(2, menu_model()->GetItemCount()); + ASSERT_EQ(2u, menu_model()->GetItemCount()); ASSERT_EQ(u"Fill Address Info", menu_model()->GetLabelAt(0)); ASSERT_EQ(u"Fill Payment", menu_model()->GetLabelAt(1)); ASSERT_EQ(menu_model()->GetTypeAt(0), ui::MenuModel::ItemType::TYPE_SUBMENU); @@ -113,7 +113,7 @@ // Check for submenu with address descriptions. auto* address_menu_model = menu_model()->GetSubmenuModelAt(0); - ASSERT_EQ(address_menu_model->GetItemCount(), 3); + ASSERT_EQ(address_menu_model->GetItemCount(), 3u); ASSERT_EQ(u"John H. Doe, 666 Erebus St.", address_menu_model->GetLabelAt(0)); ASSERT_EQ(address_menu_model->GetTypeAt(0), ui::MenuModel::ItemType::TYPE_SUBMENU); @@ -123,7 +123,7 @@ // Check for submenu with address details. auto* address_details_submenu = address_menu_model->GetSubmenuModelAt(0); - ASSERT_EQ(address_details_submenu->GetItemCount(), 8); + ASSERT_EQ(address_details_submenu->GetItemCount(), 8u); static constexpr std::array expected_address_values = { u"John H. Doe", u"", u"666 Erebus St.\nApt 8", u"Elysium", u"91111", u"", u"16502111111", u"johndoe@hades.com"}; @@ -135,7 +135,7 @@ // Check for submenu with credit card descriptions. auto* card_menu_model = menu_model()->GetSubmenuModelAt(1); - ASSERT_EQ(card_menu_model->GetItemCount(), 3); + ASSERT_EQ(card_menu_model->GetItemCount(), 3u); ASSERT_EQ( u"Visa " u"\x202A\x2022\x2060\x2006\x2060\x2022\x2060\x2006\x2060\x2022\x2060" @@ -150,7 +150,7 @@ // Check for submenu with credit card details. auto* card_details_submenu = card_menu_model->GetSubmenuModelAt(0); - ASSERT_EQ(card_details_submenu->GetItemCount(), 5); + ASSERT_EQ(card_details_submenu->GetItemCount(), 5u); static constexpr std::array expected_credit_card_values = { u"Test User", u"4111111111111111", u""}; for (size_t i = 0; i < expected_credit_card_values.size(); i++) {
diff --git a/chrome/browser/background/background_mode_manager_unittest.cc b/chrome/browser/background/background_mode_manager_unittest.cc index b81cf22f..15e6018 100644 --- a/chrome/browser/background/background_mode_manager_unittest.cc +++ b/chrome/browser/background/background_mode_manager_unittest.cc
@@ -282,11 +282,9 @@ protected: // From views::MenuModelAdapter::IsCommandEnabled with modification. bool IsCommandEnabled(ui::MenuModel* model, int id) const { - int index = 0; - if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) - return model->IsEnabledAt(index); - - return false; + size_t index = 0; + return ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index) && + model->IsEnabledAt(index); } std::unique_ptr<TestBackgroundModeManager> manager_;
diff --git a/chrome/browser/chrome_service_worker_browsertest.cc b/chrome/browser/chrome_service_worker_browsertest.cc index 8a681a9..64e8c15e 100644 --- a/chrome/browser/chrome_service_worker_browsertest.cc +++ b/chrome/browser/chrome_service_worker_browsertest.cc
@@ -842,8 +842,8 @@ std::string data; std::move(callback).Run(base::RefCountedString::TakeString(&data)); } - std::string GetMimeType(const std::string& path) override { - if (path == "sw.js") + std::string GetMimeType(const GURL& url) override { + if (url.ExtractFileName() == "sw.js") return "application/javascript"; return "text/html"; }
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn index e99df5d..39393eff 100644 --- a/chrome/browser/chromeos/BUILD.gn +++ b/chrome/browser/chromeos/BUILD.gn
@@ -262,6 +262,7 @@ "//chromeos/ash/components/dbus/chunneld", "//chromeos/ash/components/dbus/cicerone", "//chromeos/ash/components/dbus/concierge", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/cros_healthd", "//chromeos/ash/components/dbus/cups_proxy", "//chromeos/ash/components/dbus/federated", @@ -309,6 +310,7 @@ "//chromeos/ash/components/hibernate:buildflags", "//chromeos/ash/components/local_search_service/public/cpp", "//chromeos/ash/components/memory", + "//chromeos/ash/components/network", "//chromeos/ash/components/network/portal_detector", "//chromeos/ash/components/oobe_quick_start", "//chromeos/ash/components/scanning", @@ -335,7 +337,6 @@ "//chromeos/crosapi/mojom", "//chromeos/dbus", "//chromeos/dbus/constants", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/cryptohome", "//chromeos/dbus/cryptohome:attestation_proto", "//chromeos/dbus/cryptohome:cryptohome_proto", @@ -358,7 +359,6 @@ "//chromeos/language/language_packs", "//chromeos/language/public/mojom", "//chromeos/login/login_state", - "//chromeos/network", "//chromeos/printing", "//chromeos/services/bluetooth_config:in_process_bluetooth_config", "//chromeos/services/machine_learning/public/cpp", @@ -2657,6 +2657,7 @@ "//chromeos/ash/components/dbus/chunneld", "//chromeos/ash/components/dbus/cicerone", "//chromeos/ash/components/dbus/concierge", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/lorgnette_manager", "//chromeos/ash/components/dbus/lorgnette_manager:lorgnette_proto", "//chromeos/ash/components/dbus/seneschal", @@ -2664,7 +2665,6 @@ "//chromeos/ash/components/dbus/userdataauth:userdataauth", "//chromeos/ash/components/dbus/userdataauth:userdataauth_proto", "//chromeos/dbus:test_support", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/cryptohome", "//chromeos/dbus/cryptohome:cryptohome_proto", "//chromeos/dbus/dlcservice", @@ -3640,6 +3640,7 @@ "//chromeos/ash/components/dbus/attestation", "//chromeos/ash/components/dbus/attestation:attestation_proto", "//chromeos/ash/components/dbus/authpolicy", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/gnubby", "//chromeos/ash/components/dbus/lorgnette_manager:lorgnette_proto", "//chromeos/ash/components/dbus/oobe_config", @@ -3652,13 +3653,13 @@ "//chromeos/ash/components/dbus/upstart", "//chromeos/ash/components/dbus/virtual_file_provider", "//chromeos/ash/components/dbus/vm_plugin_dispatcher", + "//chromeos/ash/components/network", "//chromeos/ash/components/network:test_support", "//chromeos/ash/components/network/portal_detector:test_support", "//chromeos/ash/components/scanning", "//chromeos/components/sensors:test_support", "//chromeos/components/sync_wifi:test_support", "//chromeos/dbus:test_support", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/cryptohome", "//chromeos/dbus/cryptohome:attestation_proto", "//chromeos/dbus/dlcservice", @@ -3668,7 +3669,6 @@ "//chromeos/ime:gencode", "//chromeos/login/login_state", "//chromeos/login/login_state:test_support", - "//chromeos/network", "//chromeos/services/machine_learning/public/cpp:stub", "//chromeos/system", "//chromeos/ui/frame:test_support",
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc index f8c049c..515ac6b 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.cc
@@ -2741,8 +2741,9 @@ class AutotestPrivateInstallBorealisFunction::InstallationObserver : public borealis::BorealisInstaller::Observer { public: - InstallationObserver(Profile* profile, - base::OnceCallback<void(bool)> completion_callback) + InstallationObserver( + Profile* profile, + base::OnceCallback<void(std::string)> completion_callback) : observation_(this), completion_callback_(std::move(completion_callback)) { observation_.Observe( @@ -2762,9 +2763,12 @@ void OnStateUpdated( borealis::BorealisInstaller::InstallingState new_state) override {} - void OnInstallationEnded(borealis::BorealisInstallResult result) override { + void OnInstallationEnded(borealis::BorealisInstallResult result, + const std::string& error_description) override { std::move(completion_callback_) - .Run(result == borealis::BorealisInstallResult::kSuccess); + .Run(result == borealis::BorealisInstallResult::kSuccess + ? "" + : "Failed to install Borealis: " + error_description); } void OnCancelInitiated() override {} @@ -2773,7 +2777,7 @@ base::ScopedObservation<borealis::BorealisInstaller, borealis::BorealisInstaller::Observer> observation_; - base::OnceCallback<void(bool)> completion_callback_; + base::OnceCallback<void(std::string)> completion_callback_; }; AutotestPrivateInstallBorealisFunction:: @@ -2791,11 +2795,12 @@ return RespondLater(); } -void AutotestPrivateInstallBorealisFunction::Complete(bool was_successful) { - if (was_successful) { +void AutotestPrivateInstallBorealisFunction::Complete( + std::string error_or_empty) { + if (error_or_empty.empty()) { Respond(NoArguments()); } else { - Respond(Error("Failed to install borealis")); + Respond(Error(error_or_empty)); } }
diff --git a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h index 5eb95e8..24d06d7 100644 --- a/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h +++ b/chrome/browser/chromeos/extensions/autotest_private/autotest_private_api.h
@@ -598,7 +598,7 @@ ~AutotestPrivateInstallBorealisFunction() override; ResponseAction Run() override; - void Complete(bool was_successful); + void Complete(std::string error_or_empty); std::unique_ptr<InstallationObserver> installation_observer_; };
diff --git a/chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc b/chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc index f484f40..ea3451c 100644 --- a/chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc +++ b/chrome/browser/chromeos/extensions/file_manager/file_manager_private_apitest.cc
@@ -42,7 +42,7 @@ #include "chrome/common/chrome_features.h" #include "chrome/common/extensions/api/file_system_provider_capabilities/file_system_provider_capabilities_handler.h" #include "chromeos/ash/components/dbus/concierge/concierge_service.pb.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dlp/dlp_client.h" #include "chromeos/dbus/dlp/dlp_service.pb.h" #include "components/drive/drive_pref_names.h"
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc index 2dfc2c7..c480da0 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
@@ -792,18 +792,21 @@ return; } - base::Value::Dict quotaMetadata; + api::file_manager_private::DriveQuotaMetadata quotaMetadata; - quotaMetadata.Set("userType", static_cast<int>(usage->user_type)); - quotaMetadata.Set("usedUserBytes", - static_cast<double>(usage->used_user_bytes)); - quotaMetadata.Set("totalUserBytes", - static_cast<double>(usage->total_user_bytes)); - quotaMetadata.Set("organizationLimitExceeded", - usage->organization_limit_exceeded); - quotaMetadata.Set("organizationName", usage->organization_name); + quotaMetadata.user_type = + usage->user_type == drivefs::mojom::UserType::kUnmanaged + ? api::file_manager_private::UserType::USER_TYPE_KUNMANAGED + : api::file_manager_private::UserType::USER_TYPE_KORGANIZATION; + quotaMetadata.used_user_bytes = static_cast<double>(usage->used_user_bytes); + quotaMetadata.total_user_bytes = static_cast<double>(usage->total_user_bytes); + quotaMetadata.organization_limit_exceeded = + usage->organization_limit_exceeded; + quotaMetadata.organization_name = usage->organization_name; - Respond(OneArgument(base::Value(std::move(quotaMetadata)))); + Respond(ArgumentList( + api::file_manager_private::GetDriveQuotaMetadata::Results::Create( + quotaMetadata))); } ExtensionFunction::ResponseAction
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc index 5bf8cb8..dbcf18d0b 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc
@@ -27,7 +27,7 @@ #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/api/file_manager_private.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "components/drive/event_logger.h" #include "components/services/unzip/content/unzip_service.h" #include "components/services/unzip/public/cpp/unzip.h"
diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_mount.h b/chrome/browser/chromeos/extensions/file_manager/private_api_mount.h index cc6f96f8..330500b0 100644 --- a/chrome/browser/chromeos/extensions/file_manager/private_api_mount.h +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_mount.h
@@ -11,7 +11,7 @@ #include <vector> #include "chrome/browser/chromeos/extensions/file_manager/logged_extension_function.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "components/drive/file_errors.h" #include "third_party/ced/src/util/encodings/encodings.h" #include "third_party/cros_system_api/dbus/cros-disks/dbus-constants.h"
diff --git a/chrome/browser/chromeos/extensions/file_manager/system_notification_manager_unittest.cc b/chrome/browser/chromeos/extensions/file_manager/system_notification_manager_unittest.cc index d4e24aaa..ffd17d45 100644 --- a/chrome/browser/chromeos/extensions/file_manager/system_notification_manager_unittest.cc +++ b/chrome/browser/chromeos/extensions/file_manager/system_notification_manager_unittest.cc
@@ -27,7 +27,7 @@ #include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_profile.h" #include "chrome/test/base/testing_profile_manager.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "content/public/test/browser_task_environment.h" #include "storage/browser/file_system/file_system_url.h" #include "storage/browser/quota/quota_manager_proxy.h"
diff --git a/chrome/browser/chromeos/extensions/vpn_provider/vpn_service.cc b/chrome/browser/chromeos/extensions/vpn_provider/vpn_service.cc index 208a601..868d3d8 100644 --- a/chrome/browser/chromeos/extensions/vpn_provider/vpn_service.cc +++ b/chrome/browser/chromeos/extensions/vpn_provider/vpn_service.cc
@@ -150,7 +150,9 @@ const std::string& extension_id, content::BrowserContext* browser_context) : extension_id_(extension_id), browser_context_(browser_context) { - VpnService::GetVpnService()->RegisterVpnServiceForExtension( + auto* service_remote = VpnService::GetVpnService(); + CHECK(service_remote); + service_remote->RegisterVpnServiceForExtension( extension_id, vpn_service_.BindNewPipeAndPassReceiver(), receiver_.BindNewPipeAndPassRemote()); } @@ -340,6 +342,7 @@ // CrosapiManager may not be initialized. // TODO(crbug.com/1326801): Assert it's only happening in tests. if (!crosapi::CrosapiManager::IsInitialized()) { + LOG(ERROR) << "CrosapiManager is not initialized."; return nullptr; } return crosapi::CrosapiManager::Get()->crosapi_ash()->vpn_service_ash(); @@ -355,13 +358,11 @@ mojo::Remote<crosapi::mojom::VpnServiceForExtension>& VpnService::GetVpnServiceForExtension(const std::string& extension_id) { - auto it = extension_id_to_service_.find(extension_id); - if (it == extension_id_to_service_.end()) { - it = extension_id_to_service_.insert( - it, {extension_id, std::make_unique<VpnServiceForExtension>( - extension_id, browser_context_)}); + auto& service = extension_id_to_service_[extension_id]; + if (!service) { + service = std::make_unique<VpnServiceForExtension>(extension_id, + browser_context_); } - const auto& service = it->second; return service->Proxy(); }
diff --git a/chrome/browser/chromeos/fileapi/file_system_backend.cc b/chrome/browser/chromeos/fileapi/file_system_backend.cc index b5509ee0..78cb8d1 100644 --- a/chrome/browser/chromeos/fileapi/file_system_backend.cc +++ b/chrome/browser/chromeos/fileapi/file_system_backend.cc
@@ -23,7 +23,7 @@ #include "chrome/browser/chromeos/fileapi/observable_file_system_operation_impl.h" #include "chrome/browser/media_galleries/fileapi/media_file_system_backend.h" #include "chrome/common/url_constants.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "storage/browser/file_system/async_file_util.h" #include "storage/browser/file_system/external_mount_points.h" #include "storage/browser/file_system/file_stream_reader.h"
diff --git a/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc b/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc index 9d18a80e..270d6c1 100644 --- a/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc +++ b/chrome/browser/chromeos/fileapi/file_system_backend_unittest.cc
@@ -10,7 +10,7 @@ #include "base/files/file_path.h" #include "chrome/browser/chromeos/fileapi/file_system_backend_delegate.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "extensions/common/constants.h" #include "extensions/common/extension.h" #include "storage/browser/file_system/external_mount_points.h"
diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingButtonController.java b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingButtonController.java index 2768a58..0cfa08f 100644 --- a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingButtonController.java +++ b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingButtonController.java
@@ -63,9 +63,16 @@ @Override public ButtonData get(@Nullable Tab tab) { maybeSetIphCommandBuilder(tab); + maybeSetActionChipResourceId(); return mButtonData; } + private void maybeSetActionChipResourceId() { + if (FeatureList.isInitialized() && AdaptiveToolbarFeatures.shouldShowActionChip()) { + mButtonData.updateActionChipResourceId(R.string.enable_price_tracking_menu_item); + } + } + @Override public void destroy() { mObservers.clear();
diff --git a/chrome/browser/devtools/devtools_browsertest.cc b/chrome/browser/devtools/devtools_browsertest.cc index fdfb755..72883030 100644 --- a/chrome/browser/devtools/devtools_browsertest.cc +++ b/chrome/browser/devtools/devtools_browsertest.cc
@@ -2420,9 +2420,7 @@ std::string data(content_); std::move(callback).Run(base::RefCountedString::TakeString(&data)); } - std::string GetMimeType(const std::string& path) override { - return "text/html"; - } + std::string GetMimeType(const GURL& url) override { return "text/html"; } bool ShouldAddContentSecurityPolicy() override { return false; } private:
diff --git a/chrome/browser/download/download_prefs.cc b/chrome/browser/download/download_prefs.cc index ade4a6d7..d2259c3 100644 --- a/chrome/browser/download/download_prefs.cc +++ b/chrome/browser/download/download_prefs.cc
@@ -52,7 +52,7 @@ #include "chrome/browser/ash/drive/drive_integration_service.h" #include "chrome/browser/ash/drive/file_system_util.h" #include "chrome/browser/ash/file_manager/path_util.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #elif BUILDFLAG(IS_CHROMEOS_LACROS) #include "chrome/common/chrome_paths_lacros.h" #endif
diff --git a/chrome/browser/download/download_prefs_unittest.cc b/chrome/browser/download/download_prefs_unittest.cc index b88c971..c09c49c 100644 --- a/chrome/browser/download/download_prefs_unittest.cc +++ b/chrome/browser/download/download_prefs_unittest.cc
@@ -29,7 +29,7 @@ #include "chrome/browser/ash/file_manager/path_util.h" #include "chrome/browser/ash/login/users/fake_chrome_user_manager.h" #include "chrome/browser/ash/profiles/profile_helper.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "components/drive/drive_pref_names.h" #endif // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/download/download_shelf_context_menu.cc b/chrome/browser/download/download_shelf_context_menu.cc index 8a2f9d8..76c240d 100644 --- a/chrome/browser/download/download_shelf_context_menu.cc +++ b/chrome/browser/download/download_shelf_context_menu.cc
@@ -52,7 +52,7 @@ for (int command_int = 1; command_int < DownloadCommands::Command::MAX; command_int++) { - if (model->GetIndexOfCommandId(command_int) != -1 && + if (model->GetIndexOfCommandId(command_int).has_value() && IsCommandIdEnabled(command_int)) { DownloadCommands::Command download_command = static_cast<DownloadCommands::Command>(command_int);
diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn index e5741bb..9a61d5c 100644 --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn
@@ -1161,18 +1161,18 @@ "//chrome/browser/ui/webui/settings/chromeos/constants:mojom", "//chromeos/ash/components/dbus/cicerone:cicerone", "//chromeos/ash/components/dbus/cicerone:cicerone_proto", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/image_burner", "//chromeos/ash/components/dbus/update_engine", + "//chromeos/ash/components/network", "//chromeos/ash/services/assistant/public/cpp", "//chromeos/components/remote_apps/mojom", "//chromeos/dbus", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/cryptohome", "//chromeos/dbus/util", "//chromeos/language/language_packs", "//chromeos/language/public/mojom", "//chromeos/login/login_state", - "//chromeos/network", "//chromeos/process_proxy", "//chromeos/services/machine_learning/public/cpp", "//chromeos/services/machine_learning/public/mojom",
diff --git a/chrome/browser/extensions/api/context_menus/context_menu_apitest.cc b/chrome/browser/extensions/api/context_menus/context_menu_apitest.cc index e15e657..d20b85b 100644 --- a/chrome/browser/extensions/api/context_menus/context_menu_apitest.cc +++ b/chrome/browser/extensions/api/context_menus/context_menu_apitest.cc
@@ -123,8 +123,7 @@ class ExtensionContextMenuVisibilityApiTest : public ExtensionContextMenuApiTest { public: - ExtensionContextMenuVisibilityApiTest() - : top_level_model_(nullptr), menu_(nullptr), top_level_index_(-1) {} + ExtensionContextMenuVisibilityApiTest() = default; ExtensionContextMenuVisibilityApiTest( const ExtensionContextMenuVisibilityApiTest&) = delete; @@ -155,7 +154,7 @@ menu_->extension_items().ConvertToExtensionsCustomCommandId(0), &top_level_model_, &top_level_index_); - EXPECT_GT(top_level_index(), 0); + EXPECT_GT(top_level_index(), 0u); return valid_setup; } @@ -175,14 +174,14 @@ void VerifyNumExtensionItemsInMenuModel(int num_items, ui::MenuModel::ItemType type) { int num_found = 0; - for (int i = 0; i < top_level_model_->GetItemCount(); i++) { + for (size_t i = 0; i < top_level_model_->GetItemCount(); ++i) { int command_id = top_level_model_->GetCommandIdAt(i); if (ContextMenuMatcher::IsExtensionsCustomCommandId(command_id) && top_level_model_->GetTypeAt(i) == type) { - num_found++; + ++num_found; } } - ASSERT_TRUE(num_found == num_items); + ASSERT_EQ(num_found, num_items); } // Verifies that the context menu is valid and contains the given number of @@ -196,7 +195,7 @@ // Verifies a context menu item's visibility, title, and item type. void VerifyMenuItem(const std::string& title, ui::MenuModel* model, - int index, + size_t index, ui::MenuModel::ItemType type, bool visible) { EXPECT_EQ(base::ASCIIToUTF16(title), model->GetLabelAt(index)); @@ -204,13 +203,13 @@ EXPECT_EQ(visible, model->IsVisibleAt(index)); } - int top_level_index() { return top_level_index_; } + size_t top_level_index() const { return top_level_index_; } TestRenderViewContextMenu* menu() { return menu_.get(); } const Extension* extension() { return extension_; } - ui::MenuModel* top_level_model_; + ui::MenuModel* top_level_model_ = nullptr; private: content::WebContents* GetBackgroundPage(const std::string& extension_id) { @@ -221,9 +220,9 @@ ProcessManager* process_manager() { return ProcessManager::Get(profile()); } - raw_ptr<const Extension> extension_; + raw_ptr<const Extension> extension_ = nullptr; std::unique_ptr<TestRenderViewContextMenu> menu_; - int top_level_index_; + size_t top_level_index_ = 0; }; // Tests showing a single visible menu item in the top-level menu model, which @@ -287,7 +286,7 @@ ui::MenuModel* submodel = top_level_model_->GetSubmenuModelAt(top_level_index()); ASSERT_TRUE(submodel); - EXPECT_EQ(2, submodel->GetItemCount()); + EXPECT_EQ(2u, submodel->GetItemCount()); VerifyMenuItem("child1", submodel, 0, ui::MenuModel::TYPE_COMMAND, false); VerifyMenuItem("child2", submodel, 1, ui::MenuModel::TYPE_COMMAND, false); @@ -317,7 +316,7 @@ ui::MenuModel* submodel = top_level_model_->GetSubmenuModelAt(top_level_index()); ASSERT_TRUE(submodel); - EXPECT_EQ(2, submodel->GetItemCount()); + EXPECT_EQ(2u, submodel->GetItemCount()); // Though the children's internal visibility state remains unchanged, the ui // code will hide the children if the parent is hidden. @@ -347,7 +346,7 @@ ui::MenuModel* submodel = top_level_model_->GetSubmenuModelAt(top_level_index()); ASSERT_TRUE(submodel); - EXPECT_EQ(2, submodel->GetItemCount()); + EXPECT_EQ(2u, submodel->GetItemCount()); VerifyMenuItem("child1", submodel, 0, ui::MenuModel::TYPE_COMMAND, false); VerifyMenuItem("child2", submodel, 1, ui::MenuModel::TYPE_COMMAND, false); @@ -375,7 +374,7 @@ ui::MenuModel* submodel = top_level_model_->GetSubmenuModelAt(top_level_index()); ASSERT_TRUE(submodel); - EXPECT_EQ(2, submodel->GetItemCount()); + EXPECT_EQ(2u, submodel->GetItemCount()); VerifyMenuItem("child1", submodel, 0, ui::MenuModel::TYPE_COMMAND, true); VerifyMenuItem("child2", submodel, 1, ui::MenuModel::TYPE_COMMAND, false); @@ -407,7 +406,7 @@ ui::MenuModel* submodel = top_level_model_->GetSubmenuModelAt(top_level_index()); ASSERT_TRUE(submodel); - EXPECT_EQ(1, submodel->GetItemCount()); + EXPECT_EQ(1u, submodel->GetItemCount()); // When a parent item is specified by the developer (as opposed to generated), // its visibility is determined by the specified state. @@ -415,7 +414,7 @@ submodel = submodel->GetSubmenuModelAt(0); ASSERT_TRUE(submodel); - EXPECT_EQ(2, submodel->GetItemCount()); + EXPECT_EQ(2u, submodel->GetItemCount()); VerifyMenuItem("child2", submodel, 0, ui::MenuModel::TYPE_COMMAND, false); VerifyMenuItem("child3", submodel, 1, ui::MenuModel::TYPE_COMMAND, false); @@ -443,7 +442,7 @@ ui::MenuModel* submodel = top_level_model_->GetSubmenuModelAt(top_level_index()); ASSERT_TRUE(submodel); - EXPECT_EQ(3, submodel->GetItemCount()); + EXPECT_EQ(3u, submodel->GetItemCount()); VerifyMenuItem("item1", submodel, 0, ui::MenuModel::TYPE_COMMAND, false); VerifyMenuItem("item2", submodel, 1, ui::MenuModel::TYPE_COMMAND, false); @@ -472,7 +471,7 @@ ui::MenuModel* submodel = top_level_model_->GetSubmenuModelAt(top_level_index()); ASSERT_TRUE(submodel); - EXPECT_EQ(1, submodel->GetItemCount()); + EXPECT_EQ(1u, submodel->GetItemCount()); VerifyMenuItem("child1", submodel, 0, ui::MenuModel::TYPE_COMMAND, false); // Update child1 to visible. @@ -526,7 +525,7 @@ ui::MenuModel* submodel = top_level_model_->GetSubmenuModelAt(top_level_index()); ASSERT_TRUE(submodel); - EXPECT_EQ(3, submodel->GetItemCount()); + EXPECT_EQ(3u, submodel->GetItemCount()); VerifyMenuItem("item1", submodel, 0, ui::MenuModel::TYPE_COMMAND, true); VerifyMenuItem("item2", submodel, 1, ui::MenuModel::TYPE_COMMAND, true); @@ -534,7 +533,7 @@ ui::MenuModel* item3_submodel = submodel->GetSubmenuModelAt(2); ASSERT_TRUE(item3_submodel); - EXPECT_EQ(2, item3_submodel->GetItemCount()); + EXPECT_EQ(2u, item3_submodel->GetItemCount()); // Though the children's internal visibility state remains unchanged, the ui // code will hide the children if the parent is hidden.
diff --git a/chrome/browser/extensions/api/context_menus/extension_context_menu_browsertest.cc b/chrome/browser/extensions/api/context_menus/extension_context_menu_browsertest.cc index c226e5bf..7507e8e 100644 --- a/chrome/browser/extensions/api/context_menus/extension_context_menu_browsertest.cc +++ b/chrome/browser/extensions/api/context_menus/extension_context_menu_browsertest.cc
@@ -216,7 +216,7 @@ return false; MenuModel* model = nullptr; - int index = -1; + size_t index = 0; if (!menu->GetMenuModelAndItemIndex(command_id, &model, &index)) { return false; } @@ -656,7 +656,7 @@ std::unique_ptr<TestRenderViewContextMenu> menu( TestRenderViewContextMenu::Create(GetWebContents(), url, GURL(), GURL())); - int index = 0; + size_t index = 0; MenuModel* model = nullptr; ASSERT_TRUE(menu->GetMenuModelAndItemIndex( @@ -676,7 +676,7 @@ static void ExpectLabelAndType(const char* expected_label, MenuModel::ItemType expected_type, const MenuModel& menu, - int index) { + size_t index) { EXPECT_EQ(expected_type, menu.GetTypeAt(index)); EXPECT_EQ(base::UTF8ToUTF16(expected_label), menu.GetLabelAt(index)); } @@ -698,11 +698,11 @@ // --separator-- // normal3 - int index = 0; + size_t index = 0; #if BUILDFLAG(IS_CHROMEOS_ASH) - ASSERT_EQ(7, menu.GetItemCount()); + ASSERT_EQ(7u, menu.GetItemCount()); #else - ASSERT_EQ(11, menu.GetItemCount()); + ASSERT_EQ(11u, menu.GetItemCount()); #endif // BUILDFLAG(IS_CHROMEOS_ASH) ExpectLabelAndType("radio1", MenuModel::TYPE_RADIO, menu, index++); ExpectLabelAndType("radio2", MenuModel::TYPE_RADIO, menu, index++); @@ -747,7 +747,7 @@ // The top-level item should be an "automagic parent" with the extension's // name. MenuModel* model = nullptr; - int index = 0; + size_t index = 0; std::u16string label; ASSERT_TRUE(menu->GetMenuModelAndItemIndex( ContextMenuMatcher::ConvertToExtensionsCustomCommandId(0),
diff --git a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_apitest.cc b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_apitest.cc index 14017ec4..214ffd7f1 100644 --- a/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_apitest.cc +++ b/chrome/browser/extensions/api/declarative_net_request/declarative_net_request_apitest.cc
@@ -156,22 +156,11 @@ class DeclarativeNetRequestApiPrerenderingTest : public DeclarativeNetRequestLazyApiTest { public: - DeclarativeNetRequestApiPrerenderingTest() - : prerender_helper_(base::BindRepeating( - &DeclarativeNetRequestApiPrerenderingTest::GetActiveWebContents, - base::Unretained(this))) {} + DeclarativeNetRequestApiPrerenderingTest() = default; ~DeclarativeNetRequestApiPrerenderingTest() override = default; private: - content::WebContents* GetActiveWebContents() { - return browser()->tab_strip_model()->GetWebContentsAt(0); - } - void SetUp() override { - prerender_helper_.SetUp(embedded_test_server()); - DeclarativeNetRequestApiTest::SetUp(); - } - - content::test::PrerenderTestHelper prerender_helper_; + content::test::ScopedPrerenderFeatureList scoped_feature_list_; }; INSTANTIATE_TEST_SUITE_P(PersistentBackground,
diff --git a/chrome/browser/extensions/api/identity/identity_apitest.cc b/chrome/browser/extensions/api/identity/identity_apitest.cc index 92e2908..e1d8a93 100644 --- a/chrome/browser/extensions/api/identity/identity_apitest.cc +++ b/chrome/browser/extensions/api/identity/identity_apitest.cc
@@ -128,7 +128,7 @@ default_network->guid(), ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE, 204); - chromeos::network_portal_detector::InitializeForTesting(portal_detector); + ash::network_portal_detector::InitializeForTesting(portal_detector); } #endif
diff --git a/chrome/browser/extensions/api/scripting/scripting_apitest.cc b/chrome/browser/extensions/api/scripting/scripting_apitest.cc index 69168ad..08d10cc 100644 --- a/chrome/browser/extensions/api/scripting/scripting_apitest.cc +++ b/chrome/browser/extensions/api/scripting/scripting_apitest.cc
@@ -511,17 +511,11 @@ class ScriptingAPIPrerenderingTest : public ScriptingAPITest { protected: - ScriptingAPIPrerenderingTest() - : prerender_helper_( - base::BindRepeating(&ScriptingAPIPrerenderingTest::GetWebContents, - base::Unretained(this))) {} + ScriptingAPIPrerenderingTest() = default; ~ScriptingAPIPrerenderingTest() override = default; private: - content::WebContents* GetWebContents() { - return browser()->tab_strip_model()->GetWebContentsAt(0); - } - content::test::PrerenderTestHelper prerender_helper_; + content::test::ScopedPrerenderFeatureList scoped_feature_list_; }; IN_PROC_BROWSER_TEST_F(ScriptingAPIPrerenderingTest, Basic) {
diff --git a/chrome/browser/extensions/context_menu_matcher.cc b/chrome/browser/extensions/context_menu_matcher.cc index dcaa4f6..3a5b2d8c 100644 --- a/chrome/browser/extensions/context_menu_matcher.cc +++ b/chrome/browser/extensions/context_menu_matcher.cc
@@ -149,7 +149,7 @@ } bool ContextMenuMatcher::HasVisibleItems(ui::MenuModel* menu_model) const { - for (int index = 0; index < menu_model->GetItemCount(); index++) { + for (size_t index = 0; index < menu_model->GetItemCount(); ++index) { if (!menu_model->IsVisibleAt(index)) continue; @@ -209,13 +209,13 @@ // be displayed only if it has an invisible submenu item. if (!item && ContextMenuMatcher::IsExtensionsCustomCommandId(command_id)) { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(command_id, &model, &index)) { ui::MenuModel* submenu_model = model->GetSubmenuModelAt(index); // TODO(ghazale): Find out why submenu_model might be null. In other // words, in which circumstance it can be an extensions custom command ID - // which does not have an associated item, but it's submenu_model is null. + // which does not have an associated item, but its submenu_model is null. if (submenu_model) return HasVisibleItems(submenu_model); } @@ -379,13 +379,13 @@ void ContextMenuMatcher::SetExtensionIcon(const std::string& extension_id) { MenuManager* menu_manager = MenuManager::Get(browser_context_); - int index = menu_model_->GetItemCount() - 1; - DCHECK_GE(index, 0); + size_t count = menu_model_->GetItemCount(); + DCHECK_GT(count, 0u); gfx::Image icon = menu_manager->GetIconForExtension(extension_id); DCHECK_EQ(gfx::kFaviconSize, icon.Width()); DCHECK_EQ(gfx::kFaviconSize, icon.Height()); - menu_model_->SetIcon(index, ui::ImageModel::FromImage(icon)); + menu_model_->SetIcon(count - 1, ui::ImageModel::FromImage(icon)); } } // namespace extensions
diff --git a/chrome/browser/extensions/extension_context_menu_model.cc b/chrome/browser/extensions/extension_context_menu_model.cc index 8c21e13..0ccd4872 100644 --- a/chrome/browser/extensions/extension_context_menu_model.cc +++ b/chrome/browser/extensions/extension_context_menu_model.cc
@@ -435,7 +435,7 @@ : IDS_EXTENSIONS_UNINSTALL; AddItem(UNINSTALL, l10n_util::GetStringUTF16(message_id)); if (is_required_by_policy) { - int uninstall_index = GetIndexOfCommandId(UNINSTALL); + size_t uninstall_index = GetIndexOfCommandId(UNINSTALL).value(); // TODO (kylixrd): Investigate the usage of the hard-coded color. SetIcon(uninstall_index, ui::ImageModel::FromVectorIcon(vector_icons::kBusinessIcon, @@ -450,7 +450,8 @@ DCHECK_NE(-1, visibility_string_id); AddItemWithStringId(TOGGLE_VISIBILITY, visibility_string_id); if (IsExtensionForcePinned(*extension, profile_)) { - int toggle_visibility_index = GetIndexOfCommandId(TOGGLE_VISIBILITY); + size_t toggle_visibility_index = + GetIndexOfCommandId(TOGGLE_VISIBILITY).value(); SetIcon(toggle_visibility_index, ui::ImageModel::FromVectorIcon(vector_icons::kBusinessIcon, ui::kColorIcon, 16));
diff --git a/chrome/browser/extensions/extension_context_menu_model_unittest.cc b/chrome/browser/extensions/extension_context_menu_model_unittest.cc index b49ea6a..9301e54 100644 --- a/chrome/browser/extensions/extension_context_menu_model_unittest.cc +++ b/chrome/browser/extensions/extension_context_menu_model_unittest.cc
@@ -199,7 +199,7 @@ std::u16string expected_label = base::ASCIIToUTF16(kTestExtensionItemLabel); int num_items_found = 0; int num_custom_found = 0; - for (int i = 0; i < model.GetItemCount(); ++i) { + for (size_t i = 0; i < model.GetItemCount(); ++i) { std::u16string actual_label = model.GetLabelAt(i); int command_id = model.GetCommandIdAt(i); // If the command id is not visible, it should not be counted. @@ -226,7 +226,7 @@ void VerifyItems(const ExtensionContextMenuModel& model, std::vector<std::string> item_number) { size_t j = 0; - for (int i = 0; i < model.GetItemCount(); i++) { + for (size_t i = 0; i < model.GetItemCount(); i++) { int command_id = model.GetCommandIdAt(i); if (ContextMenuMatcher::IsExtensionsCustomCommandId(command_id) && model.IsCommandIdVisible(command_id)) { @@ -377,7 +377,7 @@ ExtensionContextMenuModelTest::GetCommandState( const ExtensionContextMenuModel& menu, int command_id) const { - bool is_present = menu.GetIndexOfCommandId(command_id) != -1; + bool is_present = menu.GetIndexOfCommandId(command_id).has_value(); bool is_visible = menu.IsCommandIdVisible(command_id); // The command is absent if the menu entry is not present, or the entry is @@ -408,11 +408,12 @@ return CommandState::kAbsent; ui::MenuModel* submenu = menu.GetSubmenuModelAt( - menu.GetIndexOfCommandId(ExtensionContextMenuModel::PAGE_ACCESS_SUBMENU)); + menu.GetIndexOfCommandId(ExtensionContextMenuModel::PAGE_ACCESS_SUBMENU) + .value()); DCHECK(submenu); ui::MenuModel** menu_to_search = &submenu; - int index_unused = 0; + size_t index_unused = 0; if (!ui::MenuModel::GetModelAndIndexForCommandId(command, menu_to_search, &index_unused)) { return CommandState::kAbsent; @@ -493,8 +494,8 @@ // uninstallation should be disabled. EXPECT_EQ(GetCommandState(menu, ExtensionContextMenuModel::UNINSTALL), CommandState::kDisabled); - int uninstall_index = - menu.GetIndexOfCommandId(ExtensionContextMenuModel::UNINSTALL); + size_t uninstall_index = + menu.GetIndexOfCommandId(ExtensionContextMenuModel::UNINSTALL).value(); // There should also be an icon to visually indicate why uninstallation is // forbidden. ui::ImageModel icon = menu.GetIconAt(uninstall_index); @@ -608,8 +609,9 @@ ExtensionContextMenuModel::PINNED, nullptr, /* can_show_icon_in_toolbar=*/true, ContextMenuSource::kMenuItem); - EXPECT_EQ(-1, menu.GetIndexOfCommandId( - ExtensionContextMenuModel::TOGGLE_VISIBILITY)); + EXPECT_FALSE( + menu.GetIndexOfCommandId(ExtensionContextMenuModel::TOGGLE_VISIBILITY) + .has_value()); EXPECT_EQ( GetCommandState(menu, ExtensionContextMenuModel::TOGGLE_VISIBILITY), CommandState::kAbsent); @@ -750,18 +752,18 @@ ExtensionContextMenuModel menu(page_action, browser, ExtensionContextMenuModel::PINNED, nullptr, true, ContextMenuSource::kToolbarAction); - int index = menu.GetIndexOfCommandId(visibility_command); - EXPECT_NE(-1, index); - EXPECT_EQ(unpin_string, menu.GetLabelAt(index)); + absl::optional<size_t> index = menu.GetIndexOfCommandId(visibility_command); + ASSERT_TRUE(index.has_value()); + EXPECT_EQ(unpin_string, menu.GetLabelAt(index.value())); } { ExtensionContextMenuModel menu(browser_action, browser, ExtensionContextMenuModel::PINNED, nullptr, true, ContextMenuSource::kToolbarAction); - int index = menu.GetIndexOfCommandId(visibility_command); - EXPECT_NE(-1, index); - EXPECT_EQ(unpin_string, menu.GetLabelAt(index)); + absl::optional<size_t> index = menu.GetIndexOfCommandId(visibility_command); + ASSERT_TRUE(index.has_value()); + EXPECT_EQ(unpin_string, menu.GetLabelAt(index.value())); // Pin before unpinning. ToolbarActionsModel::Get(profile())->SetActionVisibility( @@ -774,9 +776,9 @@ ExtensionContextMenuModel menu(browser_action, browser, ExtensionContextMenuModel::UNPINNED, nullptr, true, ContextMenuSource::kToolbarAction); - int index = menu.GetIndexOfCommandId(visibility_command); - EXPECT_NE(-1, index); - EXPECT_EQ(pin_string, menu.GetLabelAt(index)); + absl::optional<size_t> index = menu.GetIndexOfCommandId(visibility_command); + ASSERT_TRUE(index.has_value()); + EXPECT_EQ(pin_string, menu.GetLabelAt(index.value())); } { @@ -786,9 +788,9 @@ browser_action, browser, ExtensionContextMenuModel::TRANSITIVELY_VISIBLE, nullptr, true, ContextMenuSource::kToolbarAction); - int index = menu.GetIndexOfCommandId(visibility_command); - EXPECT_NE(-1, index); - EXPECT_EQ(pin_string, menu.GetLabelAt(index)); + absl::optional<size_t> index = menu.GetIndexOfCommandId(visibility_command); + ASSERT_TRUE(index.has_value()); + EXPECT_EQ(pin_string, menu.GetLabelAt(index.value())); } } @@ -831,10 +833,10 @@ ExtensionContextMenuModel menu(extension, browser, ExtensionContextMenuModel::PINNED, nullptr, true, ContextMenuSource::kToolbarAction); - int index = menu.GetIndexOfCommandId(visibility_command); - EXPECT_NE(-1, index); - EXPECT_TRUE(menu.IsEnabledAt(index)); - EXPECT_EQ(unpin_string, menu.GetLabelAt(index)); + absl::optional<size_t> index = menu.GetIndexOfCommandId(visibility_command); + ASSERT_TRUE(index.has_value()); + EXPECT_TRUE(menu.IsEnabledAt(index.value())); + EXPECT_EQ(unpin_string, menu.GetLabelAt(index.value())); } { @@ -842,10 +844,10 @@ ExtensionContextMenuModel menu(force_pinned_extension, browser, ExtensionContextMenuModel::PINNED, nullptr, true, ContextMenuSource::kToolbarAction); - int index = menu.GetIndexOfCommandId(visibility_command); - EXPECT_NE(-1, index); - EXPECT_FALSE(menu.IsEnabledAt(index)); - EXPECT_EQ(force_pinned_string, menu.GetLabelAt(index)); + absl::optional<size_t> index = menu.GetIndexOfCommandId(visibility_command); + ASSERT_TRUE(index.has_value()); + EXPECT_FALSE(menu.IsEnabledAt(index.value())); + EXPECT_EQ(force_pinned_string, menu.GetLabelAt(index.value())); } } @@ -1119,8 +1121,10 @@ ExtensionContextMenuModel single_host_menu( single_host_extension, GetBrowser(), ExtensionContextMenuModel::PINNED, nullptr, true, ContextMenuSource::kToolbarAction); - EXPECT_NE(-1, single_host_menu.GetIndexOfCommandId( - ExtensionContextMenuModel::PAGE_ACCESS_SUBMENU)); + EXPECT_TRUE( + single_host_menu + .GetIndexOfCommandId(ExtensionContextMenuModel::PAGE_ACCESS_SUBMENU) + .has_value()); } // Tests different permission patterns when the site setting is set to
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json index a66f96c..fec8717a 100644 --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json
@@ -632,7 +632,7 @@ { "name": "bluetooth-revamp", "owners": [ "khorimoto", "cros-connectivity@google.com" ], - "expiry_milestone": 102 + "expiry_milestone": 106 }, { "name": "bluetooth-sessionized-metrics", @@ -1015,6 +1015,11 @@ "expiry_milestone": 83 }, { + "name": "contextual-page-actions", + "owners": [ "shaktisahu@google.com", "salg@google.com" ], + "expiry_milestone": 109 + }, + { "name": "contextual-page-actions-with-price-tracking", "owners": [ "shaktisahu@google.com", "salg@google.com" ], "expiry_milestone": 109
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc index 2e3cf77..01480df 100644 --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc
@@ -1530,6 +1530,10 @@ const char kGpuRasterizationName[] = "GPU rasterization"; const char kGpuRasterizationDescription[] = "Use GPU to rasterize web content."; +const char kContextualPageActionsName[] = "Contextual page actions"; +const char kContextualPageActionsDescription[] = + "Enables contextual page action feature."; + const char kContextualPageActionsWithPriceTrackingName[] = "Contextual page actions with price tracking"; const char kContextualPageActionsWithPriceTrackingDescription[] =
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h index 3e39c17c..c6e14e5 100644 --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h
@@ -850,6 +850,9 @@ extern const char kCastForceEnableRemotingQueryName[]; extern const char kCastForceEnableRemotingQueryDescription[]; +extern const char kContextualPageActionsName[]; +extern const char kContextualPageActionsDescription[]; + extern const char kContextualPageActionsWithPriceTrackingName[]; extern const char kContextualPageActionsWithPriceTrackingDescription[];
diff --git a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc index fedb07a..e81b790 100644 --- a/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc +++ b/chrome/browser/guest_view/web_view/chrome_web_view_guest_delegate.cc
@@ -78,7 +78,7 @@ std::unique_ptr<base::ListValue> ChromeWebViewGuestDelegate::MenuModelToValue( const ui::SimpleMenuModel& menu_model) { std::unique_ptr<base::ListValue> items(new base::ListValue()); - for (int i = 0; i < menu_model.GetItemCount(); ++i) { + for (size_t i = 0; i < menu_model.GetItemCount(); ++i) { base::Value::Dict item_value; // TODO(lazyboy): We need to expose some kind of enum equivalent of // |command_id| instead of plain integers.
diff --git a/chrome/browser/media/router/discovery/BUILD.gn b/chrome/browser/media/router/discovery/BUILD.gn index 75b167a..809c4f0 100644 --- a/chrome/browser/media/router/discovery/BUILD.gn +++ b/chrome/browser/media/router/discovery/BUILD.gn
@@ -84,7 +84,7 @@ } if (is_chromeos_ash) { - deps += [ "//chromeos/network" ] + deps += [ "//chromeos/ash/components/network" ] } if (is_posix) {
diff --git a/chrome/browser/policy/BUILD.gn b/chrome/browser/policy/BUILD.gn index 0ffc7c4..1b43d99 100644 --- a/chrome/browser/policy/BUILD.gn +++ b/chrome/browser/policy/BUILD.gn
@@ -90,7 +90,7 @@ "//ash/components/tpm", "//ash/constants:constants", "//base", - "//chromeos/network:network", + "//chromeos/ash/components/network", "//chromeos/system:system", "//components/policy/core/common:common_constants", "//components/user_manager:user_manager",
diff --git a/chrome/browser/policy/networking/network_configuration_updater_ash_unittest.cc b/chrome/browser/policy/networking/network_configuration_updater_ash_unittest.cc index c64b2c8..41dd14c 100644 --- a/chrome/browser/policy/networking/network_configuration_updater_ash_unittest.cc +++ b/chrome/browser/policy/networking/network_configuration_updater_ash_unittest.cc
@@ -119,7 +119,7 @@ bool mac_addr_randomization_ = false; }; -class FakeCertificateImporter : public chromeos::onc::CertificateImporter { +class FakeCertificateImporter : public ash::onc::CertificateImporter { public: using OncParsedCertificates = chromeos::onc::OncParsedCertificates; @@ -433,7 +433,7 @@ // continues to point to that instance but // |client_certificate_importer_owned_| is released. FakeCertificateImporter* certificate_importer_; - std::unique_ptr<chromeos::onc::CertificateImporter> + std::unique_ptr<ash::onc::CertificateImporter> client_certificate_importer_owned_; StrictMock<MockConfigurationPolicyProvider> provider_;
diff --git a/chrome/browser/policy/networking/user_network_configuration_updater_ash.cc b/chrome/browser/policy/networking/user_network_configuration_updater_ash.cc index 000025c..2f4fa6ca 100644 --- a/chrome/browser/policy/networking/user_network_configuration_updater_ash.cc +++ b/chrome/browser/policy/networking/user_network_configuration_updater_ash.cc
@@ -70,7 +70,7 @@ } void UserNetworkConfigurationUpdaterAsh::SetClientCertificateImporterForTest( - std::unique_ptr<chromeos::onc::CertificateImporter> + std::unique_ptr<ash::onc::CertificateImporter> client_certificate_importer) { SetClientCertificateImporter(std::move(client_certificate_importer)); } @@ -134,7 +134,7 @@ // user-imported networks (through chrome://network) because those currently // don't use the ManagedNetworkConfigurationHandler (b/235297258). network_config_handler_->SetProfileWideVariableExpansions( - user.username_hash(), chromeos::onc::GetVariableExpansionsForUser(&user)); + user.username_hash(), ash::onc::GetVariableExpansionsForUser(&user)); } void UserNetworkConfigurationUpdaterAsh::ImportClientCertificates() { @@ -157,7 +157,7 @@ // Call on UserSessionManager to send the user's password to session manager // if the password substitution variable exists in the ONC. bool save_password = - chromeos::onc::HasUserPasswordSubsitutionVariable(network_configs_onc); + ash::onc::HasUserPasswordSubsitutionVariable(network_configs_onc); ash::UserSessionManager::GetInstance()->VoteForSavingLoginPassword( ash::UserSessionManager::PasswordConsumingService::kNetwork, save_password); @@ -195,12 +195,12 @@ net::NSSCertDatabase* database) { DCHECK(database); SetClientCertificateImporter( - std::make_unique<chromeos::onc::CertificateImporterImpl>( + std::make_unique<ash::onc::CertificateImporterImpl>( content::GetIOThreadTaskRunner({}), database)); } void UserNetworkConfigurationUpdaterAsh::SetClientCertificateImporter( - std::unique_ptr<chromeos::onc::CertificateImporter> + std::unique_ptr<ash::onc::CertificateImporter> client_certificate_importer) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); bool initial_client_certificate_importer =
diff --git a/chrome/browser/policy/networking/user_network_configuration_updater_ash.h b/chrome/browser/policy/networking/user_network_configuration_updater_ash.h index 23039c95..1c59670b 100644 --- a/chrome/browser/policy/networking/user_network_configuration_updater_ash.h +++ b/chrome/browser/policy/networking/user_network_configuration_updater_ash.h
@@ -18,6 +18,10 @@ class Profile; +namespace ash::onc { +class CertificateImporter; +} + namespace base { class ListValue; } @@ -34,10 +38,6 @@ namespace chromeos { class ManagedNetworkConfigurationHandler; - -namespace onc { -class CertificateImporter; -} } // namespace chromeos namespace policy { @@ -74,7 +74,7 @@ // Note that the CertificateImporter is only used for importing client // certificates. void SetClientCertificateImporterForTest( - std::unique_ptr<chromeos::onc::CertificateImporter> certificate_importer); + std::unique_ptr<ash::onc::CertificateImporter> certificate_importer); // Determines if |policy_map| contains a OpenNetworkConfiguration policy that // mandates that at least one additional certificate should be used and @@ -111,7 +111,7 @@ // Sets the certificate importer that should be used to import certificate // policies. If there is |pending_certificates_onc_|, it gets imported. void SetClientCertificateImporter( - std::unique_ptr<chromeos::onc::CertificateImporter> certificate_importer); + std::unique_ptr<ash::onc::CertificateImporter> certificate_importer); // The user for whom the user policy will be applied. const raw_ptr<const user_manager::User> user_; @@ -122,8 +122,7 @@ // Certificate importer to be used for importing policy defined client // certificates. Set by |SetClientCertificateImporter|. - std::unique_ptr<chromeos::onc::CertificateImporter> - client_certificate_importer_; + std::unique_ptr<ash::onc::CertificateImporter> client_certificate_importer_; content::NotificationRegistrar registrar_;
diff --git a/chrome/browser/profiles/profile_window_browsertest.cc b/chrome/browser/profiles/profile_window_browsertest.cc index b8671de..5361a3e 100644 --- a/chrome/browser/profiles/profile_window_browsertest.cc +++ b/chrome/browser/profiles/profile_window_browsertest.cc
@@ -296,12 +296,14 @@ // Verify the normal browser has a bookmark menu. AppMenuModel model_normal_profile(&accelerator_handler, browser()); model_normal_profile.Init(); - EXPECT_NE(-1, model_normal_profile.GetIndexOfCommandId(IDC_BOOKMARKS_MENU)); + EXPECT_TRUE( + model_normal_profile.GetIndexOfCommandId(IDC_BOOKMARKS_MENU).has_value()); // Guest browser has no bookmark menu. Browser* guest_browser = CreateGuestBrowser(); AppMenuModel model_guest_profile(&accelerator_handler, guest_browser); - EXPECT_EQ(-1, model_guest_profile.GetIndexOfCommandId(IDC_BOOKMARKS_MENU)); + EXPECT_FALSE( + model_guest_profile.GetIndexOfCommandId(IDC_BOOKMARKS_MENU).has_value()); } IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, OpenBrowserWindowForProfile) {
diff --git a/chrome/browser/renderer_context_menu/mock_render_view_context_menu.cc b/chrome/browser/renderer_context_menu/mock_render_view_context_menu.cc index 4926abc..f280ed8 100644 --- a/chrome/browser/renderer_context_menu/mock_render_view_context_menu.cc +++ b/chrome/browser/renderer_context_menu/mock_render_view_context_menu.cc
@@ -136,7 +136,7 @@ // them. This works in non-mock because of toolkit_delegate_ in RVCMBase. // TODO(yusukes,lazyboy): This is a hack. RVCMProxy should neither directly // know about but submenu items nor it should update them. - for (int i = 0; i < model->GetItemCount(); ++i) { + for (size_t i = 0; i < model->GetItemCount(); ++i) { MockMenuItem sub_item; sub_item.command_id = model->GetCommandIdAt(i); sub_item.enabled = model->IsEnabledAt(i);
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc index caeace74..0dbc60e 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
@@ -1124,10 +1124,10 @@ } // Remove any redundant trailing separator. - int index = menu_model_.GetItemCount() - 1; - if (index >= 0 && - menu_model_.GetTypeAt(index) == ui::MenuModel::TYPE_SEPARATOR) { - menu_model_.RemoveItemAt(index); + size_t count = menu_model_.GetItemCount(); + if (count > 0 && + menu_model_.GetTypeAt(count - 1) == ui::MenuModel::TYPE_SEPARATOR) { + menu_model_.RemoveItemAt(count - 1); } // If there is only one item and it is the Accessibility labels item, remove @@ -1984,7 +1984,8 @@ if (!IsDevToolsURL(params_.page_url) && !content_type_->SupportsGroup(ContextMenuContentType::ITEM_GROUP_PRINT) && (!menu_model_.GetItemCount() || - menu_model_.GetIndexOfCommandId(IDC_CONTENT_CONTEXT_EMOJI) != -1)) { + menu_model_.GetIndexOfCommandId(IDC_CONTENT_CONTEXT_EMOJI) + .has_value())) { menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO, IDS_CONTENT_CONTEXT_UNDO); menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO, @@ -2014,7 +2015,8 @@ if (clipboard_history_controller && clipboard_history_controller->ShouldShowNewFeatureBadge()) { menu_model_.SetIsNewFeatureAt( - menu_model_.GetIndexOfCommandId(IDC_CONTENT_CLIPBOARD_HISTORY_MENU), + menu_model_.GetIndexOfCommandId(IDC_CONTENT_CLIPBOARD_HISTORY_MENU) + .value(), true); clipboard_history_controller->MarkNewFeatureBadgeShown(); } @@ -2136,10 +2138,10 @@ } void RenderViewContextMenu::AppendSharingItems() { - int items_initial = menu_model_.GetItemCount(); + size_t items_initial = menu_model_.GetItemCount(); menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); // Check if the starting separator got added. - int items_before_sharing = menu_model_.GetItemCount(); + size_t items_before_sharing = menu_model_.GetItemCount(); bool starting_separator_added = items_before_sharing > items_initial; #if !BUILDFLAG(IS_FUCHSIA) @@ -2148,7 +2150,7 @@ // Add an ending separator if there are sharing items, otherwise remove the // starting separator iff we added one above. - int sharing_items = menu_model_.GetItemCount() - items_before_sharing; + size_t sharing_items = menu_model_.GetItemCount() - items_before_sharing; if (sharing_items > 0) menu_model_.AddSeparator(ui::NORMAL_SEPARATOR); else if (starting_separator_added)
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc b/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc index de586700..3a43dc9 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest.cc
@@ -1440,11 +1440,11 @@ ASSERT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); // As soon as at least three profiles exist, we show all profiles in a // submenu. - ui::MenuModel* model = NULL; - int index = -1; + ui::MenuModel* model = nullptr; + size_t index = 0; ASSERT_TRUE(menu->GetMenuModelAndItemIndex(IDC_OPEN_LINK_IN_PROFILE_FIRST, &model, &index)); - ASSERT_EQ(2, model->GetItemCount()); + ASSERT_EQ(2u, model->GetItemCount()); ASSERT_FALSE(menu->IsItemInRangePresent(IDC_OPEN_LINK_IN_PROFILE_FIRST, IDC_OPEN_LINK_IN_PROFILE_LAST)); } @@ -1508,11 +1508,11 @@ CreateContextMenuMediaTypeNone(url, url)); // Verify that the size of the menu is correct. - ui::MenuModel* model = NULL; - int index = -1; + ui::MenuModel* model = nullptr; + size_t index = 0; ASSERT_TRUE(menu->GetMenuModelAndItemIndex(IDC_OPEN_LINK_IN_PROFILE_FIRST, &model, &index)); - ASSERT_EQ(static_cast<int>(profiles_in_menu.size()), model->GetItemCount()); + ASSERT_EQ(profiles_in_menu.size(), model->GetItemCount()); // Open the menu items. They should match their corresponding profiles in // |profiles_in_menu|. @@ -1572,7 +1572,7 @@ // Verify that the Open in Profile option is shown. ui::MenuModel* model = nullptr; - int index; + size_t index = 0; ASSERT_TRUE(menu.GetMenuModelAndItemIndex(IDC_OPEN_LINK_IN_PROFILE_FIRST, &model, &index)); @@ -2641,10 +2641,10 @@ ASSERT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_COPYLINKLOCATION)); // With at least two secondary profiles, they are displayed in a submenu. ui::MenuModel* model = nullptr; - int index = -1; + size_t index = 0; ASSERT_TRUE(menu->GetMenuModelAndItemIndex(IDC_OPEN_LINK_IN_PROFILE_FIRST, &model, &index)); - ASSERT_EQ(2, model->GetItemCount()); + ASSERT_EQ(2u, model->GetItemCount()); ASSERT_FALSE(menu->IsItemInRangePresent(IDC_OPEN_LINK_IN_PROFILE_FIRST, IDC_OPEN_LINK_IN_PROFILE_LAST)); }
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest_util.cc b/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest_util.cc index 1d76d45..4f2659c 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest_util.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu_browsertest_util.cc
@@ -80,7 +80,7 @@ const ui::SimpleMenuModel& menu_model = context_menu->menu_model(); captured_command_ids_.reserve(menu_model.GetItemCount()); - for (int i = 0; i < menu_model.GetItemCount(); ++i) + for (size_t i = 0; i < menu_model.GetItemCount(); ++i) captured_command_ids_.push_back(menu_model.GetCommandIdAt(i)); if (maybe_command_to_execute_)
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_test_util.cc b/chrome/browser/renderer_context_menu/render_view_context_menu_test_util.cc index 19f2009..1a93587 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu_test_util.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu_test_util.cc
@@ -40,12 +40,13 @@ } bool TestRenderViewContextMenu::IsItemPresent(int command_id) const { - return menu_model_.GetIndexOfCommandId(command_id) != -1; + return menu_model_.GetIndexOfCommandId(command_id).has_value(); } bool TestRenderViewContextMenu::IsItemChecked(int command_id) const { - return menu_model_.IsItemCheckedAt( - menu_model_.GetIndexOfCommandId(command_id)); + const absl::optional<size_t> index = + menu_model_.GetIndexOfCommandId(command_id); + return index.has_value() && menu_model_.IsItemCheckedAt(index.value()); } bool TestRenderViewContextMenu::IsItemInRangePresent( @@ -63,14 +64,14 @@ bool TestRenderViewContextMenu::GetMenuModelAndItemIndex( int command_id, MenuModel** found_model, - int* found_index) { + size_t* found_index) { std::vector<MenuModel*> models_to_search; models_to_search.push_back(&menu_model_); while (!models_to_search.empty()) { MenuModel* model = models_to_search.back(); models_to_search.pop_back(); - for (int i = 0; i < model->GetItemCount(); i++) { + for (size_t i = 0; i < model->GetItemCount(); i++) { if (model->GetCommandIdAt(i) == command_id) { *found_model = model; *found_index = i;
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h b/chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h index 27a661d..c75b006 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h +++ b/chrome/browser/renderer_context_menu/render_view_context_menu_test_util.h
@@ -72,7 +72,7 @@ // returned in |found_model| and |found_index|. Otherwise returns false. bool GetMenuModelAndItemIndex(int command_id, ui::MenuModel** found_model, - int* found_index); + size_t* found_index); // Returns the command id of the menu item with the specified |path|. int GetCommandIDByProfilePath(const base::FilePath& path) const;
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu_unittest.cc b/chrome/browser/renderer_context_menu/render_view_context_menu_unittest.cc index 018a847..c850816 100644 --- a/chrome/browser/renderer_context_menu/render_view_context_menu_unittest.cc +++ b/chrome/browser/renderer_context_menu/render_view_context_menu_unittest.cc
@@ -433,7 +433,7 @@ const ui::MenuModel& model = menu->menu_model(); std::u16string expected_title = u"Added by an extension"; int num_items_found = 0; - for (int i = 0; i < model.GetItemCount(); ++i) { + for (size_t i = 0; i < model.GetItemCount(); ++i) { if (expected_title == model.GetLabelAt(i)) ++num_items_found; }
diff --git a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js index eb8f310..e1de5bd 100644 --- a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js +++ b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
@@ -218,8 +218,8 @@ devicesPage.setDevices(devices); devicesPage.pageDiv.addEventListener('inspectpressed', function(event) { - const detailsPage = - makeDeviceDetailsPage(devices.getByAddress(event.detail.address)); + const detailsPage = makeDeviceDetailsPage( + devices.item(devices.getByAddress(event.detail.address))); pageManager.showPageByName(detailsPage.name); });
diff --git a/chrome/browser/resources/bluetooth_internals/device_collection.js b/chrome/browser/resources/bluetooth_internals/device_collection.js index 94a2de3..7f9dc2c 100644 --- a/chrome/browser/resources/bluetooth_internals/device_collection.js +++ b/chrome/browser/resources/bluetooth_internals/device_collection.js
@@ -8,7 +8,6 @@ */ import {assert} from 'chrome://resources/js/assert.m.js'; -import {ArrayDataModel} from 'chrome://resources/js/cr/ui/array_data_model.m.js'; import {DeviceInfo} from './device.mojom-webui.js'; @@ -23,16 +22,19 @@ }; /** - * Collection of devices. Extends ArrayDataModel which provides a set of - * functions and events that notifies observers when the collection changes. + * Collection of devices. Extends EventTarget to notify observers when the + * collection changes. */ -export class DeviceCollection extends ArrayDataModel { +export class DeviceCollection extends EventTarget { /** * @param {!Array<!DeviceInfo>} array The starting * collection of devices. */ constructor(array) { - super(array); + super(); + + /** @private {!Array<!DeviceInfo>} */ + this.array_ = array; // Keep track of MAC addresses which were previously found via scan, but // are no longer being advertised or nearby. Used to inform isRemoved(). @@ -40,18 +42,32 @@ this.removedDevices_ = {}; } + /** @return {number} */ + get length() { + return this.array_.length; + } + + /** + * @param {number} + * @return {DeviceInfo} + */ + item(index) { + return (index < 0 || index > this.length) ? undefined : this.array_[index]; + } + /** * Finds the Device in the collection with the matching address. * @param {string} address + * @return {number} The index where the device was found. */ getByAddress(address) { for (let i = 0; i < this.length; i++) { - const device = this.item(i); + const device = this.array_[i]; if (address === device.address) { - return device; + return i; } } - return null; + return -1; } /** @@ -60,19 +76,27 @@ */ addOrUpdate(deviceInfo) { this.removedDevices_[deviceInfo.address] = false; - const oldDeviceInfo = this.getByAddress(deviceInfo.address); + const oldDeviceIndex = this.getByAddress(deviceInfo.address); - if (oldDeviceInfo) { + if (oldDeviceIndex !== -1) { // Update rssi if it's valid + const oldDeviceInfo = this.array_[oldDeviceIndex]; const rssi = (deviceInfo.rssi && deviceInfo.rssi.value) || (oldDeviceInfo.rssi && oldDeviceInfo.rssi.value); // The rssi property may be null, so it must be re-assigned. Object.assign(oldDeviceInfo, deviceInfo); oldDeviceInfo.rssi = {value: rssi}; - this.updateIndex(this.indexOf(oldDeviceInfo)); + this.dispatchEvent(new CustomEvent( + 'device-update', + {bubbles: true, composed: true, detail: oldDeviceIndex})); } else { - this.push(deviceInfo); + this.array_.push(deviceInfo); + this.dispatchEvent(new CustomEvent('device-added', { + bubbles: true, + composed: true, + detail: {index: this.length - 1, device: deviceInfo}, + })); } } @@ -81,18 +105,28 @@ * @param {!DeviceInfo} deviceInfo */ remove(deviceInfo) { - const device = this.getByAddress(deviceInfo.address); - assert(device, 'Device does not exist.'); + const deviceIndex = this.getByAddress(deviceInfo.address); + assert(deviceIndex !== -1, 'Device does not exist.'); this.removedDevices_[deviceInfo.address] = true; - this.updateIndex(this.indexOf(device)); + this.dispatchEvent(new CustomEvent( + 'device-update', {bubbles: true, composed: true, detail: deviceIndex})); } /** * Return true if device was "removed" -- previously found via scan but * either no longer advertising or no longer nearby. * @param {!DeviceInfo} deviceInfo + * @return {boolean} */ isRemoved(deviceInfo) { return !!this.removedDevices_[deviceInfo.address]; } + + resetForTest() { + this.array_ = []; + this.removedDevices_ = []; + + this.dispatchEvent(new CustomEvent( + 'devices-reset-for-test', {bubbles: true, composed: true})); + } }
diff --git a/chrome/browser/resources/bluetooth_internals/device_table.js b/chrome/browser/resources/bluetooth_internals/device_table.js index eecdeaf5..0e24551 100644 --- a/chrome/browser/resources/bluetooth_internals/device_table.js +++ b/chrome/browser/resources/bluetooth_internals/device_table.js
@@ -61,9 +61,12 @@ assert(!this.devices_, 'Devices can only be set once.'); this.devices_ = deviceCollection; - this.devices_.addEventListener('sorted', this.redraw_.bind(this)); - this.devices_.addEventListener('change', this.handleChange_.bind(this)); - this.devices_.addEventListener('splice', this.handleSplice_.bind(this)); + this.devices_.addEventListener( + 'device-update', this.handleDeviceUpdate_.bind(this)); + this.devices_.addEventListener( + 'device-added', this.handleDeviceAdded_.bind(this)); + this.devices_.addEventListener( + 'devices-reset-for-test', this.redraw_.bind(this)); this.redraw_(); }, @@ -77,7 +80,7 @@ */ setInspecting(deviceInfo, isInspecting) { this.inspectionMap_.set(deviceInfo, isInspecting); - this.updateRow_(deviceInfo, this.devices_.indexOf(deviceInfo)); + this.updateRow_(deviceInfo, this.devices_.getByAddress(deviceInfo.address)); }, /** @@ -97,13 +100,13 @@ /** * Updates table row on change event of the device collection. - * @param {!Event} event + * @param {!CustomEvent<number>} event * @private */ - handleChange_(event) { + handleDeviceUpdate_(event) { this.updateRow_( - /** @type {!DeviceInfo} */ (this.devices_.item(event.index)), - event.index); + /** @type {!DeviceInfo} */ (this.devices_.item(event.detail)), + event.detail); }, /** @@ -123,17 +126,11 @@ /** * Updates table row on splice event of the device collection. - * @param {!Event} event + * @param {!CustomEvent<device: DeviceInfo, index: number>} event * @private */ - handleSplice_(event) { - event.removed.forEach(function() { - this.body_.deleteRow(event.index); - }, this); - - event.added.forEach(function(device, index) { - this.insertRow_(device, event.index + index); - }, this); + handleDeviceAdded_(event) { + this.insertRow_(event.detail.device, event.detail.index); }, /**
diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn index 5e9e479..9a1d37d 100644 --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn
@@ -106,49 +106,7 @@ js_type_check("closure_compile_local") { is_polymer3 = true closure_flags = settings_closure_flags - deps = [ - ":extension_control_browser_proxy", - ":i18n_setup", - ":lifetime_browser_proxy", - ":router", - ":setting_id_param_util", - ":settings", - ] - } - - js_library("settings") { - sources = - [ "$root_gen_dir/chrome/browser/resources/settings/tsc/settings.js" ] - deps = [ - ":i18n_setup", - ":lifetime_browser_proxy", - ] - extra_deps = [ ":build_ts" ] - } - - js_library("extension_control_browser_proxy") { - sources = [ "$root_gen_dir/chrome/browser/resources/settings/tsc/extension_control_browser_proxy.js" ] - deps = [ "//ui/webui/resources/js:cr.m" ] - externs_list = [ "$externs_path/chrome_send.js" ] - extra_deps = [ ":build_ts" ] - } - - js_library("i18n_setup") { - sources = - [ "$root_gen_dir/chrome/browser/resources/settings/tsc/i18n_setup.js" ] - deps = [ "//ui/webui/resources/js:load_time_data.m" ] - extra_deps = [ ":build_ts" ] - } - - js_library("lifetime_browser_proxy") { - sources = [ "$root_gen_dir/chrome/browser/resources/settings/tsc/lifetime_browser_proxy.js" ] - deps = [ "//ui/webui/resources/js:cr.m" ] - extra_deps = [ ":build_ts" ] - } - - js_library("open_window_proxy") { - sources = [ "$root_gen_dir/chrome/browser/resources/settings/tsc/open_window_proxy.js" ] - extra_deps = [ ":build_ts" ] + deps = [ ":router" ] } js_library("router") { @@ -158,15 +116,6 @@ ] externs_list = [ "$externs_path/metrics_private.js" ] } - - js_library("setting_id_param_util") { - sources = [ "$root_gen_dir/chrome/browser/resources/settings/tsc/setting_id_param_util.js" ] - deps = [ - ":router", - "//ui/webui/resources/js:load_time_data.m", - ] - extra_deps = [ ":build_ts" ] - } } html_to_js("css_wrapper_files_old") {
diff --git a/chrome/browser/resources/settings/chromeos/BUILD.gn b/chrome/browser/resources/settings/chromeos/BUILD.gn index 39f3ea6b..2fa6c17 100644 --- a/chrome/browser/resources/settings/chromeos/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/BUILD.gn
@@ -831,7 +831,6 @@ js_library("deep_linking_behavior") { deps = [ "..:router", - "..:setting_id_param_util", "//chrome/browser/ui/webui/settings/chromeos/constants:mojom_webui_js", "//ui/webui/resources/js:assert.m", "//ui/webui/resources/js:load_time_data.m",
diff --git a/chrome/browser/resources/settings/chromeos/device_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/device_page/BUILD.gn index 6e8cc52..73f72e9 100644 --- a/chrome/browser/resources/settings/chromeos/device_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/device_page/BUILD.gn
@@ -104,7 +104,6 @@ "..:deep_linking_behavior", "..:os_route", "..:route_observer_behavior", - "../..:i18n_setup", "../..:router", "//ui/webui/resources/js:assert.m", "//ui/webui/resources/js/cr/ui:focus_without_ink.m",
diff --git a/chrome/browser/resources/settings/chromeos/os_a11y_page/display_and_magnification_page.js b/chrome/browser/resources/settings/chromeos/os_a11y_page/display_and_magnification_page.js index b7d333f..8c76038 100644 --- a/chrome/browser/resources/settings/chromeos/os_a11y_page/display_and_magnification_page.js +++ b/chrome/browser/resources/settings/chromeos/os_a11y_page/display_and_magnification_page.js
@@ -116,6 +116,17 @@ }, }, + /** + * Whether the user is in kiosk mode. + * @protected + */ + isKioskModeActive_: { + type: Boolean, + value() { + return loadTimeData.getBoolean('isKioskModeActive'); + }, + }, + /** @protected */ screenMagnifierHintLabel_: { type: String,
diff --git a/chrome/browser/resources/settings/chromeos/os_about_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_about_page/BUILD.gn index cb0ddd7..5b3be737 100644 --- a/chrome/browser/resources/settings/chromeos/os_about_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/os_about_page/BUILD.gn
@@ -95,8 +95,6 @@ "..:deep_linking_behavior", "..:os_route", "..:route_observer_behavior", - "../..:i18n_setup", - "../..:lifetime_browser_proxy", "../..:router", "../os_settings_page:main_page_behavior", @@ -109,6 +107,8 @@ "//ui/webui/resources/js:parse_html_subset.m", "//ui/webui/resources/js:web_ui_listener_behavior.m", ] + + externs_list = [ "../settings_controls_types.js" ] } js_library("update_warning_dialog") {
diff --git a/chrome/browser/resources/settings/chromeos/os_languages_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_languages_page/BUILD.gn index f8df612..43e2a39 100644 --- a/chrome/browser/resources/settings/chromeos/os_languages_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/os_languages_page/BUILD.gn
@@ -108,11 +108,13 @@ js_library("change_device_language_dialog") { deps = [ ":languages", - "../..:lifetime_browser_proxy", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//ui/webui/resources/cr_elements:cr_scrollable_behavior.m", ] - externs_list = [ "//ui/webui/resources/cr_elements/cr_search_field/cr_search_field_externs.js" ] + externs_list = [ + "//ui/webui/resources/cr_elements/cr_search_field/cr_search_field_externs.js", + "../settings_controls_types.js", + ] } js_library("cr_checkbox_with_policy") { @@ -155,7 +157,6 @@ "..:deep_linking_behavior", "..:os_route", "..:route_observer_behavior", - "../..:i18n_setup", "../..:router", "../keyboard_shortcut_banner:keyboard_shortcut_banner", "//ui/webui/resources/js:assert.m", @@ -199,7 +200,6 @@ "..:metrics_recorder", "..:os_route", "..:route_observer_behavior", - "../..:i18n_setup", "../..:router", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//ui/webui/resources/cr_elements/cr_expand_button:cr_expand_button.m",
diff --git a/chrome/browser/resources/settings/chromeos/os_reset_page/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_reset_page/BUILD.gn index 0aec5ab..38091e1 100644 --- a/chrome/browser/resources/settings/chromeos/os_reset_page/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/os_reset_page/BUILD.gn
@@ -23,12 +23,16 @@ ":os_reset_browser_proxy", "..:metrics_recorder", "..:os_route", - "../..:lifetime_browser_proxy", "../..:router", "//third_party/polymer/v3_0/components-chromium/iron-list:iron-list", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", "//ui/webui/resources/cr_components/chromeos/network:onc_mojo.m", ] + + externs_list = [ + "$externs_path/settings_private.js", + "../settings_controls_types.js", + ] } js_library("os_powerwash_dialog_esim_item") {
diff --git a/chrome/browser/resources/settings/chromeos/os_settings_search_box/BUILD.gn b/chrome/browser/resources/settings/chromeos/os_settings_search_box/BUILD.gn index b4198447..be25e1f 100644 --- a/chrome/browser/resources/settings/chromeos/os_settings_search_box/BUILD.gn +++ b/chrome/browser/resources/settings/chromeos/os_settings_search_box/BUILD.gn
@@ -21,7 +21,6 @@ "..:os_icons", "..:os_route", "..:route_observer_behavior", - "../..:open_window_proxy", "../..:router", "//ash/webui/personalization_app/search:mojo_bindings_webui_js", "//third_party/polymer/v3_0/components-chromium/polymer:polymer_bundled", @@ -31,7 +30,9 @@ ] externs_list = [ "$externs_path/metrics_private.js", + "$externs_path/settings_private.js", "//ui/webui/resources/cr_elements/cr_a11y_announcer/cr_a11y_announcer_externs.js", + "../settings_controls_types.js", ] }
diff --git a/chrome/browser/resources/settings/chromeos/settings_controls_types.js b/chrome/browser/resources/settings/chromeos/settings_controls_types.js index b733124..1766d4a 100644 --- a/chrome/browser/resources/settings/chromeos/settings_controls_types.js +++ b/chrome/browser/resources/settings/chromeos/settings_controls_types.js
@@ -196,3 +196,16 @@ /** @return {!Promise<!ProfileInfo>} */ ProfileInfoBrowserProxy.prototype.getProfileInfo = function() {}; + +/** @interface */ +function OpenWindowProxy() {} + +/** @param {string} url */ +OpenWindowProxy.prototype.openURL = function(url) {}; + +/** @interface */ +function LifetimeBrowserProxy() {} + +LifetimeBrowserProxy.prototype.factoryReset = function() {}; +LifetimeBrowserProxy.prototype.relaunch = function() {}; +LifetimeBrowserProxy.prototype.signOutAndRestart = function() {};
diff --git a/chrome/browser/resources/settings/languages_page/spell_check_page.html b/chrome/browser/resources/settings/languages_page/spell_check_page.html index 92e93ec..95115f35 100644 --- a/chrome/browser/resources/settings/languages_page/spell_check_page.html +++ b/chrome/browser/resources/settings/languages_page/spell_check_page.html
@@ -58,7 +58,7 @@ focus-config="[[focusConfig_]]"> <div route-path="default"> <settings-toggle-button id="enableSpellcheckingToggle" class="hr" - label="$i18n{spellCheckTitle}" + label="$i18n{offerToEnableSpellCheck}" sub-label="[[getSpellCheckSubLabel_(spellCheckLanguages_)]]" pref="{{prefs.browser.enable_spellchecking}}" disabled="[[!spellCheckLanguages_.length]]">
diff --git a/chrome/browser/resources/settings/settings.gni b/chrome/browser/resources/settings/settings.gni index 7f7f484b..15112bc 100644 --- a/chrome/browser/resources/settings/settings.gni +++ b/chrome/browser/resources/settings/settings.gni
@@ -11,7 +11,6 @@ default_closure_args + [ "js_module_root=../../chrome/browser/resources/settings/", "js_module_root=./gen/chrome/browser/resources/settings/", - "js_module_root=./gen/chrome/browser/resources/settings/tsc/", ] # -----------------web_component_files start -----------------------------------
diff --git a/chrome/browser/search/most_visited_iframe_source.cc b/chrome/browser/search/most_visited_iframe_source.cc index 25e09f3..d27385c 100644 --- a/chrome/browser/search/most_visited_iframe_source.cc +++ b/chrome/browser/search/most_visited_iframe_source.cc
@@ -55,9 +55,8 @@ } } -std::string MostVisitedIframeSource::GetMimeType( - const std::string& path_and_query) { - std::string path(GURL("chrome-search://host/" + path_and_query).path()); +std::string MostVisitedIframeSource::GetMimeType(const GURL& url) { + base::StringPiece path = url.path_piece(); if (base::EndsWith(path, ".js", base::CompareCase::INSENSITIVE_ASCII)) return "application/javascript"; if (base::EndsWith(path, ".css", base::CompareCase::INSENSITIVE_ASCII))
diff --git a/chrome/browser/search/most_visited_iframe_source.h b/chrome/browser/search/most_visited_iframe_source.h index 251c522..32f06cf 100644 --- a/chrome/browser/search/most_visited_iframe_source.h +++ b/chrome/browser/search/most_visited_iframe_source.h
@@ -29,7 +29,7 @@ const GURL& url, const content::WebContents::Getter& wc_getter, content::URLDataSource::GotDataCallback callback) override; - std::string GetMimeType(const std::string& path_and_query) override; + std::string GetMimeType(const GURL& url) override; bool ShouldServeMimeTypeAsContentTypeHeader() override; bool AllowCaching() override;
diff --git a/chrome/browser/search/most_visited_iframe_source_unittest.cc b/chrome/browser/search/most_visited_iframe_source_unittest.cc index 03e6710e..16db00e 100644 --- a/chrome/browser/search/most_visited_iframe_source_unittest.cc +++ b/chrome/browser/search/most_visited_iframe_source_unittest.cc
@@ -141,10 +141,13 @@ TEST_F(MostVisitedIframeSourceTest, GetMimeType) { // URLDataManagerBackend does not include / in path_and_query. - EXPECT_EQ("text/html", source()->GetMimeType("foo.html")); - EXPECT_EQ("application/javascript", source()->GetMimeType("foo.js")); - EXPECT_EQ("text/css", source()->GetMimeType("foo.css")); - EXPECT_EQ("", source()->GetMimeType("bogus")); + EXPECT_EQ("text/html", + source()->GetMimeType(GURL("chrome-search://test/foo.html"))); + EXPECT_EQ("application/javascript", + source()->GetMimeType(GURL("chrome-search://test/foo.js"))); + EXPECT_EQ("text/css", + source()->GetMimeType(GURL("chrome-search://test/foo.css"))); + EXPECT_EQ("", source()->GetMimeType(GURL("chrome-search://test/bogus"))); } TEST_F(MostVisitedIframeSourceTest, SendResource) {
diff --git a/chrome/browser/sync/test/integration/secondary_account_helper.cc b/chrome/browser/sync/test/integration/secondary_account_helper.cc index 18b4d4e..2837c58c 100644 --- a/chrome/browser/sync/test/integration/secondary_account_helper.cc +++ b/chrome/browser/sync/test/integration/secondary_account_helper.cc
@@ -59,7 +59,7 @@ ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE, 204); // Takes ownership. - chromeos::network_portal_detector::InitializeForTesting(portal_detector); + ash::network_portal_detector::InitializeForTesting(portal_detector); } #endif // BUILDFLAG(IS_CHROMEOS_ASH)
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn index c1e9792..34f4ab94 100644 --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn
@@ -3165,6 +3165,7 @@ "//chromeos/ash/components/human_presence", "//chromeos/ash/components/local_search_service/public/cpp", "//chromeos/ash/components/local_search_service/public/mojom", + "//chromeos/ash/components/network", "//chromeos/ash/components/network/portal_detector", "//chromeos/ash/components/oobe_quick_start", "//chromeos/ash/resources", @@ -3189,7 +3190,6 @@ "//chromeos/dbus/tpm_manager:tpm_manager_proto", "//chromeos/dbus/util", "//chromeos/login/login_state", - "//chromeos/network", "//chromeos/printing", "//chromeos/services/assistant/public/shared", "//chromeos/services/bluetooth_config",
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ButtonDataImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ButtonDataImpl.java index 9d56e25..bbe99b72 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ButtonDataImpl.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/ButtonDataImpl.java
@@ -6,10 +6,11 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; -import android.view.View; +import android.view.View.OnClickListener; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.StringRes; import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarFeatures.AdaptiveToolbarButtonVariant; import org.chromium.chrome.browser.user_education.IPHCommandBuilder; @@ -24,7 +25,7 @@ public ButtonDataImpl() {} public ButtonDataImpl(boolean canShow, @NonNull Drawable drawable, - @NonNull View.OnClickListener onClickListener, int contentDescriptionResId, + @NonNull OnClickListener onClickListener, int contentDescriptionResId, boolean supportsTinting, @Nullable IPHCommandBuilder iphCommandBuilder, boolean isEnabled, @AdaptiveToolbarButtonVariant int buttonVariant) { mCanShow = canShow; @@ -71,4 +72,15 @@ currentSpec.getActionChipLabelResId()); setButtonSpec(newSpec); } + + /** Convenience method to update the action chip string resource ID. */ + public void updateActionChipResourceId(@StringRes int newActionChipResourceId) { + ButtonSpec currentSpec = getButtonSpec(); + ButtonSpec newSpec = new ButtonSpec(currentSpec.getDrawable(), + currentSpec.getOnClickListener(), currentSpec.getOnLongClickListener(), + currentSpec.getContentDescriptionResId(), currentSpec.getSupportsTinting(), + currentSpec.getIPHCommandBuilder(), currentSpec.getButtonVariant(), + newActionChipResourceId); + setButtonSpec(newSpec); + } }
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java index 4fbf290..61f294f 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java
@@ -167,9 +167,12 @@ @Override public ButtonData get(@Nullable Tab tab) { - if (mSingleProvider == null) return null; - final ButtonData receivedButtonData = mSingleProvider.get(tab); - if (receivedButtonData == null) return null; + final ButtonData receivedButtonData = + mSingleProvider == null ? null : mSingleProvider.get(tab); + if (receivedButtonData == null) { + mOriginalButtonSpec = null; + return null; + } if (!mIsSessionVariantRecorded && receivedButtonData.canShow() && receivedButtonData.isEnabled()
diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java index a44a073..9bb32091 100644 --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java
@@ -50,6 +50,11 @@ */ public static final int DEFAULT_MIN_WIDTH_DP = 360; + /** + * Default delay between action chip expansion and collapse. + */ + public static final int DEFAULT_CONTEXTUAL_PAGE_ACTION_CHIP_DELAY_MS = 3000; + @AdaptiveToolbarButtonVariant private static Integer sButtonVariant; @@ -116,7 +121,17 @@ /** @return Whether the contextual page actions should show the action chip version. */ public static boolean shouldShowActionChip() { return ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean( - ChromeFeatureList.CONTEXTUAL_PAGE_ACTIONS, "action_chip", false); + ChromeFeatureList.CONTEXTUAL_PAGE_ACTION_PRICE_TRACKING, "action_chip", false); + } + + /** + * @return The amount of time the action chip should remain expanded in milliseconds. Default is + * 3 seconds. + */ + public static int getContextualPageActionDelayMs() { + return ChromeFeatureList.getFieldTrialParamByFeatureAsInt( + ChromeFeatureList.CONTEXTUAL_PAGE_ACTION_PRICE_TRACKING, "action_chip_time_ms", + DEFAULT_CONTEXTUAL_PAGE_ACTION_CHIP_DELAY_MS); } /**
diff --git a/chrome/browser/ui/app_list/app_context_menu_unittest.cc b/chrome/browser/ui/app_list/app_context_menu_unittest.cc index 8db101e..3a991a1b 100644 --- a/chrome/browser/ui/app_list/app_context_menu_unittest.cc +++ b/chrome/browser/ui/app_list/app_context_menu_unittest.cc
@@ -202,7 +202,7 @@ }; void ValidateItemState(const ui::MenuModel* menu_model, - int index, + size_t index, const MenuState& state) { EXPECT_EQ(state.command_id, menu_model->GetCommandIdAt(index)); if (state.command_id == -1) @@ -215,7 +215,7 @@ const std::vector<MenuState>& states) { ASSERT_NE(nullptr, menu_model); size_t state_index = 0; - for (int i = 0; i < menu_model->GetItemCount(); ++i) { + for (size_t i = 0; i < menu_model->GetItemCount(); ++i) { ASSERT_LT(state_index, states.size()); ValidateItemState(menu_model, i, states[state_index++]); } @@ -425,10 +425,10 @@ // Separators are not added to touchable app context menus. For touchable app // context menus, arc app has double separator, three more app shortcuts // provided by arc::FakeAppInstance and two separators between shortcuts. - const int expected_items = 10; + const size_t expected_items = 10; ASSERT_EQ(expected_items, menu->GetItemCount()); - int index = 0; + size_t index = 0; ValidateItemState(menu.get(), index++, MenuState(ash::LAUNCH_NEW)); ValidateItemState(menu.get(), index++, MenuState(ash::TOGGLE_PIN)); ValidateItemState(menu.get(), index++, MenuState(ash::UNINSTALL)); @@ -455,7 +455,7 @@ // Separators are not added to touchable app context menus except for arc app // shortcuts, which have double separator, three more app shortcuts provided // by arc::FakeAppInstance and two separators between shortcuts. - const int expected_items_app_open = 9; + const size_t expected_items_app_open = 9; ASSERT_EQ(expected_items_app_open, menu->GetItemCount()); index = 0; ValidateItemState(menu.get(), index++, MenuState(ash::TOGGLE_PIN)); @@ -491,7 +491,7 @@ // menus. For touchable app context menus, arc app has double separator, // three more app shortcuts provided by arc::FakeAppInstance and two // separators between shortcuts. - const int expected_items_reopen = 8; + const size_t expected_items_reopen = 8; ASSERT_EQ(expected_items_reopen, menu->GetItemCount()); index = 0; ValidateItemState(menu.get(), index++, MenuState(ash::LAUNCH_NEW)); @@ -537,8 +537,8 @@ // Separators are not added to touchable app context menus. For touchable app // context menus, arc app has double separator, three more app shortcuts // provided by arc::FakeAppInstance and two separators between shortcuts. - const int expected_items = 10; - int index = 0; + const size_t expected_items = 10; + size_t index = 0; ASSERT_EQ(expected_items, menu->GetItemCount()); ValidateItemState(menu.get(), index++, MenuState(ash::LAUNCH_NEW)); ValidateItemState(menu.get(), index++, MenuState(ash::TOGGLE_PIN)); @@ -564,7 +564,7 @@ // menus. For touchable app context menus, arc app has double separator, // three more app shortcuts provided by arc::FakeAppInstance and two // separators between shortcuts. - const int expected_items_non_ready = 9; + const size_t expected_items_non_ready = 9; ASSERT_EQ(expected_items_non_ready, menu->GetItemCount()); index = 0; ValidateItemState(menu.get(), index++, MenuState(ash::LAUNCH_NEW)); @@ -604,9 +604,9 @@ // Separators are not added to touchable app context menus. For touchable // app context menus, arc app has double separator, three more app shortcuts // provided by arc::FakeAppInstance and two separators between shortcuts. - int expected_items = 9; + size_t expected_items = 9; ASSERT_EQ(expected_items, menu->GetItemCount()); - int index = 0; + size_t index = 0; ValidateItemState(menu.get(), index++, MenuState(ash::LAUNCH_NEW)); ValidateItemState(menu.get(), index++, MenuState(ash::TOGGLE_PIN)); ValidateItemState(menu.get(), index++, MenuState(ash::SHOW_APP_INFO)); @@ -643,9 +643,9 @@ // Separators are not added to touchable app context menus. For touchable // app context menus, arc app has double separator, three more app shortcuts // provided by arc::FakeAppInstance and two separators between shortcuts. - int expected_items = 8; + size_t expected_items = 8; ASSERT_EQ(expected_items, menu->GetItemCount()); - int index = 0; + size_t index = 0; ValidateItemState(menu.get(), index++, MenuState(ash::TOGGLE_PIN)); ValidateItemState(menu.get(), index++, MenuState(ash::SHOW_APP_INFO)); @@ -690,7 +690,7 @@ GetAppListItem(profile(), internal_app.app_id); std::unique_ptr<ui::MenuModel> menu = GetContextMenuModel(item.get()); ASSERT_NE(nullptr, menu); - EXPECT_EQ(1, menu->GetItemCount()); + EXPECT_EQ(1u, menu->GetItemCount()); ValidateItemState(menu.get(), 0, MenuState(ash::TOGGLE_PIN)); } } @@ -744,7 +744,7 @@ // Verify expected menu items. // It should have, Open new window, Open incognito window, and app info. - EXPECT_EQ(menu_model->GetItemCount(), 3); + EXPECT_EQ(menu_model->GetItemCount(), 3u); std::vector<MenuState> states; AddToStates(menu, MenuState(ash::APP_CONTEXT_MENU_NEW_WINDOW), &states); AddToStates(menu, MenuState(ash::APP_CONTEXT_MENU_NEW_INCOGNITO_WINDOW),
diff --git a/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc b/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc index 1fe7e63..4f1693c 100644 --- a/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc +++ b/chrome/browser/ui/app_list/app_list_client_impl_browsertest.cc
@@ -357,10 +357,10 @@ run_loop.Run(); EXPECT_TRUE(menu_model); - int num_items = menu_model->GetItemCount(); - EXPECT_LT(0, num_items); + size_t num_items = menu_model->GetItemCount(); + EXPECT_GT(num_items, 0u); - for (int i = 0; i < num_items; i++) { + for (size_t i = 0; i < num_items; i++) { if (menu_model->GetTypeAt(i) == ui::MenuModel::TYPE_SEPARATOR) continue;
diff --git a/chrome/browser/ui/ash/capture_mode/recording_service_browsertest.cc b/chrome/browser/ui/ash/capture_mode/recording_service_browsertest.cc index 374d059a..85c8028 100644 --- a/chrome/browser/ui/ash/capture_mode/recording_service_browsertest.cc +++ b/chrome/browser/ui/ash/capture_mode/recording_service_browsertest.cc
@@ -24,7 +24,7 @@ #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_window.h" #include "chrome/test/base/in_process_browser_test.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "content/public/test/browser_test.h" #include "media/base/media_tracks.h" #include "media/base/mock_media_log.h"
diff --git a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc index c5dab0b..f6d2f1a 100644 --- a/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc +++ b/chrome/browser/ui/ash/chrome_browser_main_extra_parts_ash.cc
@@ -288,8 +288,8 @@ // NetworkPortalDetector instance may be replaced. if (!base::CommandLine::ForCurrentProcess()->HasSwitch( ::switches::kTestType)) { - chromeos::NetworkPortalDetector* detector = - chromeos::network_portal_detector::GetInstance(); + ash::NetworkPortalDetector* detector = + ash::network_portal_detector::GetInstance(); CHECK(detector); network_portal_notification_controller_ = std::make_unique<chromeos::NetworkPortalNotificationController>(
diff --git a/chrome/browser/ui/ash/chrome_shell_delegate.cc b/chrome/browser/ui/ash/chrome_shell_delegate.cc index f24edfd..c39ef789 100644 --- a/chrome/browser/ui/ash/chrome_shell_delegate.cc +++ b/chrome/browser/ui/ash/chrome_shell_delegate.cc
@@ -54,8 +54,6 @@ #include "chrome/common/chrome_switches.h" #include "components/ui_devtools/devtools_server.h" #include "components/user_manager/user_manager.h" -#include "components/version_info/channel.h" -#include "components/version_info/version_info.h" #include "content/public/browser/device_service.h" #include "content/public/browser/media_session_service.h" #include "content/public/browser/render_widget_host.h" @@ -344,7 +342,3 @@ version_info::Channel ChromeShellDelegate::GetChannel() { return chrome::GetChannel(); } - -std::string ChromeShellDelegate::GetVersionString() { - return version_info::GetVersionNumber(); -}
diff --git a/chrome/browser/ui/ash/chrome_shell_delegate.h b/chrome/browser/ui/ash/chrome_shell_delegate.h index 67f9a3e0..97714bb 100644 --- a/chrome/browser/ui/ash/chrome_shell_delegate.h +++ b/chrome/browser/ui/ash/chrome_shell_delegate.h
@@ -6,7 +6,6 @@ #define CHROME_BROWSER_UI_ASH_CHROME_SHELL_DELEGATE_H_ #include <memory> -#include <string> #include "ash/shell_delegate.h" #include "base/callback_forward.h" @@ -64,7 +63,6 @@ static void ResetDisableLoggingRedirectForTesting(); const GURL& GetLastCommittedURLForWindowIfAny(aura::Window* window) override; version_info::Channel GetChannel() override; - std::string GetVersionString() override; }; #endif // CHROME_BROWSER_UI_ASH_CHROME_SHELL_DELEGATE_H_
diff --git a/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos_unittest.cc index 9bff677..c4f26a86 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos_unittest.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_context_menu_chromeos_unittest.cc
@@ -104,13 +104,13 @@ SetLoggedInUsers(2); std::unique_ptr<ui::MenuModel> menu = CreateMultiUserContextMenu(window()); ASSERT_TRUE(menu.get()); - EXPECT_EQ(1, menu.get()->GetItemCount()); + EXPECT_EQ(1u, menu.get()->GetItemCount()); } { SetLoggedInUsers(3); std::unique_ptr<ui::MenuModel> menu = CreateMultiUserContextMenu(window()); ASSERT_TRUE(menu.get()); - EXPECT_EQ(2, menu.get()->GetItemCount()); + EXPECT_EQ(2u, menu.get()->GetItemCount()); } }
diff --git a/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu_browsertest.cc b/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu_browsertest.cc index 9d0673286..cc2bb42d 100644 --- a/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu_browsertest.cc +++ b/chrome/browser/ui/ash/shelf/app_service/app_service_shelf_context_menu_browsertest.cc
@@ -40,7 +40,7 @@ struct MenuSection { std::unique_ptr<ui::SimpleMenuModel> menu_model; ui::MenuModel* sub_model = nullptr; - int command_index = -1; + size_t command_index = 0; }; absl::optional<MenuSection> GetContextMenuSectionForAppCommand( @@ -62,7 +62,7 @@ run_loop.Run(); result.sub_model = result.menu_model.get(); - result.command_index = -1; + result.command_index = 0; if (!ui::MenuModel::GetModelAndIndexForCommandId( command_id, &result.sub_model, &result.command_index)) { return absl::nullopt;
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_browsertest.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_browsertest.cc index a873941..0607c59 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_browsertest.cc +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_browsertest.cc
@@ -390,7 +390,7 @@ })); run_loop.Run(); ui::MenuModel* menu_ptr = menu.get(); - int index = 0; + size_t index = 0; return ui::MenuModel::GetModelAndIndexForCommandId(command_id, &menu_ptr, &index); } @@ -3056,7 +3056,7 @@ // per-desk shelf feature is enabled or not. auto* model_adapter = ClickBrowserShelfButtonAndGetMenu(); const bool is_per_desk_shelf_enabled = GetParam(); - constexpr int kTitleAndSeparatorCount = 2; + constexpr size_t kTitleAndSeparatorCount = 2; if (is_per_desk_shelf_enabled) { EXPECT_EQ(2 + kTitleAndSeparatorCount, model_adapter->model()->GetItemCount());
diff --git a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_unittest.cc b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_unittest.cc index 537ebc7..159aa05 100644 --- a/chrome/browser/ui/ash/shelf/chrome_shelf_controller_unittest.cc +++ b/chrome/browser/ui/ash/shelf/chrome_shelf_controller_unittest.cc
@@ -105,6 +105,8 @@ #include "chrome/browser/ui/tabs/tab_strip_model.h" #include "chrome/browser/ui/web_applications/test/web_app_browsertest_util.h" #include "chrome/browser/web_applications/externally_installed_web_app_prefs.h" +#include "chrome/browser/web_applications/preinstalled_web_app_manager.h" +#include "chrome/browser/web_applications/test/app_registration_waiter.h" #include "chrome/browser/web_applications/test/fake_web_app_provider.h" #include "chrome/browser/web_applications/test/web_app_install_test_utils.h" #include "chrome/browser/web_applications/web_app_constants.h" @@ -427,6 +429,8 @@ chromeos::DBusThreadManager::Initialize(); ash::ConciergeClient::InitializeFake(/*fake_cicerone_client=*/nullptr); + web_app::PreinstalledWebAppManager::SkipStartupForTesting(); + app_list::AppListSyncableServiceFactory::SetUseInTesting(true); BrowserWithTestWindowTest::SetUp(); @@ -1133,6 +1137,7 @@ web_app::AppId installed_app_id = web_app::test::InstallWebApp(profile(), std::move(web_app_info)); ASSERT_EQ(installed_app_id, web_app_id); + web_app::AppRegistrationWaiter(profile(), web_app_id).Await(); app_service_test_.FlushMojoCalls(); } @@ -1729,14 +1734,7 @@ EXPECT_EQ("Chrome, Play Store, Android Settings", GetPinnedAppStatus()); } -// crbug.com/1312611 Test Failing on linux-cfm-rel -#if BUILDFLAG(IS_LINUX) -#define MAYBE_ArcAppPinCrossPlatformWorkflow \ - DISABLED_ArcAppPinCrossPlatformWorkflow -#else -#define MAYBE_ArcAppPinCrossPlatformWorkflow ArcAppPinCrossPlatformWorkflow -#endif -TEST_F(ChromeShelfControllerWithArcTest, MAYBE_ArcAppPinCrossPlatformWorkflow) { +TEST_F(ChromeShelfControllerWithArcTest, ArcAppPinCrossPlatformWorkflow) { // Work on ARC disabled platform first. const std::string arc_app_id1 = ArcAppTest::GetAppId(*arc_test_.fake_apps()[0]);
diff --git a/chrome/browser/ui/ash/shelf/shelf_context_menu_unittest.cc b/chrome/browser/ui/ash/shelf/shelf_context_menu_unittest.cc index 93f1114..f7570d5 100644 --- a/chrome/browser/ui/ash/shelf/shelf_context_menu_unittest.cc +++ b/chrome/browser/ui/ash/shelf/shelf_context_menu_unittest.cc
@@ -76,14 +76,14 @@ bool IsItemPresentInMenu(ui::MenuModel* menu, int command_id) { ui::MenuModel* model = menu; - int index = 0; + size_t index = 0; return ui::MenuModel::GetModelAndIndexForCommandId(command_id, &model, &index); } bool IsItemEnabledInMenu(ui::MenuModel* menu, int command_id) { ui::MenuModel* model = menu; - int index = 0; + size_t index = 0; return ui::MenuModel::GetModelAndIndexForCommandId(command_id, &model, &index) && menu->IsEnabledAt(index); @@ -578,7 +578,7 @@ GetContextMenu(item_delegate, primary_id); // Test that there are 9 items in an ARC app context menu. - EXPECT_EQ(9, menu->GetItemCount()); + EXPECT_EQ(9u, menu->GetItemCount()); } // Tests that the context menu of internal app is correct. @@ -632,7 +632,7 @@ std::unique_ptr<ui::MenuModel> menu = GetContextMenu(item_delegate, primary_id); - const int expected_options_num = internal_app.show_in_launcher ? 2 : 1; + const size_t expected_options_num = internal_app.show_in_launcher ? 2 : 1; EXPECT_EQ(expected_options_num, menu->GetItemCount()); } } @@ -666,7 +666,7 @@ GetContextMenu(item_delegate, primary_id); // Check that every menu item has an icon - for (int i = 0; i < menu->GetItemCount(); ++i) + for (size_t i = 0; i < menu->GetItemCount(); ++i) EXPECT_FALSE(menu->GetIconAt(i).IsEmpty()); // Precisely which density option is shown is not important to us, we only @@ -695,7 +695,7 @@ std::unique_ptr<ui::MenuModel> menu = GetContextMenu(item_delegate, primary_id); - EXPECT_EQ(menu->GetItemCount(), 1); + EXPECT_EQ(menu->GetItemCount(), 1u); EXPECT_FALSE( IsItemEnabledInMenu(menu.get(), ash::APP_CONTEXT_MENU_NEW_WINDOW)); } @@ -720,7 +720,7 @@ GetContextMenu(item_delegate, primary_id); // Check that every menu item has an icon - for (int i = 0; i < menu->GetItemCount(); ++i) + for (size_t i = 0; i < menu->GetItemCount(); ++i) EXPECT_FALSE(menu->GetIconAt(i).IsEmpty()); EXPECT_TRUE(IsItemEnabledInMenu(menu.get(), ash::UNINSTALL));
diff --git a/chrome/browser/ui/ash/system_tray_client_impl.cc b/chrome/browser/ui/ash/system_tray_client_impl.cc index e609b057d..834396b 100644 --- a/chrome/browser/ui/ash/system_tray_client_impl.cc +++ b/chrome/browser/ui/ash/system_tray_client_impl.cc
@@ -751,15 +751,6 @@ opened_pwa = true; } -void SystemTrayClientImpl::ShowChannelInfoAdditionalDetails() { - ShowSettingsSubPageForActiveUser( - std::string(chromeos::settings::mojom::kDetailedBuildInfoSubpagePath)); -} - -void SystemTrayClientImpl::ShowChannelInfoGiveFeedback() { - ash::NewWindowDelegate::GetInstance()->OpenFeedbackPage(); -} - SystemTrayClientImpl::SystemTrayClientImpl(SystemTrayClientImpl* mock_instance) : system_tray_(nullptr) { DCHECK(!g_system_tray_client_instance);
diff --git a/chrome/browser/ui/ash/system_tray_client_impl.h b/chrome/browser/ui/ash/system_tray_client_impl.h index a54724e..fedf44e9 100644 --- a/chrome/browser/ui/ash/system_tray_client_impl.h +++ b/chrome/browser/ui/ash/system_tray_client_impl.h
@@ -104,8 +104,6 @@ const base::Time& date, bool& opened_pwa, GURL& finalized_event_url) override; - void ShowChannelInfoAdditionalDetails() override; - void ShowChannelInfoGiveFeedback() override; protected: // Used by mocks in tests.
diff --git a/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac.mm b/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac.mm index 96ab721..318b7d5 100644 --- a/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac.mm +++ b/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac.mm
@@ -102,15 +102,14 @@ // In case the user has selected a word that triggers spelling suggestions, // show the dictionary lookup under the group that contains the command to // “Add to Dictionary.” - int index = + const absl::optional<size_t> index_opt = menu_model_.GetIndexOfCommandId(IDC_SPELLCHECK_ADD_TO_DICTIONARY); - if (index < 0) { - index = 0; - } else { + size_t index = index_opt.value_or(0); + if (index_opt.has_value()) { while (menu_model_.GetTypeAt(index) != ui::MenuModel::TYPE_SEPARATOR) { index++; } - index += 1; // Place it below the separator. + ++index; // Place it below the separator. } std::u16string printable_selection_text = PrintableSelectionText();
diff --git a/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_cocoa.mm b/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_cocoa.mm index 43c018d..94cb06fc 100644 --- a/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_cocoa.mm +++ b/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_cocoa.mm
@@ -38,7 +38,7 @@ NSMenuItem* GetMenuItemByID(ui::MenuModel* model, NSMenu* menu, int command_id) { - for (int i = 0; i < model->GetItemCount(); ++i) { + for (size_t i = 0; i < model->GetItemCount(); ++i) { NSMenuItem* item = [menu itemAtIndex:i]; if (model->GetCommandIdAt(i) == command_id) return item;
diff --git a/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_unittest.mm b/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_unittest.mm index c8a49ad4..403fb20 100644 --- a/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_unittest.mm +++ b/chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_unittest.mm
@@ -46,7 +46,7 @@ }; bool MenuHasItemWithCommand(const ui::MenuModel& menu, int command) { - for (int i = 0; i < menu.GetItemCount(); ++i) { + for (size_t i = 0; i < menu.GetItemCount(); ++i) { if (menu.GetTypeAt(i) == ui::MenuModel::TYPE_SUBMENU) { ui::MenuModel* submenu = menu.GetSubmenuModelAt(i); if (MenuHasItemWithCommand(*submenu, command))
diff --git a/chrome/browser/ui/extensions/extension_action_view_controller_unittest.cc b/chrome/browser/ui/extensions/extension_action_view_controller_unittest.cc index 68b3e7f..18b1096b 100644 --- a/chrome/browser/ui/extensions/extension_action_view_controller_unittest.cc +++ b/chrome/browser/ui/extensions/extension_action_view_controller_unittest.cc
@@ -340,11 +340,11 @@ ui::SimpleMenuModel* context_menu = static_cast<ui::SimpleMenuModel*>( action->GetContextMenu(extensions::ExtensionContextMenuModel:: ContextMenuSource::kToolbarAction)); - int visibility_index = context_menu->GetIndexOfCommandId( + absl::optional<size_t> visibility_index = context_menu->GetIndexOfCommandId( extensions::ExtensionContextMenuModel::TOGGLE_VISIBILITY); - ASSERT_GE(visibility_index, 0); + ASSERT_TRUE(visibility_index.has_value()); std::u16string visibility_label = - context_menu->GetLabelAt(visibility_index); + context_menu->GetLabelAt(visibility_index.value()); EXPECT_EQ(l10n_util::GetStringUTF16(expected_visibility_string), visibility_label); };
diff --git a/chrome/browser/ui/tabs/existing_base_sub_menu_model.cc b/chrome/browser/ui/tabs/existing_base_sub_menu_model.cc index 4796dd1..a43ac9a 100644 --- a/chrome/browser/ui/tabs/existing_base_sub_menu_model.cc +++ b/chrome/browser/ui/tabs/existing_base_sub_menu_model.cc
@@ -21,7 +21,7 @@ parent_new_command_id_(parent_new_command_id) {} const gfx::FontList* ExistingBaseSubMenuModel::GetLabelFontListAt( - int index) const { + size_t index) const { if (GetTypeAt(index) == ui::MenuModel::TYPE_TITLE) { return &ui::ResourceBundle::GetSharedInstance().GetFontList( ui::ResourceBundle::BoldFont); @@ -75,7 +75,7 @@ int command_id = min_command_id_ + 1; for (size_t i = 0; i < menu_item_infos.size(); ++i) { const MenuItemInfo& item = menu_item_infos[i]; - if (command_id > min_command_id_ + max_size) + if (command_id > min_command_id_ + static_cast<int>(max_size)) break; if (item.target_index.has_value()) { @@ -107,7 +107,7 @@ return command_id == min_command_id_; } -void ExistingBaseSubMenuModel::ExecuteExistingCommand(int target_index) {} +void ExistingBaseSubMenuModel::ExecuteExistingCommand(size_t target_index) {} int ExistingBaseSubMenuModel::GetContextIndex() const { return model_->GetIndexOfWebContents(context_contents_);
diff --git a/chrome/browser/ui/tabs/existing_base_sub_menu_model.h b/chrome/browser/ui/tabs/existing_base_sub_menu_model.h index c2eba01d..d7c2196 100644 --- a/chrome/browser/ui/tabs/existing_base_sub_menu_model.h +++ b/chrome/browser/ui/tabs/existing_base_sub_menu_model.h
@@ -36,7 +36,7 @@ int parent_new_command_id_); // ui::SimpleMenuModel - const gfx::FontList* GetLabelFontListAt(int index) const override; + const gfx::FontList* GetLabelFontListAt(size_t index) const override; // ui::SimpleMenuModel::Delegate bool IsCommandIdAlerted(int command_id) const override; @@ -51,7 +51,7 @@ ~ExistingBaseSubMenuModel() override; - const base::flat_map<int, int>& command_id_to_target_index_for_testing() { + const base::flat_map<int, size_t>& command_id_to_target_index_for_testing() { return command_id_to_target_index_; } @@ -73,7 +73,7 @@ // The target index for this item. E.g. tab group index or browser // index. If this field is not provided then the entry for this item will be // a title and have no corresponding command. - absl::optional<int> target_index; + absl::optional<size_t> target_index; // An optionally provided accessible name for this menu item. If // |accessible_name| is empty, then the default accessible name will be used @@ -96,10 +96,10 @@ // Performs the action for adding the tab to an existing object model (e.g. // group or window) at |target_index|. - virtual void ExecuteExistingCommand(int target_index); + virtual void ExecuteExistingCommand(size_t target_index); // Maximum number of entries for a submenu. - static constexpr int max_size = 200; + static constexpr size_t max_size = 200; ui::SimpleMenuModel::Delegate* parent_delegate() const { return parent_delegate_; @@ -116,7 +116,7 @@ // Stores a mapping from a menu item's command id to its target index (e.g. // tab-group index or browser index). - base::flat_map<int, int> command_id_to_target_index_; + base::flat_map<int, size_t> command_id_to_target_index_; }; #endif // CHROME_BROWSER_UI_TABS_EXISTING_BASE_SUB_MENU_MODEL_H_
diff --git a/chrome/browser/ui/tabs/existing_base_sub_menu_model_unittest.cc b/chrome/browser/ui/tabs/existing_base_sub_menu_model_unittest.cc index 3c85af6..a724ca4 100644 --- a/chrome/browser/ui/tabs/existing_base_sub_menu_model_unittest.cc +++ b/chrome/browser/ui/tabs/existing_base_sub_menu_model_unittest.cc
@@ -66,17 +66,17 @@ Build(IDS_TAB_CXMENU_SUBMENU_NEW_GROUP, infos_); } - const std::vector<int> existing_commands() const { + const std::vector<size_t> existing_commands() const { return existing_commands_; } protected: - void ExecuteExistingCommand(int target_index) override { + void ExecuteExistingCommand(size_t target_index) override { existing_commands_.push_back(target_index); } private: - std::vector<int> existing_commands_; + std::vector<size_t> existing_commands_; std::vector<MenuItemInfo> infos_; }; @@ -127,5 +127,5 @@ TEST_F(ExistingBaseSubMenuModelTest, ExecuteCommand_Existing) { test_model()->ExecuteCommand(kMinCommandId + 1, kExpectedFlags); test_model()->ExecuteCommand(kMinCommandId + 2, kExpectedFlags); - EXPECT_THAT(test_model()->existing_commands(), testing::ElementsAre(1, 2)); + EXPECT_THAT(test_model()->existing_commands(), testing::ElementsAre(1u, 2u)); }
diff --git a/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model.cc b/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model.cc index a95ee61d..73ed033 100644 --- a/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model.cc +++ b/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model.cc
@@ -59,7 +59,7 @@ // `target_index_to_group_mapping_`. CHECK_EQ(menu_item_infos.size(), groups.size()); for (const auto& group : groups) { - int index = target_index_to_group_mapping_.size(); + size_t index = target_index_to_group_mapping_.size(); menu_item_infos[index].target_index = index; target_index_to_group_mapping_.emplace(index, group); } @@ -82,7 +82,7 @@ CHECK_EQ(menu_item_infos.size(), groups.size() + target_index_to_group_mapping_.size()); for (const auto& group : groups) { - int index = target_index_to_group_mapping_.size(); + size_t index = target_index_to_group_mapping_.size(); menu_item_infos[index].target_index = index; target_index_to_group_mapping_.emplace(index, group); } @@ -159,12 +159,12 @@ return false; } -std::u16string ExistingTabGroupSubMenuModel::GetLabelAt(int index) const { +std::u16string ExistingTabGroupSubMenuModel::GetLabelAt(size_t index) const { return ui::EscapeMenuLabelAmpersands( ExistingBaseSubMenuModel::GetLabelAt(index)); } -void ExistingTabGroupSubMenuModel::ExecuteExistingCommand(int target_index) { +void ExistingTabGroupSubMenuModel::ExecuteExistingCommand(size_t target_index) { DCHECK_LE(size_t(target_index), target_index_to_group_mapping_.size()); TabGroupModel* group_model = model()->group_model(); if (!group_model) @@ -180,7 +180,7 @@ return; } - int browser_index = -1; + absl::optional<size_t> browser_index; std::vector<Browser*> browsers = tab_menu_model_delegate_->GetExistingWindowsForMoveMenu(); for (size_t i = 0; i < browsers.size(); ++i) { @@ -192,7 +192,7 @@ } } - if (browser_index < 0) + if (!browser_index.has_value()) return; std::vector<int> selected_indices; @@ -204,7 +204,8 @@ selected_indices = std::vector<int>(selection_indices.begin(), selection_indices.end()); } - TabStripModel* found_model = browsers[browser_index]->tab_strip_model(); + TabStripModel* found_model = + browsers[browser_index.value()]->tab_strip_model(); std::vector<int> selected_indices_in_found_model; const ui::ListSelectionModel::SelectedIndices selection_indices = found_model->selection_model().selected_indices(); @@ -214,7 +215,8 @@ // At the time this was written, all tabs moved to a new window via // MoveToExistingWindow() are placed at the end of the tabstrip, and any // previously selected tabs in the new window are unselected. - model()->delegate()->MoveToExistingWindow(selected_indices, browser_index); + model()->delegate()->MoveToExistingWindow(selected_indices, + browser_index.value()); // DCHECK that previously selected indices in the new model are now // unselected. @@ -255,6 +257,6 @@ } void ExistingTabGroupSubMenuModel::ExecuteExistingCommandForTesting( - int target_index) { + size_t target_index) { ExecuteExistingCommand(target_index); }
diff --git a/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model.h b/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model.h index 9fa71cd..1d4a85ce 100644 --- a/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model.h +++ b/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model.h
@@ -34,14 +34,14 @@ static bool ShouldShowSubmenu(TabStripModel* model, int context_index); // ExistingBaseSubMenuModel: - std::u16string GetLabelAt(int index) const override; + std::u16string GetLabelAt(size_t index) const override; // Used for testing. - void ExecuteExistingCommandForTesting(int target_index); + void ExecuteExistingCommandForTesting(size_t target_index); private: // ExistingBaseSubMenuModel - void ExecuteExistingCommand(int target_index) override; + void ExecuteExistingCommand(size_t target_index) override; // Retrieves all tab groups ids from the given model. const std::vector<tab_groups::TabGroupId> GetGroupsFromModel( @@ -61,7 +61,7 @@ // be used in cases where the tab groups returned from // GetOrderedTabGroupsInSubMenu changes after the menu has been opened but // before the action is taken from the menumodel. - std::map<int, tab_groups::TabGroupId> target_index_to_group_mapping_; + std::map<size_t, tab_groups::TabGroupId> target_index_to_group_mapping_; // Used to retrieve a list of browsers which potentially hold tab groups. const raw_ptr<TabMenuModelDelegate> tab_menu_model_delegate_;
diff --git a/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model_unittest.cc b/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model_unittest.cc index 07db517..e85cfc9 100644 --- a/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model_unittest.cc +++ b/chrome/browser/ui/tabs/existing_tab_group_sub_menu_model_unittest.cc
@@ -53,13 +53,13 @@ ASSERT_EQ(model->count(), 3); ExistingTabGroupSubMenuModel menu1(nullptr, nullptr, model, 0); - EXPECT_EQ(3, menu1.GetItemCount()); + EXPECT_EQ(3u, menu1.GetItemCount()); ExistingTabGroupSubMenuModel menu2(nullptr, nullptr, model, 1); - EXPECT_EQ(3, menu2.GetItemCount()); + EXPECT_EQ(3u, menu2.GetItemCount()); ExistingTabGroupSubMenuModel menu3(nullptr, nullptr, model, 2); - EXPECT_EQ(4, menu3.GetItemCount()); + EXPECT_EQ(4u, menu3.GetItemCount()); } // Verify tabs can be added tab groups in the same window. @@ -72,7 +72,7 @@ model->AddToNewGroup({0}); model->AddToNewGroup({1}); ExistingTabGroupSubMenuModel menu(nullptr, nullptr, model, 2); - EXPECT_EQ(4, menu.GetItemCount()); + EXPECT_EQ(4u, menu.GetItemCount()); // Move the tab at index 2 into the group with the tab at index 0. menu.ExecuteExistingCommandForTesting(0); @@ -83,7 +83,7 @@ ->tab_count()); ExistingTabGroupSubMenuModel menu2(nullptr, nullptr, model, 2); - EXPECT_EQ(3, menu2.GetItemCount()); + EXPECT_EQ(3u, menu2.GetItemCount()); } // Verify non-selected tabs can be added tab groups in the same window. @@ -102,7 +102,7 @@ // Create the menu on the tab at index 3. ExistingTabGroupSubMenuModel menu(nullptr, nullptr, model, 3); - EXPECT_EQ(4, menu.GetItemCount()); + EXPECT_EQ(4u, menu.GetItemCount()); // Move the tab at index 2 into the group with the tab at index 0. menu.ExecuteExistingCommandForTesting(0); @@ -115,8 +115,8 @@ ExistingTabGroupSubMenuModel menu2(nullptr, nullptr, model, 2); ExistingTabGroupSubMenuModel menu3(nullptr, nullptr, model, 3); - EXPECT_EQ(3, menu2.GetItemCount()); - EXPECT_EQ(4, menu3.GetItemCount()); + EXPECT_EQ(3u, menu2.GetItemCount()); + EXPECT_EQ(4u, menu3.GetItemCount()); } // Verify tabs can be added to tab groups in other browser windows. @@ -163,7 +163,7 @@ std::vector<int> selected_indices = std::vector<int>(selection_indices.begin(), selection_indices.end()); EXPECT_EQ(selected_indices.size(), size_t(3)); - EXPECT_EQ(4, menu_1.GetItemCount()); + EXPECT_EQ(4u, menu_1.GetItemCount()); // Move the 3 selected indices in model_1 to model_2. menu_1.ExecuteExistingCommandForTesting(1);
diff --git a/chrome/browser/ui/tabs/existing_window_sub_menu_model.cc b/chrome/browser/ui/tabs/existing_window_sub_menu_model.cc index 2ec52c8..36a8ab0 100644 --- a/chrome/browser/ui/tabs/existing_window_sub_menu_model.cc +++ b/chrome/browser/ui/tabs/existing_window_sub_menu_model.cc
@@ -106,11 +106,11 @@ browser->GetWindowTitleForMaxWidth(kWindowTitleForMenuMaxWidth); menu_item_infos.emplace_back(window_title); menu_item_infos.back().may_have_mnemonics = false; - menu_item_infos.back().target_index = static_cast<int>(i); + menu_item_infos.back().target_index = i; } return menu_item_infos; } -void ExistingWindowSubMenuModel::ExecuteExistingCommand(int target_index) { +void ExistingWindowSubMenuModel::ExecuteExistingCommand(size_t target_index) { model()->ExecuteAddToExistingWindowCommand(GetContextIndex(), target_index); }
diff --git a/chrome/browser/ui/tabs/existing_window_sub_menu_model.h b/chrome/browser/ui/tabs/existing_window_sub_menu_model.h index 8b1b5bc..3f27dc9 100644 --- a/chrome/browser/ui/tabs/existing_window_sub_menu_model.h +++ b/chrome/browser/ui/tabs/existing_window_sub_menu_model.h
@@ -66,7 +66,7 @@ private: // ExistingBaseSubMenuModel: - void ExecuteExistingCommand(int target_index) override; + void ExecuteExistingCommand(size_t target_index) override; }; #endif // CHROME_BROWSER_UI_TABS_EXISTING_WINDOW_SUB_MENU_MODEL_H_
diff --git a/chrome/browser/ui/tabs/existing_window_sub_menu_model_unittest.cc b/chrome/browser/ui/tabs/existing_window_sub_menu_model_unittest.cc index 9caa2d4..ec39457c 100644 --- a/chrome/browser/ui/tabs/existing_window_sub_menu_model_unittest.cc +++ b/chrome/browser/ui/tabs/existing_window_sub_menu_model_unittest.cc
@@ -233,7 +233,7 @@ auto menu1 = ExistingWindowSubMenuModel::Create( nullptr, browser()->tab_menu_model_delegate(), browser()->tab_strip_model(), 0); - ASSERT_EQ(5, menu1->GetItemCount()); + ASSERT_EQ(5u, menu1->GetItemCount()); CheckBrowserTitle(menu1->GetLabelAt(2), kLongTabTitleExample, 3); CheckBrowserTitle(menu1->GetLabelAt(3), "Browser 3 Tab 2", 2); CheckBrowserTitle(menu1->GetLabelAt(4), kLongTabTitleExample, 1); @@ -242,7 +242,7 @@ auto menu2 = ExistingWindowSubMenuModel::Create( nullptr, browser_2->tab_menu_model_delegate(), browser_2->tab_strip_model(), 0); - ASSERT_EQ(5, menu2->GetItemCount()); + ASSERT_EQ(5u, menu2->GetItemCount()); CheckBrowserTitle(menu2->GetLabelAt(2), kLongTabTitleExample, 3); CheckBrowserTitle(menu2->GetLabelAt(3), "Browser 3 Tab 2", 2); CheckBrowserTitle(menu2->GetLabelAt(4), "Browser 1", 1); @@ -254,7 +254,7 @@ auto menu3 = ExistingWindowSubMenuModel::Create( nullptr, browser_3->tab_menu_model_delegate(), browser_3->tab_strip_model(), 0); - ASSERT_EQ(5, menu3->GetItemCount()); + ASSERT_EQ(5u, menu3->GetItemCount()); CheckBrowserTitle(menu3->GetLabelAt(2), kLongTabTitleExample, 1); CheckBrowserTitle(menu3->GetLabelAt(3), "Browser 1", 1); CheckBrowserTitle(menu3->GetLabelAt(4), kLongTabTitleExample, 3); @@ -291,7 +291,7 @@ auto menu = ExistingWindowSubMenuModel::Create( nullptr, browser()->tab_menu_model_delegate(), browser()->tab_strip_model(), 0); - ASSERT_EQ(4, menu->GetItemCount()); + ASSERT_EQ(4u, menu->GetItemCount()); ASSERT_EQ(kBrowser3ExpectedTitle, menu->GetLabelAt(2)); ASSERT_EQ(kBrowser2ExpectedTitle, menu->GetLabelAt(3)); @@ -299,7 +299,7 @@ auto menu_incognito = ExistingWindowSubMenuModel::Create( nullptr, incognito_browser_1->tab_menu_model_delegate(), incognito_browser_1->tab_strip_model(), 0); - ASSERT_EQ(3, menu_incognito->GetItemCount()); + ASSERT_EQ(3u, menu_incognito->GetItemCount()); ASSERT_EQ(kIncognitoBrowser2ExpectedTitle, menu_incognito->GetLabelAt(2)); // Clean up. @@ -329,7 +329,7 @@ auto menu = ExistingWindowSubMenuModel::Create( nullptr, browser()->tab_menu_model_delegate(), browser()->tab_strip_model(), 0); - ASSERT_EQ(4, menu->GetItemCount()); + ASSERT_EQ(4u, menu->GetItemCount()); ASSERT_EQ(kBrowser3ExpectedTitle, menu->GetLabelAt(2)); ASSERT_EQ(kBrowser2ExpectedTitle, menu->GetLabelAt(3)); @@ -397,7 +397,7 @@ auto menu1 = ExistingWindowSubMenuModel::Create( nullptr, browser()->tab_menu_model_delegate(), browser()->tab_strip_model(), 0); - ASSERT_EQ(15, menu1->GetItemCount()); + ASSERT_EQ(15u, menu1->GetItemCount()); EXPECT_EQ(u"Desk 1 (Current)", menu1->GetLabelAt(2)); CheckBrowserTitle(menu1->GetLabelAt(3), kBrowser2TabTitle, 1); EXPECT_EQ(ui::SPACING_SEPARATOR, menu1->GetSeparatorTypeAt(4));
diff --git a/chrome/browser/ui/tabs/tab_menu_model_unittest.cc b/chrome/browser/ui/tabs/tab_menu_model_unittest.cc index 2a9df4d4..eeab4ac68 100644 --- a/chrome/browser/ui/tabs/tab_menu_model_unittest.cc +++ b/chrome/browser/ui/tabs/tab_menu_model_unittest.cc
@@ -27,7 +27,7 @@ // Verify it has items. The number varies by platform, so we don't check // the exact number. - EXPECT_GT(model.GetItemCount(), 5); + EXPECT_GT(model.GetItemCount(), 5u); int item_count = 0; CountEnabledExecutable(&model, &item_count); @@ -42,8 +42,9 @@ browser()->tab_strip_model(), 0); // Verify that CommandMoveTabsToNewWindow is in the menu. - EXPECT_GT( - model.GetIndexOfCommandId(TabStripModel::CommandMoveTabsToNewWindow), -1); + EXPECT_TRUE( + model.GetIndexOfCommandId(TabStripModel::CommandMoveTabsToNewWindow) + .has_value()); } TEST_F(TabMenuModelTest, AddToExistingGroupSubmenu) { @@ -61,12 +62,13 @@ TabMenuModel menu(&delegate_, browser()->tab_menu_model_delegate(), tab_strip_model, 3); - int submenu_index = - menu.GetIndexOfCommandId(TabStripModel::CommandAddToExistingGroup); + size_t submenu_index = + menu.GetIndexOfCommandId(TabStripModel::CommandAddToExistingGroup) + .value(); ui::MenuModel* submenu = menu.GetSubmenuModelAt(submenu_index); EXPECT_TRUE(submenu->HasIcons()); - EXPECT_EQ(submenu->GetItemCount(), 5); + EXPECT_EQ(submenu->GetItemCount(), 5u); EXPECT_EQ(submenu->GetCommandIdAt(0), ExistingBaseSubMenuModel::kMinExistingTabGroupCommandId); EXPECT_EQ(submenu->GetTypeAt(1), ui::MenuModel::TYPE_SEPARATOR); @@ -93,12 +95,13 @@ TabMenuModel menu(&delegate_, browser()->tab_menu_model_delegate(), tab_strip_model, 1); - int submenu_index = - menu.GetIndexOfCommandId(TabStripModel::CommandAddToExistingGroup); + size_t submenu_index = + menu.GetIndexOfCommandId(TabStripModel::CommandAddToExistingGroup) + .value(); ui::MenuModel* submenu = menu.GetSubmenuModelAt(submenu_index); EXPECT_TRUE(submenu->HasIcons()); - EXPECT_EQ(submenu->GetItemCount(), 4); + EXPECT_EQ(submenu->GetItemCount(), 4u); EXPECT_EQ(submenu->GetCommandIdAt(0), ExistingBaseSubMenuModel::kMinExistingTabGroupCommandId); EXPECT_EQ(submenu->GetTypeAt(1), ui::MenuModel::TYPE_SEPARATOR); @@ -123,11 +126,12 @@ TabMenuModel menu(&delegate_, browser()->tab_menu_model_delegate(), tab_strip_model, 1); - int submenu_index = - menu.GetIndexOfCommandId(TabStripModel::CommandAddToExistingGroup); + size_t submenu_index = + menu.GetIndexOfCommandId(TabStripModel::CommandAddToExistingGroup) + .value(); ui::MenuModel* submenu = menu.GetSubmenuModelAt(submenu_index); - EXPECT_EQ(submenu->GetItemCount(), 3); + EXPECT_EQ(submenu->GetItemCount(), 3u); // Ungroup the tab at 0 to make the group in the menu dangle. tab_strip_model->RemoveFromGroup({0}); @@ -183,8 +187,10 @@ std::string()); TabMenuModel menu(&delegate_, browser()->tab_menu_model_delegate(), tab_strip, 0); - EXPECT_EQ(-1, menu.GetIndexOfCommandId(TabStripModel::CommandFollowSite)); - EXPECT_EQ(-1, menu.GetIndexOfCommandId(TabStripModel::CommandUnfollowSite)); + EXPECT_FALSE( + menu.GetIndexOfCommandId(TabStripModel::CommandFollowSite).has_value()); + EXPECT_FALSE(menu.GetIndexOfCommandId(TabStripModel::CommandUnfollowSite) + .has_value()); } // "Unfollow site" should be added when all sites are in kFollowed state. @@ -200,8 +206,10 @@ std::string()); TabMenuModel menu(&delegate_, browser()->tab_menu_model_delegate(), tab_strip, 0); - EXPECT_EQ(-1, menu.GetIndexOfCommandId(TabStripModel::CommandFollowSite)); - EXPECT_NE(-1, menu.GetIndexOfCommandId(TabStripModel::CommandUnfollowSite)); + EXPECT_FALSE( + menu.GetIndexOfCommandId(TabStripModel::CommandFollowSite).has_value()); + EXPECT_TRUE(menu.GetIndexOfCommandId(TabStripModel::CommandUnfollowSite) + .has_value()); } // "Follow site" should be added when not all sites are in kFollowed state. @@ -217,8 +225,10 @@ TabWebFeedFollowState::kNotFollowed, std::string()); TabMenuModel menu(&delegate_, browser()->tab_menu_model_delegate(), tab_strip, 0); - EXPECT_NE(-1, menu.GetIndexOfCommandId(TabStripModel::CommandFollowSite)); - EXPECT_EQ(-1, menu.GetIndexOfCommandId(TabStripModel::CommandUnfollowSite)); + EXPECT_TRUE( + menu.GetIndexOfCommandId(TabStripModel::CommandFollowSite).has_value()); + EXPECT_FALSE(menu.GetIndexOfCommandId(TabStripModel::CommandUnfollowSite) + .has_value()); } // Neither "Follow site" nor "Unfollow site" should be added when the recorded @@ -236,7 +246,9 @@ std::string()); TabMenuModel menu(&delegate_, browser()->tab_menu_model_delegate(), tab_strip, 0); - EXPECT_EQ(-1, menu.GetIndexOfCommandId(TabStripModel::CommandFollowSite)); - EXPECT_EQ(-1, menu.GetIndexOfCommandId(TabStripModel::CommandUnfollowSite)); + EXPECT_FALSE( + menu.GetIndexOfCommandId(TabStripModel::CommandFollowSite).has_value()); + EXPECT_FALSE(menu.GetIndexOfCommandId(TabStripModel::CommandUnfollowSite) + .has_value()); } }
diff --git a/chrome/browser/ui/toolbar/app_menu_model.cc b/chrome/browser/ui/toolbar/app_menu_model.cc index f3e1413..5d3ee40 100644 --- a/chrome/browser/ui/toolbar/app_menu_model.cc +++ b/chrome/browser/ui/toolbar/app_menu_model.cc
@@ -198,21 +198,22 @@ if (base::FeatureList::IsEnabled(features::kChromeTipsInMainMenu)) { AddItem(IDC_CHROME_TIPS, l10n_util::GetStringUTF16(IDS_CHROME_TIPS)); if (base::FeatureList::IsEnabled(features::kChromeTipsInMainMenuNewBadge)) - SetIsNewFeatureAt(GetIndexOfCommandId(IDC_CHROME_TIPS), true); + SetIsNewFeatureAt(GetIndexOfCommandId(IDC_CHROME_TIPS).value(), true); } if (base::FeatureList::IsEnabled(features::kChromeWhatsNewUI)) { AddItem(IDC_CHROME_WHATS_NEW, l10n_util::GetStringUTF16(IDS_CHROME_WHATS_NEW)); if (base::FeatureList::IsEnabled( features::kChromeWhatsNewInMainMenuNewBadge)) { - SetIsNewFeatureAt(GetIndexOfCommandId(IDC_CHROME_WHATS_NEW), true); + SetIsNewFeatureAt(GetIndexOfCommandId(IDC_CHROME_WHATS_NEW).value(), + true); } } #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) AddItemWithStringId(IDC_HELP_PAGE_VIA_MENU, help_string_id); if (browser_defaults::kShowHelpMenuItemIcon) { ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); - SetIcon(GetIndexOfCommandId(IDC_HELP_PAGE_VIA_MENU), + SetIcon(GetIndexOfCommandId(IDC_HELP_PAGE_VIA_MENU).value(), ui::ImageModel::FromImage(rb.GetNativeImageNamed(IDR_HELP_MENU))); } if (browser->profile()->GetPrefs()->GetBoolean(prefs::kUserFeedbackAllowed)) @@ -820,7 +821,7 @@ // - Browser relaunch, quit. void AppMenuModel::Build() { // Build (and, by extension, Init) should only be called once. - DCHECK_EQ(0, GetItemCount()); + DCHECK_EQ(0u, GetItemCount()); bool need_separator = false; if (IsCommandIdVisible(IDC_UPGRADE_DIALOG)) { @@ -854,11 +855,11 @@ std::make_unique<RecentTabsSubMenuModel>(provider_, browser_)); AddSubMenuWithStringId(IDC_RECENT_TABS_MENU, IDS_HISTORY_MENU, sub_menus_.back().get()); - SetElementIdentifierAt(GetIndexOfCommandId(IDC_RECENT_TABS_MENU), + SetElementIdentifierAt(GetIndexOfCommandId(IDC_RECENT_TABS_MENU).value(), kHistoryMenuItem); } AddItemWithStringId(IDC_SHOW_DOWNLOADS, IDS_SHOW_DOWNLOADS); - SetElementIdentifierAt(GetIndexOfCommandId(IDC_SHOW_DOWNLOADS), + SetElementIdentifierAt(GetIndexOfCommandId(IDC_SHOW_DOWNLOADS).value(), kDownloadsMenuItem); if (!browser_->profile()->IsGuestSession()) { bookmark_sub_menu_model_ = @@ -1017,7 +1018,7 @@ DCHECK(error); if (error->HasMenuItem()) { AddItem(error->MenuItemCommandID(), error->MenuItemLabel()); - SetIcon(GetIndexOfCommandId(error->MenuItemCommandID()), + SetIcon(GetIndexOfCommandId(error->MenuItemCommandID()).value(), error->MenuItemIcon()); menu_items_added = true; } @@ -1037,23 +1038,23 @@ policy::SystemFeature::kBrowserSettings, g_browser_process->local_state()); - int index = GetIndexOfCommandId(IDC_OPTIONS); - if (index != -1) - SetEnabledAt(index, !is_disabled); + absl::optional<size_t> index = GetIndexOfCommandId(IDC_OPTIONS); + if (index.has_value()) + SetEnabledAt(index.value(), !is_disabled); #if BUILDFLAG(GOOGLE_CHROME_BRANDING) index = GetIndexOfCommandId(IDC_HELP_MENU); - if (index != -1) { + if (index.has_value()) { ui::SimpleMenuModel* help_menu = - static_cast<ui::SimpleMenuModel*>(GetSubmenuModelAt(index)); + static_cast<ui::SimpleMenuModel*>(GetSubmenuModelAt(index.has_value())); index = help_menu->GetIndexOfCommandId(IDC_ABOUT); - if (index != -1) - help_menu->SetEnabledAt(index, !is_disabled); + if (index.has_value()) + help_menu->SetEnabledAt(index.value(), !is_disabled); } #else // BUILDFLAG(GOOGLE_CHROME_BRANDING) index = GetIndexOfCommandId(IDC_ABOUT); - if (index != -1) - SetEnabledAt(index, !is_disabled); + if (index.has_value()) + SetEnabledAt(index.value(), !is_disabled); #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) } #endif // BUILDFLAG(IS_CHROMEOS)
diff --git a/chrome/browser/ui/toolbar/app_menu_model_unittest.cc b/chrome/browser/ui/toolbar/app_menu_model_unittest.cc index 2e3de9c..2cbb6248 100644 --- a/chrome/browser/ui/toolbar/app_menu_model_unittest.cc +++ b/chrome/browser/ui/toolbar/app_menu_model_unittest.cc
@@ -171,11 +171,11 @@ &fake_delegate); TestAppMenuModel model(this, browser(), &app_menu_icon_controller); model.Init(); - int itemCount = model.GetItemCount(); + size_t item_count = model.GetItemCount(); // Verify it has items. The number varies by platform, so we don't check // the exact number. - EXPECT_GT(itemCount, 10); + EXPECT_GT(item_count, 10u); // Verify that the upgrade item is visible if supported. EXPECT_EQ(browser_defaults::kShowUpgradeMenuItem, @@ -189,14 +189,14 @@ // delegate is internal, it doesn't use the one we pass in. // Note: the second item in the menu may be a separator if the browser // supports showing upgrade status in the app menu. - int item_index = 1; + size_t item_index = 1; if (model.GetTypeAt(item_index) == ui::MenuModel::TYPE_SEPARATOR) ++item_index; model.ActivatedAt(item_index); EXPECT_TRUE(model.IsEnabledAt(item_index)); // Make sure to use the index that is not separator in all configurations. - model.ActivatedAt(itemCount - 1); - EXPECT_TRUE(model.IsEnabledAt(itemCount - 1)); + model.ActivatedAt(item_count - 1); + EXPECT_TRUE(model.IsEnabledAt(item_count - 1)); EXPECT_EQ(model.execute_count_, 2); EXPECT_EQ(model.enable_count_, 2); @@ -206,21 +206,21 @@ // Choose something from the bookmark submenu and make sure it makes it back // to the delegate as well. - int bookmarks_model_index = -1; - for (int i = 0; i < itemCount; ++i) { + size_t bookmarks_model_index = 0; + for (size_t i = 0; i < item_count; ++i) { if (model.GetTypeAt(i) == ui::MenuModel::TYPE_SUBMENU) { // The bookmarks submenu comes after the Tabs and Downloads items. bookmarks_model_index = i + 2; break; } } - EXPECT_GT(bookmarks_model_index, -1); + EXPECT_GT(bookmarks_model_index, 0u); ui::MenuModel* bookmarks_model = model.GetSubmenuModelAt(bookmarks_model_index); EXPECT_TRUE(bookmarks_model); // The bookmarks model may be empty until we tell it we're going to show it. bookmarks_model->MenuWillShow(); - EXPECT_GT(bookmarks_model->GetItemCount(), 1); + EXPECT_GT(bookmarks_model->GetItemCount(), 1u); // Bookmark manager item. bookmarks_model->ActivatedAt(4); @@ -243,19 +243,19 @@ AppMenuModel model(this, browser()); model.Init(); - int index1 = model.GetIndexOfCommandId(command1); - EXPECT_GT(index1, -1); - int index2 = model.GetIndexOfCommandId(command2); - EXPECT_GT(index2, -1); + absl::optional<size_t> index1 = model.GetIndexOfCommandId(command1); + ASSERT_TRUE(index1.has_value()); + absl::optional<size_t> index2 = model.GetIndexOfCommandId(command2); + ASSERT_TRUE(index2.has_value()); - EXPECT_TRUE(model.IsEnabledAt(index1)); + EXPECT_TRUE(model.IsEnabledAt(index1.value())); EXPECT_EQ(0, error1->execute_count()); - model.ActivatedAt(index1); + model.ActivatedAt(index1.value()); EXPECT_EQ(1, error1->execute_count()); - EXPECT_TRUE(model.IsEnabledAt(index2)); + EXPECT_TRUE(model.IsEnabledAt(index2.value())); EXPECT_EQ(0, error2->execute_count()); - model.ActivatedAt(index2); + model.ActivatedAt(index2.value()); EXPECT_EQ(1, error1->execute_count()); } @@ -265,17 +265,18 @@ TEST_F(AppMenuModelTest, DisableSettingsItem) { AppMenuModel model(this, browser()); model.Init(); - const int options_index = model.GetIndexOfCommandId(IDC_OPTIONS); + const size_t options_index = model.GetIndexOfCommandId(IDC_OPTIONS).value(); EXPECT_TRUE(model.IsEnabledAt(options_index)); #if BUILDFLAG(GOOGLE_CHROME_BRANDING) - const int help_menu_index = model.GetIndexOfCommandId(IDC_HELP_MENU); + const size_t help_menu_index = + model.GetIndexOfCommandId(IDC_HELP_MENU).value(); ui::SimpleMenuModel* help_menu = static_cast<ui::SimpleMenuModel*>( model.GetSubmenuModelAt(help_menu_index)); - const int about_index = help_menu->GetIndexOfCommandId(IDC_ABOUT); + const size_t about_index = help_menu->GetIndexOfCommandId(IDC_ABOUT).value(); EXPECT_TRUE(help_menu->IsEnabledAt(about_index)); #else - const int about_index = model.GetIndexOfCommandId(IDC_ABOUT); + const size_t about_index = model.GetIndexOfCommandId(IDC_ABOUT).value(); EXPECT_TRUE(model.IsEnabledAt(about_index)); #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
diff --git a/chrome/browser/ui/toolbar/back_forward_menu_model.cc b/chrome/browser/ui/toolbar/back_forward_menu_model.cc index 8513a3e..6ab722c 100644 --- a/chrome/browser/ui/toolbar/back_forward_menu_model.cc +++ b/chrome/browser/ui/toolbar/back_forward_menu_model.cc
@@ -42,8 +42,8 @@ using content::NavigationEntry; using content::WebContents; -const int BackForwardMenuModel::kMaxHistoryItems = 12; -const int BackForwardMenuModel::kMaxChapterStops = 5; +const size_t BackForwardMenuModel::kMaxHistoryItems = 12; +const size_t BackForwardMenuModel::kMaxChapterStops = 5; static const int kMaxBackForwardMenuWidth = 700; BackForwardMenuModel::BackForwardMenuModel(Browser* browser, @@ -56,12 +56,12 @@ return true; } -int BackForwardMenuModel::GetItemCount() const { - int items = GetHistoryItemCount(); - if (items <= 0) +size_t BackForwardMenuModel::GetItemCount() const { + size_t items = GetHistoryItemCount(); + if (items == 0) return items; - int chapter_stops = 0; + size_t chapter_stops = 0; // Next, we count ChapterStops, if any. if (items == kMaxHistoryItems) @@ -81,20 +81,20 @@ return items; } -ui::MenuModel::ItemType BackForwardMenuModel::GetTypeAt(int index) const { +ui::MenuModel::ItemType BackForwardMenuModel::GetTypeAt(size_t index) const { return IsSeparator(index) ? TYPE_SEPARATOR : TYPE_COMMAND; } ui::MenuSeparatorType BackForwardMenuModel::GetSeparatorTypeAt( - int index) const { + size_t index) const { return ui::NORMAL_SEPARATOR; } -int BackForwardMenuModel::GetCommandIdAt(int index) const { - return index; +int BackForwardMenuModel::GetCommandIdAt(size_t index) const { + return static_cast<int>(index); } -std::u16string BackForwardMenuModel::GetLabelAt(int index) const { +std::u16string BackForwardMenuModel::GetLabelAt(size_t index) const { // Return label "Show Full History" for the last item of the menu. if (ShouldShowFullHistoryBeVisible() && index == GetItemCount() - 1) return l10n_util::GetStringUTF16(IDS_HISTORY_SHOWFULLHISTORY_LINK); @@ -114,13 +114,13 @@ return menu_text; } -bool BackForwardMenuModel::IsItemDynamicAt(int index) const { +bool BackForwardMenuModel::IsItemDynamicAt(size_t index) const { // This object is only used for a single showing of a menu. return false; } bool BackForwardMenuModel::GetAcceleratorAt( - int index, + size_t index, ui::Accelerator* accelerator) const { return false; } @@ -129,11 +129,11 @@ return false; } -int BackForwardMenuModel::GetGroupIdAt(int index) const { +int BackForwardMenuModel::GetGroupIdAt(size_t index) const { return false; } -ui::ImageModel BackForwardMenuModel::GetIconAt(int index) const { +ui::ImageModel BackForwardMenuModel::GetIconAt(size_t index) const { if (!ItemHasIcon(index)) return ui::ImageModel(); @@ -142,45 +142,45 @@ return ui::ImageModel::FromImage( ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed( IDR_HISTORY_FAVICON)); - } else { - NavigationEntry* entry = GetNavigationEntry(index); - content::FaviconStatus fav_icon = entry->GetFavicon(); - if (!fav_icon.valid && menu_model_delegate()) { - // FetchFavicon is not const because it caches the result, but GetIconAt - // is const because it is not be apparent to outside observers that an - // internal change is taking place. Compared to spreading const in - // unintuitive places (e.g. making menu_model_delegate() const but - // returning a non-const while sprinkling virtual on member variables), - // this const_cast is the lesser evil. - const_cast<BackForwardMenuModel*>(this)->FetchFavicon(entry); - } - return ui::ImageModel::FromImage(fav_icon.image); } + NavigationEntry* entry = GetNavigationEntry(index); + content::FaviconStatus fav_icon = entry->GetFavicon(); + if (!fav_icon.valid && menu_model_delegate()) { + // FetchFavicon is not const because it caches the result, but GetIconAt + // is const because it is not be apparent to outside observers that an + // internal change is taking place. Compared to spreading const in + // unintuitive places (e.g. making menu_model_delegate() const but + // returning a non-const while sprinkling virtual on member variables), + // this const_cast is the lesser evil. + const_cast<BackForwardMenuModel*>(this)->FetchFavicon(entry); + } + return ui::ImageModel::FromImage(fav_icon.image); } ui::ButtonMenuItemModel* BackForwardMenuModel::GetButtonMenuItemAt( - int index) const { + size_t index) const { return nullptr; } -bool BackForwardMenuModel::IsEnabledAt(int index) const { +bool BackForwardMenuModel::IsEnabledAt(size_t index) const { return index < GetItemCount() && !IsSeparator(index); } -ui::MenuModel* BackForwardMenuModel::GetSubmenuModelAt(int index) const { +ui::MenuModel* BackForwardMenuModel::GetSubmenuModelAt(size_t index) const { return nullptr; } -void BackForwardMenuModel::ActivatedAt(int index) { +void BackForwardMenuModel::ActivatedAt(size_t index) { ActivatedAt(index, 0); } -void BackForwardMenuModel::ActivatedAt(int index, int event_flags) { +void BackForwardMenuModel::ActivatedAt(size_t index, int event_flags) { DCHECK(!IsSeparator(index)); // Execute the command for the last item: "Show Full History". if (ShouldShowFullHistoryBeVisible() && index == GetItemCount() - 1) { - base::RecordComputedAction(BuildActionName("ShowFullHistory", -1)); + base::RecordComputedAction( + BuildActionName("ShowFullHistory", absl::nullopt)); NavigateParams params(GetSingletonTabNavigateParams( browser_, GURL(chrome::kChromeUIHistoryURL))); ShowSingletonTabOverwritingNTP(browser_, ¶ms); @@ -188,46 +188,49 @@ } // Log whether it was a history or chapter click. - int items = GetHistoryItemCount(); + size_t items = GetHistoryItemCount(); if (index < items) { base::RecordComputedAction(BuildActionName("HistoryClick", index)); } else { - const int chapter_index = index - items - 1; + const auto chapter_index = (index == items) + ? absl::nullopt + : absl::make_optional(index - items - 1); base::RecordComputedAction(BuildActionName("ChapterClick", chapter_index)); } - int controller_index = MenuIndexToNavEntryIndex(index); + absl::optional<size_t> controller_index = MenuIndexToNavEntryIndex(index); + DCHECK(controller_index.has_value()); UMA_HISTOGRAM_BOOLEAN( "Navigation.BackForward.NavigatingToEntryMarkedToBeSkipped", GetWebContents()->GetController().IsEntryMarkedToBeSkipped( - controller_index)); + controller_index.value())); WindowOpenDisposition disposition = ui::DispositionFromEventFlags(event_flags); - chrome::NavigateToIndexWithDisposition(browser_, controller_index, + chrome::NavigateToIndexWithDisposition(browser_, controller_index.value(), disposition); } void BackForwardMenuModel::MenuWillShow() { - base::RecordComputedAction(BuildActionName("Popup", -1)); + base::RecordComputedAction(BuildActionName("Popup", absl::nullopt)); requested_favicons_.clear(); cancelable_task_tracker_.TryCancelAll(); } -bool BackForwardMenuModel::IsSeparator(int index) const { - int history_items = GetHistoryItemCount(); +bool BackForwardMenuModel::IsSeparator(size_t index) const { + size_t history_items = GetHistoryItemCount(); // If the index is past the number of history items + separator, // we then consider if it is a chapter-stop entry. if (index > history_items) { // We either are in ChapterStop area, or at the end of the list (the "Show // Full History" link). - int chapter_stops = GetChapterStopCount(history_items); + size_t chapter_stops = GetChapterStopCount(history_items); if (chapter_stops == 0) return false; // We must have reached the "Show Full History" link. // Otherwise, look to see if we have reached the separator for the // chapter-stops. If not, this is a chapter stop. - return (index == history_items + 1 + chapter_stops); + return index == history_items + 1 + chapter_stops; } // Look to see if we have reached the separator for the history items. @@ -262,8 +265,8 @@ // Find the current model_index for the unique id. NavigationEntry* entry = nullptr; - int model_index = -1; - for (int i = 0; i < GetItemCount() - 1; i++) { + size_t model_index = 0; + for (size_t i = 0; i + 1 < GetItemCount(); ++i) { if (IsSeparator(i)) continue; if (GetNavigationEntry(i)->GetUniqueID() == navigation_entry_unique_id) { @@ -290,64 +293,64 @@ } } -int BackForwardMenuModel::GetHistoryItemCount() const { +size_t BackForwardMenuModel::GetHistoryItemCount() const { WebContents* contents = GetWebContents(); if (!contents) return 0; - int items = contents->GetController().GetCurrentEntryIndex(); + size_t items = contents->GetController().GetCurrentEntryIndex(); if (model_type_ == ModelType::kForward) { // Only count items from n+1 to end (if n is current entry) items = contents->GetController().GetEntryCount() - items - 1; } - return base::clamp(items, 0, kMaxHistoryItems); + return std::min(items, kMaxHistoryItems); } -int BackForwardMenuModel::GetChapterStopCount(int history_items) const { +size_t BackForwardMenuModel::GetChapterStopCount(size_t history_items) const { if (history_items != kMaxHistoryItems) return 0; WebContents* contents = GetWebContents(); - int current_entry = contents->GetController().GetCurrentEntryIndex(); + size_t current_entry = contents->GetController().GetCurrentEntryIndex(); const bool forward = model_type_ == ModelType::kForward; - int chapter_id = current_entry; - if (forward) - chapter_id += history_items; - else - chapter_id -= history_items; + size_t chapter_id = current_entry; + if (!forward && chapter_id < history_items) + return 0; + chapter_id = + forward ? (chapter_id + history_items) : (chapter_id - history_items); - int chapter_stops = 0; + size_t chapter_stops = 0; do { - chapter_id = GetIndexOfNextChapterStop(chapter_id, forward); - if (chapter_id == -1) + const absl::optional<size_t> index = + GetIndexOfNextChapterStop(chapter_id, forward); + if (!index.has_value()) break; + chapter_id = index.value(); ++chapter_stops; } while (chapter_stops < kMaxChapterStops); return chapter_stops; } -int BackForwardMenuModel::GetIndexOfNextChapterStop(int start_from, - bool forward) const { - if (start_from < 0) - return -1; // Out of bounds. - +absl::optional<size_t> BackForwardMenuModel::GetIndexOfNextChapterStop( + size_t start_from, + bool forward) const { // We want to advance over the current chapter stop, so we add one. // We don't need to do this when direction is backwards. if (forward) start_from++; NavigationController& controller = GetWebContents()->GetController(); - const int max_count = controller.GetEntryCount(); + const size_t max_count = controller.GetEntryCount(); if (start_from >= max_count) - return -1; // Out of bounds. + return absl::nullopt; // Out of bounds. NavigationEntry* start_entry = controller.GetEntryAtIndex(start_from); const GURL& url = start_entry->GetURL(); - auto same_domain_func = [&controller, &url](int i) { + auto same_domain_func = [&controller, &url](size_t i) { return net::registry_controlled_domains::SameDomainOrHost( url, controller.GetEntryAtIndex(i)->GetURL(), net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES); @@ -356,7 +359,7 @@ if (forward) { // When going forwards we return the entry before the entry that has a // different domain. - for (int i = start_from + 1; i < max_count; ++i) { + for (size_t i = start_from + 1; i < max_count; ++i) { if (!same_domain_func(i)) return i - 1; } @@ -366,36 +369,39 @@ // When going backwards we return the first entry we find that has a // different domain. - for (int i = start_from - 1; i >= 0; --i) { - if (!same_domain_func(i)) - return i; + for (size_t i = start_from; i > 0; --i) { + if (!same_domain_func(i - 1)) + return i - 1; } // We have reached the beginning without finding a chapter stop. - return -1; + return absl::nullopt; } -int BackForwardMenuModel::FindChapterStop(int offset, - bool forward, - int skip) const { - if (offset < 0 || skip < 0) - return -1; - - if (!forward) - offset *= -1; - +absl::optional<size_t> BackForwardMenuModel::FindChapterStop( + size_t offset, + bool forward, + size_t skip) const { WebContents* contents = GetWebContents(); - int entry = contents->GetController().GetCurrentEntryIndex() + offset; - for (int i = 0; i < skip + 1; i++) - entry = GetIndexOfNextChapterStop(entry, forward); + size_t entry = contents->GetController().GetCurrentEntryIndex(); + if (!forward && entry < offset) + return absl::nullopt; + entry = forward ? (entry + offset) : (entry - offset); + for (size_t i = 0; i <= skip; ++i) { + const absl::optional<size_t> index = + GetIndexOfNextChapterStop(entry, forward); + if (!index.has_value()) + return absl::nullopt; + entry = index.value(); + } return entry; } -bool BackForwardMenuModel::ItemHasCommand(int index) const { +bool BackForwardMenuModel::ItemHasCommand(size_t index) const { return index < GetItemCount() && !IsSeparator(index); } -bool BackForwardMenuModel::ItemHasIcon(int index) const { +bool BackForwardMenuModel::ItemHasIcon(size_t index) const { return index < GetItemCount() && !IsSeparator(index); } @@ -410,56 +416,56 @@ : browser_->tab_strip_model()->GetActiveWebContents(); } -int BackForwardMenuModel::MenuIndexToNavEntryIndex(int index) const { +absl::optional<size_t> BackForwardMenuModel::MenuIndexToNavEntryIndex( + size_t index) const { WebContents* contents = GetWebContents(); - int history_items = GetHistoryItemCount(); - - DCHECK_GE(index, 0); + size_t history_items = GetHistoryItemCount(); // Convert anything above the History items separator. if (index < history_items) { - if (model_type_ == ModelType::kForward) { - index += contents->GetController().GetCurrentEntryIndex() + 1; - } else { - // Back menu is reverse. - index = contents->GetController().GetCurrentEntryIndex() - (index + 1); - } - return index; + const size_t current_index = + contents->GetController().GetCurrentEntryIndex(); + const bool forward = model_type_ == ModelType::kForward; + if (!forward && current_index <= index) + return absl::nullopt; + return forward ? (current_index + index + 1) + : (current_index - (index + 1)); } if (index == history_items) - return -1; // Don't translate the separator for history items. + return absl::nullopt; // Don't translate the separator for history items. if (index >= history_items + 1 + GetChapterStopCount(history_items)) - return -1; // This is beyond the last chapter stop so we abort. + return absl::nullopt; // This is beyond the last chapter stop so we abort. // This menu item is a chapter stop located between the two separators. return FindChapterStop(history_items, model_type_ == ModelType::kForward, index - history_items - 1); } -NavigationEntry* BackForwardMenuModel::GetNavigationEntry(int index) const { - int controller_index = MenuIndexToNavEntryIndex(index); +NavigationEntry* BackForwardMenuModel::GetNavigationEntry(size_t index) const { + absl::optional<size_t> controller_index = MenuIndexToNavEntryIndex(index); NavigationController& controller = GetWebContents()->GetController(); - DCHECK_GE(controller_index, 0); - DCHECK_LT(controller_index, controller.GetEntryCount()); + DCHECK(controller_index.has_value()); + DCHECK_LT(controller_index.value(), + static_cast<size_t>(controller.GetEntryCount())); - return controller.GetEntryAtIndex(controller_index); + return controller.GetEntryAtIndex(controller_index.value()); } std::string BackForwardMenuModel::BuildActionName( - const std::string& action, int index) const { + const std::string& action, + absl::optional<size_t> index) const { DCHECK(!action.empty()); - DCHECK_GE(index, -1); std::string metric_string; if (model_type_ == ModelType::kForward) metric_string += "ForwardMenu_"; else metric_string += "BackMenu_"; metric_string += action; - if (index != -1) { + if (index.has_value()) { // +1 is for historical reasons (indices used to start at 1). - metric_string += base::NumberToString(index + 1); + metric_string += base::NumberToString(index.value() + 1); } return metric_string; }
diff --git a/chrome/browser/ui/toolbar/back_forward_menu_model.h b/chrome/browser/ui/toolbar/back_forward_menu_model.h index 72c7716..27b2b2c 100644 --- a/chrome/browser/ui/toolbar/back_forward_menu_model.h +++ b/chrome/browser/ui/toolbar/back_forward_menu_model.h
@@ -52,25 +52,26 @@ // chapter-stops, separators and the Show Full History link. This function // uses GetHistoryItemCount() and GetChapterStopCount() internally to figure // out the total number of items to show. - int GetItemCount() const override; - ItemType GetTypeAt(int index) const override; - ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override; - int GetCommandIdAt(int index) const override; - std::u16string GetLabelAt(int index) const override; - bool IsItemDynamicAt(int index) const override; - bool GetAcceleratorAt(int index, ui::Accelerator* accelerator) const override; + size_t GetItemCount() const override; + ItemType GetTypeAt(size_t index) const override; + ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const override; + int GetCommandIdAt(size_t index) const override; + std::u16string GetLabelAt(size_t index) const override; + bool IsItemDynamicAt(size_t index) const override; + bool GetAcceleratorAt(size_t index, + ui::Accelerator* accelerator) const override; bool IsItemCheckedAt(size_t index) const override; - int GetGroupIdAt(int index) const override; - ui::ImageModel GetIconAt(int index) const override; - ui::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const override; - bool IsEnabledAt(int index) const override; - MenuModel* GetSubmenuModelAt(int index) const override; - void ActivatedAt(int index) override; - void ActivatedAt(int index, int event_flags) override; + int GetGroupIdAt(size_t index) const override; + ui::ImageModel GetIconAt(size_t index) const override; + ui::ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const override; + bool IsEnabledAt(size_t index) const override; + MenuModel* GetSubmenuModelAt(size_t index) const override; + void ActivatedAt(size_t index) override; + void ActivatedAt(size_t index, int event_flags) override; void MenuWillShow() override; // Is the item at |index| a separator? - bool IsSeparator(int index) const; + bool IsSeparator(size_t index) const; private: friend class BackFwdMenuModelTest; @@ -106,25 +107,26 @@ // not report more than kMaxHistoryItems. The number returned also does not // include the separator line after the history items (nor the separator for // the "Show Full History" link). - int GetHistoryItemCount() const; + size_t GetHistoryItemCount() const; // Returns how many chapter-stop items the menu should show. For the // definition of a chapter-stop, see GetIndexOfNextChapterStop(). The number // returned does not include the separator lines before and after the // chapter-stops. - int GetChapterStopCount(int history_items) const; + size_t GetChapterStopCount(size_t history_items) const; // Finds the next chapter-stop in the NavigationEntryList starting from // the index specified in |start_from| and continuing in the direction // specified (|forward|) until either a chapter-stop is found or we reach the - // end, in which case -1 is returned. If |start_from| is out of bounds, -1 - // will also be returned. A chapter-stop is defined as the last page the user - // browsed to within the same domain. For example, if the user's homepage is - // Google and they navigate to Google pages G1, G2 and G3 before heading over - // to WikiPedia for pages W1 and W2 and then back to Google for pages G4 and - // G5 then G3, W2 and G5 are considered chapter-stops. The return value from - // this function is an index into the NavigationEntryList vector. - int GetIndexOfNextChapterStop(int start_from, bool forward) const; + // end, in which case nullopt is returned. If |start_from| is out of bounds, + // nullopt will also be returned. A chapter-stop is defined as the last page + // the user browsed to within the same domain. For example, if the user's + // homepage is Google and they navigate to Google pages G1, G2 and G3 before + // heading over to WikiPedia for pages W1 and W2 and then back to Google for + // pages G4 and G5 then G3, W2 and G5 are considered chapter-stops. The return + // value from this function is an index into the NavigationEntryList vector. + absl::optional<size_t> GetIndexOfNextChapterStop(size_t start_from, + bool forward) const; // Finds a given chapter-stop starting at the currently active entry in the // NavigationEntryList vector advancing first forward or backward by |offset| @@ -139,32 +141,34 @@ // NOTE: Both |offset| and |skip| must be non-negative. The return value from // this function is an index into the NavigationEntryList vector. If |offset| // is out of bounds or if we skip too far (run out of chapter-stops) this - // function returns -1. - int FindChapterStop(int offset, bool forward, int skip) const; + // function returns nullopt. + absl::optional<size_t> FindChapterStop(size_t offset, + bool forward, + size_t skip) const; // How many items (max) to show in the back/forward history menu dropdown. - static const int kMaxHistoryItems; + static const size_t kMaxHistoryItems; // How many chapter-stops (max) to show in the back/forward dropdown list. - static const int kMaxChapterStops; + static const size_t kMaxChapterStops; // Takes a menu item index as passed in through one of the menu delegate // functions and converts it into an index into the NavigationEntryList // vector. |index| can point to a separator, or the - // "Show Full History" link in which case this function returns -1. - int MenuIndexToNavEntryIndex(int index) const; + // "Show Full History" link in which case this function returns nullopt. + absl::optional<size_t> MenuIndexToNavEntryIndex(size_t index) const; // Does the item have a command associated with it? - bool ItemHasCommand(int index) const; + bool ItemHasCommand(size_t index) const; // Returns true if there is an icon for this menu item. - bool ItemHasIcon(int index) const; + bool ItemHasIcon(size_t index) const; // Allow the unit test to use the "Show Full History" label. std::u16string GetShowFullHistoryLabel() const; // Looks up a NavigationEntry by menu id. - content::NavigationEntry* GetNavigationEntry(int index) const; + content::NavigationEntry* GetNavigationEntry(size_t index) const; // Retrieves the WebContents pointer to use, which is either the one that // the unit test sets (using set_test_web_contents) or the one from @@ -174,8 +178,9 @@ // Build a string version of a user action on this menu, used as an // identifier for logging user behavior. // E.g. BuildActionName("Click", 2) returns "BackMenu_Click2". - // An index of -1 means no index. - std::string BuildActionName(const std::string& name, int index) const; + // An index of nullopt means no index. + std::string BuildActionName(const std::string& name, + absl::optional<size_t> index) const; // Returns true if "Show Full History" item should be visible. It is visible // only in outside incognito mode.
diff --git a/chrome/browser/ui/toolbar/back_forward_menu_model_unittest.cc b/chrome/browser/ui/toolbar/back_forward_menu_model_unittest.cc index bdfdc014..ea6aa50 100644 --- a/chrome/browser/ui/toolbar/back_forward_menu_model_unittest.cc +++ b/chrome/browser/ui/toolbar/back_forward_menu_model_unittest.cc
@@ -77,10 +77,11 @@ FaviconServiceFactory::GetDefaultFactory()}}; } - void ValidateModel(BackForwardMenuModel* model, int history_items, - int chapter_stops) { - int h = std::min(BackForwardMenuModel::kMaxHistoryItems, history_items); - int c = std::min(BackForwardMenuModel::kMaxChapterStops, chapter_stops); + void ValidateModel(BackForwardMenuModel* model, + size_t history_items, + size_t chapter_stops) { + size_t h = std::min(BackForwardMenuModel::kMaxHistoryItems, history_items); + size_t c = std::min(BackForwardMenuModel::kMaxChapterStops, chapter_stops); EXPECT_EQ(h, model->GetHistoryItemCount()); EXPECT_EQ(c, model->GetChapterStopCount(h)); if (h > 0) @@ -142,8 +143,8 @@ browser.get(), BackForwardMenuModel::ModelType::kForward)); forward_model->set_test_web_contents(web_contents()); - EXPECT_EQ(0, back_model->GetItemCount()); - EXPECT_EQ(0, forward_model->GetItemCount()); + EXPECT_EQ(0u, back_model->GetItemCount()); + EXPECT_EQ(0u, forward_model->GetItemCount()); EXPECT_FALSE(back_model->ItemHasCommand(1)); // Seed the controller with a few URLs @@ -157,8 +158,8 @@ LoadURLAndUpdateState("http://www.c.com/3", "C3"); // There're two more items here: a separator and a "Show Full History". - EXPECT_EQ(9, back_model->GetItemCount()); - EXPECT_EQ(0, forward_model->GetItemCount()); + EXPECT_EQ(9u, back_model->GetItemCount()); + EXPECT_EQ(0u, forward_model->GetItemCount()); EXPECT_EQ(u"C2", back_model->GetLabelAt(0)); EXPECT_EQ(u"A1", back_model->GetLabelAt(6)); EXPECT_EQ(back_model->GetShowFullHistoryLabel(), @@ -173,8 +174,8 @@ NavigateToOffset(-7); - EXPECT_EQ(0, back_model->GetItemCount()); - EXPECT_EQ(9, forward_model->GetItemCount()); + EXPECT_EQ(0u, back_model->GetItemCount()); + EXPECT_EQ(9u, forward_model->GetItemCount()); EXPECT_EQ(u"A2", forward_model->GetLabelAt(0)); EXPECT_EQ(u"C3", forward_model->GetLabelAt(6)); EXPECT_EQ(forward_model->GetShowFullHistoryLabel(), @@ -189,8 +190,8 @@ NavigateToOffset(4); - EXPECT_EQ(6, back_model->GetItemCount()); - EXPECT_EQ(5, forward_model->GetItemCount()); + EXPECT_EQ(6u, back_model->GetItemCount()); + EXPECT_EQ(5u, forward_model->GetItemCount()); EXPECT_EQ(u"B1", back_model->GetLabelAt(0)); EXPECT_EQ(u"A1", back_model->GetLabelAt(3)); EXPECT_EQ(back_model->GetShowFullHistoryLabel(), @@ -249,10 +250,10 @@ LoadURLAndUpdateState("http://www.k.com/2", "K2"); // Also there're two more for a separator and a "Show Full History". - int chapter_stop_offset = 6; + size_t chapter_stop_offset = 6; EXPECT_EQ(BackForwardMenuModel::kMaxHistoryItems + 2 + chapter_stop_offset, back_model->GetItemCount()); - EXPECT_EQ(0, forward_model->GetItemCount()); + EXPECT_EQ(0u, forward_model->GetItemCount()); EXPECT_EQ(u"K1", back_model->GetLabelAt(0)); EXPECT_EQ(back_model->GetShowFullHistoryLabel(), back_model->GetLabelAt(BackForwardMenuModel::kMaxHistoryItems + 1 + @@ -271,7 +272,7 @@ EXPECT_EQ(BackForwardMenuModel::kMaxHistoryItems + 2 + chapter_stop_offset, forward_model->GetItemCount()); - EXPECT_EQ(0, back_model->GetItemCount()); + EXPECT_EQ(0u, back_model->GetItemCount()); EXPECT_EQ(u"A2", forward_model->GetLabelAt(0)); EXPECT_EQ(forward_model->GetShowFullHistoryLabel(), forward_model->GetLabelAt(BackForwardMenuModel::kMaxHistoryItems + 1 + @@ -301,7 +302,7 @@ forward_model->set_test_web_contents(web_contents()); // Seed the controller with 32 URLs. - int i = 0; + size_t i = 0; LoadURLAndUpdateState("http://www.a.com/1", "A1"); ValidateModel(back_model.get(), i++, 0); LoadURLAndUpdateState("http://www.a.com/2", "A2"); @@ -380,7 +381,7 @@ // browsed to within the same domain. // Check to see if the chapter stops have the right labels. - int index = BackForwardMenuModel::kMaxHistoryItems; + size_t index = BackForwardMenuModel::kMaxHistoryItems; // Empty string indicates item is a separator. EXPECT_EQ(std::u16string(), back_model->GetLabelAt(index++)); EXPECT_EQ(u"F3", back_model->GetLabelAt(index++)); @@ -413,7 +414,7 @@ NavigateToOffset(6); // Go back enough to make sure no chapter stops should appear. - NavigateToOffset(-BackForwardMenuModel::kMaxHistoryItems); + NavigateToOffset(-static_cast<int>(BackForwardMenuModel::kMaxHistoryItems)); ValidateModel(forward_model.get(), BackForwardMenuModel::kMaxHistoryItems, 0); // Go forward (still no chapter stop) NavigationSimulator::GoForward(web_contents()); @@ -457,23 +458,23 @@ EXPECT_EQ(u"K3", forward_model->GetLabelAt(index)); // Now test the boundary cases by using the chapter stop function directly. - // Out of bounds, first too far right (incrementing), then too far left. - EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(33, false)); - EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(-1, true)); + // Out of bounds, first decrementing, then incrementing. + EXPECT_FALSE(back_model->GetIndexOfNextChapterStop(33, false).has_value()); + EXPECT_FALSE(back_model->GetIndexOfNextChapterStop(33, true).has_value()); // Test being at end and going right, then at beginning going left. - EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(32, true)); - EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(0, false)); + EXPECT_FALSE(back_model->GetIndexOfNextChapterStop(32, true).has_value()); + EXPECT_FALSE(back_model->GetIndexOfNextChapterStop(0, false).has_value()); // Test success: beginning going right and end going left. - EXPECT_EQ(2, back_model->GetIndexOfNextChapterStop(0, true)); - EXPECT_EQ(29, back_model->GetIndexOfNextChapterStop(32, false)); + EXPECT_EQ(2u, back_model->GetIndexOfNextChapterStop(0, true)); + EXPECT_EQ(29u, back_model->GetIndexOfNextChapterStop(32, false)); // Now see when the chapter stops begin to show up. - EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(1, false)); - EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(2, false)); - EXPECT_EQ(2, back_model->GetIndexOfNextChapterStop(3, false)); + EXPECT_FALSE(back_model->GetIndexOfNextChapterStop(1, false).has_value()); + EXPECT_FALSE(back_model->GetIndexOfNextChapterStop(2, false).has_value()); + EXPECT_EQ(2u, back_model->GetIndexOfNextChapterStop(3, false)); // Now see when the chapter stops end. - EXPECT_EQ(32, back_model->GetIndexOfNextChapterStop(30, true)); - EXPECT_EQ(32, back_model->GetIndexOfNextChapterStop(31, true)); - EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(32, true)); + EXPECT_EQ(32u, back_model->GetIndexOfNextChapterStop(30, true)); + EXPECT_EQ(32u, back_model->GetIndexOfNextChapterStop(31, true)); + EXPECT_FALSE(back_model->GetIndexOfNextChapterStop(32, true).has_value()); if (content::BackForwardCache::IsSameSiteBackForwardCacheFeatureEnabled()) { // The case below currently fails on the linux-bfcache-rel bot with @@ -487,8 +488,8 @@ // Go to A1; NavigateToIndex(0); LoadURLAndUpdateState("http://www.b.com/1", "B1"); - EXPECT_EQ(0, back_model->GetIndexOfNextChapterStop(1, false)); - EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(0, true)); + EXPECT_EQ(0u, back_model->GetIndexOfNextChapterStop(1, false)); + EXPECT_EQ(1u, back_model->GetIndexOfNextChapterStop(0, true)); // Now see if it counts 'www.x.com' and 'mail.x.com' as same domain, which // it should. @@ -498,15 +499,15 @@ LoadURLAndUpdateState("http://www.b.com/1", "B1"); LoadURLAndUpdateState("http://mail.b.com/2", "B2-mai"); LoadURLAndUpdateState("http://new.site.com", "new"); - EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(0, true)); - EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(1, true)); - EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(2, true)); - EXPECT_EQ(4, back_model->GetIndexOfNextChapterStop(3, true)); + EXPECT_EQ(1u, back_model->GetIndexOfNextChapterStop(0, true)); + EXPECT_EQ(3u, back_model->GetIndexOfNextChapterStop(1, true)); + EXPECT_EQ(3u, back_model->GetIndexOfNextChapterStop(2, true)); + EXPECT_EQ(4u, back_model->GetIndexOfNextChapterStop(3, true)); // And try backwards as well. - EXPECT_EQ(3, back_model->GetIndexOfNextChapterStop(4, false)); - EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(3, false)); - EXPECT_EQ(1, back_model->GetIndexOfNextChapterStop(2, false)); - EXPECT_EQ(-1, back_model->GetIndexOfNextChapterStop(1, false)); + EXPECT_EQ(3u, back_model->GetIndexOfNextChapterStop(4, false)); + EXPECT_EQ(1u, back_model->GetIndexOfNextChapterStop(3, false)); + EXPECT_EQ(1u, back_model->GetIndexOfNextChapterStop(2, false)); + EXPECT_FALSE(back_model->GetIndexOfNextChapterStop(1, false).has_value()); } TEST_F(BackFwdMenuModelTest, EscapeLabel) { @@ -518,7 +519,7 @@ browser.get(), BackForwardMenuModel::ModelType::kBackward)); back_model->set_test_web_contents(web_contents()); - EXPECT_EQ(0, back_model->GetItemCount()); + EXPECT_EQ(0u, back_model->GetItemCount()); EXPECT_FALSE(back_model->ItemHasCommand(1)); LoadURLAndUpdateState("http://www.a.com/1", "A B"); @@ -527,7 +528,7 @@ LoadURLAndUpdateState("http://www.a.com/4", "A &&& B"); LoadURLAndUpdateState("http://www.a.com/5", ""); - EXPECT_EQ(6, back_model->GetItemCount()); + EXPECT_EQ(6u, back_model->GetItemCount()); EXPECT_EQ(u"A B", back_model->GetLabelAt(3)); EXPECT_EQ(u"A && B", back_model->GetLabelAt(2)); @@ -609,7 +610,7 @@ back_model->set_test_web_contents(web_contents()); - EXPECT_EQ(0, back_model->GetItemCount()); + EXPECT_EQ(0u, back_model->GetItemCount()); EXPECT_FALSE(back_model->ItemHasCommand(1)); // Seed the controller with a few URLs @@ -619,7 +620,7 @@ // There're should be only the visited pages but not "Show Full History" item // and its separator. - EXPECT_EQ(2, back_model->GetItemCount()); + EXPECT_EQ(2u, back_model->GetItemCount()); EXPECT_EQ(u"A2", back_model->GetLabelAt(0)); EXPECT_EQ(u"A1", back_model->GetLabelAt(1));
diff --git a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc index 5643924b..26c5b3a0 100644 --- a/chrome/browser/ui/toolbar/media_router_contextual_menu.cc +++ b/chrome/browser/ui/toolbar/media_router_contextual_menu.cc
@@ -63,9 +63,9 @@ if (shown_by_policy_) { menu_model->AddItemWithStringId(IDC_MEDIA_ROUTER_SHOWN_BY_POLICY, IDS_MEDIA_ROUTER_SHOWN_BY_POLICY); - // TODO (kylixrd): Review the use of the hard-coded color constant. menu_model->SetIcon( - menu_model->GetIndexOfCommandId(IDC_MEDIA_ROUTER_SHOWN_BY_POLICY), + menu_model->GetIndexOfCommandId(IDC_MEDIA_ROUTER_SHOWN_BY_POLICY) + .value(), ui::ImageModel::FromVectorIcon(vector_icons::kBusinessIcon, ui::kColorIcon, 16)); } else {
diff --git a/chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc b/chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc index e827ad66..9eb66dc 100644 --- a/chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc +++ b/chrome/browser/ui/toolbar/media_router_contextual_menu_unittest.cc
@@ -38,7 +38,7 @@ constexpr bool kShownByUser = false; bool HasCommandId(ui::MenuModel* menu_model, int command_id) { - for (int i = 0; i < menu_model->GetItemCount(); i++) { + for (size_t i = 0; i < menu_model->GetItemCount(); ++i) { if (menu_model->GetCommandIdAt(i) == command_id) return true; } @@ -131,7 +131,7 @@ // Report an issue // Number of menu items, including separators. - int expected_number_items = 6; + size_t expected_number_items = 6; #if BUILDFLAG(GOOGLE_CHROME_BRANDING) expected_number_items += 2; #endif @@ -140,7 +140,7 @@ std::unique_ptr<ui::SimpleMenuModel> model = menu.CreateMenuModel(); EXPECT_EQ(model->GetItemCount(), expected_number_items); - for (int i = 0; i < expected_number_items; i++) { + for (size_t i = 0; i < expected_number_items; ++i) { EXPECT_TRUE(model->IsEnabledAt(i)); EXPECT_TRUE(model->IsVisibleAt(i)); } @@ -152,7 +152,7 @@ // Run the same checks as before. All existing menu items should be now // enabled and visible. EXPECT_EQ(model->GetItemCount(), expected_number_items); - for (int i = 0; i < expected_number_items; i++) { + for (size_t i = 0; i < expected_number_items; ++i) { EXPECT_TRUE(model->IsEnabledAt(i)); EXPECT_TRUE(model->IsVisibleAt(i)); } @@ -163,8 +163,10 @@ // incognito. TEST_F(MediaRouterContextualMenuUnitTest, EnableAndDisableReportIssue) { MediaRouterContextualMenu menu(browser(), kShownByPolicy, &observer_); - EXPECT_NE(-1, menu.CreateMenuModel()->GetIndexOfCommandId( - IDC_MEDIA_TOOLBAR_CONTEXT_REPORT_CAST_ISSUE)); + EXPECT_TRUE( + menu.CreateMenuModel() + ->GetIndexOfCommandId(IDC_MEDIA_TOOLBAR_CONTEXT_REPORT_CAST_ISSUE) + .has_value()); std::unique_ptr<BrowserWindow> window(CreateBrowserWindow()); std::unique_ptr<Browser> incognito_browser( @@ -173,8 +175,10 @@ MediaRouterContextualMenu incognito_menu(incognito_browser.get(), kShownByPolicy, &observer_); - EXPECT_EQ(-1, incognito_menu.CreateMenuModel()->GetIndexOfCommandId( - IDC_MEDIA_TOOLBAR_CONTEXT_REPORT_CAST_ISSUE)); + EXPECT_FALSE( + incognito_menu.CreateMenuModel() + ->GetIndexOfCommandId(IDC_MEDIA_TOOLBAR_CONTEXT_REPORT_CAST_ISSUE) + .has_value()); } #endif
diff --git a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc index 4e298894..8d0191ff 100644 --- a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc +++ b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.cc
@@ -121,8 +121,8 @@ SubMenuItem(int command_id, std::unique_ptr<ui::SimpleMenuModel> sub_menu_model) : parent_id(command_id), menu_model(std::move(sub_menu_model)) { - const int child_id_count = menu_model->GetItemCount(); - for (int i = 0; i < child_id_count; i++) { + const size_t child_id_count = menu_model->GetItemCount(); + for (size_t i = 0; i < child_id_count; ++i) { child_ids.insert(menu_model->GetCommandIdAt(i)); } } @@ -191,17 +191,19 @@ // the header, otherwise, we show it beside the first item underneath it. // If the first item underneath it is a submenu, we instead show it beside // the first item in that submenu. - const int index_in_menu = GetIndexOfCommandId(command_id); - const int header_index = GetIndexOfCommandId(kRecentlyClosedHeaderCommandId); + const absl::optional<size_t> index_in_menu = GetIndexOfCommandId(command_id); + const absl::optional<size_t> header_index = + GetIndexOfCommandId(kRecentlyClosedHeaderCommandId); const int parent_id = GetParentCommandId(command_id); - const int parent_index = - parent_id == -1 ? -1 : GetIndexOfCommandId(parent_id); + const absl::optional<size_t> parent_index = + parent_id == -1 ? absl::nullopt : GetIndexOfCommandId(parent_id); if ((command_id == kDisabledRecentlyClosedHeaderCommandId || - ((header_index != -1 && (!IsSubMenuModelCommandId(command_id) && - index_in_menu == header_index + 1)) || - ((command_id == local_window_items_.begin()->first || - command_id == local_group_items_.begin()->first) && - parent_index == header_index + 1))) && + (header_index.has_value() && !IsSubMenuModelCommandId(command_id) && + index_in_menu == header_index.value() + 1) || + (header_index.has_value() && + (command_id == local_window_items_.begin()->first || + command_id == local_group_items_.begin()->first) && + parent_index == header_index.value() + 1)) && reopen_closed_tab_accelerator_.key_code() != ui::VKEY_UNKNOWN) { *accelerator = reopen_closed_tab_accelerator_; return true; @@ -305,7 +307,7 @@ } const gfx::FontList* RecentTabsSubMenuModel::GetLabelFontListAt( - int index) const { + size_t index) const { const int command_id = GetCommandIdAt(index); if (command_id == kRecentlyClosedHeaderCommandId || IsDeviceNameCommandId(command_id)) { @@ -315,7 +317,7 @@ return nullptr; } -int RecentTabsSubMenuModel::GetMaxWidthForItemAtIndex(int item_index) const { +int RecentTabsSubMenuModel::GetMaxWidthForItemAtIndex(size_t item_index) const { const int command_id = GetCommandIdAt(item_index); if (command_id == IDC_RECENT_TABS_NO_DEVICE_TABS || command_id == kRecentlyClosedHeaderCommandId || @@ -326,7 +328,7 @@ } bool RecentTabsSubMenuModel::GetURLAndTitleForItemAtIndex( - int index, + size_t index, std::string* url, std::u16string* title) { const int command_id = GetCommandIdAt(index); @@ -415,7 +417,7 @@ ++added_count; } } - DCHECK_GE(last_local_model_index_, 0); + DCHECK_GE(last_local_model_index_, 0u); } void RecentTabsSubMenuModel::BuildTabsFromOtherDevices() { @@ -466,7 +468,7 @@ } // for all sessions // We are not supposed to get here unless at least some items were added. - DCHECK_GT(GetItemCount(), 0); + DCHECK_GT(GetItemCount(), 0u); } void RecentTabsSubMenuModel::BuildLocalTabItem( @@ -474,7 +476,7 @@ absl::optional<tab_groups::TabGroupVisualData> visual_data, const std::u16string& title, const GURL& url, - int curr_model_index) { + size_t curr_model_index) { TabNavigationItem item(std::string(), session_id, title, url); const int command_id = GetAndIncrementNextMenuID(); // See comments in BuildLocalEntries() about usage of InsertItem*At(). @@ -483,13 +485,14 @@ title.empty() ? base::UTF8ToUTF16(item.url.spec()) : title); local_tab_navigation_items_.emplace(command_id, item); AddTabFavicon(command_id, this, item.url); - const int header_index = GetIndexOfCommandId(kRecentlyClosedHeaderCommandId); + const absl::optional<size_t> header_index = + GetIndexOfCommandId(kRecentlyClosedHeaderCommandId); // We shouldn't get here if there is no recently closed header. - DCHECK_GT(header_index, -1); + DCHECK(header_index.has_value()); // visual_data should only be populated if the tab was part of a tab group // when closed. We shouldn't set the minor icon for the item most recently // closed, as this creates visual clutter alongside the shortcut text. - if (visual_data.has_value() && curr_model_index > header_index + 1) { + if (visual_data.has_value() && curr_model_index > header_index.value() + 1) { const ui::ColorProvider* color_provider = browser_->window()->GetColorProvider(); const ui::ColorId color_id = @@ -505,13 +508,13 @@ void RecentTabsSubMenuModel::BuildLocalWindowItem( SessionID window_id, std::unique_ptr<ui::SimpleMenuModel> window_model, - int num_tabs, - int curr_model_index) { + size_t num_tabs, + size_t curr_model_index) { const int command_id = GetAndIncrementNextMenuID(); - InsertSubMenuAt( - curr_model_index, command_id, - l10n_util::GetPluralStringFUTF16(IDS_RECENTLY_CLOSED_WINDOW, num_tabs), - window_model.get()); + InsertSubMenuAt(curr_model_index, command_id, + l10n_util::GetPluralStringFUTF16(IDS_RECENTLY_CLOSED_WINDOW, + static_cast<int>(num_tabs)), + window_model.get()); local_sub_menu_items_.emplace( command_id, SubMenuItem(command_id, std::move(window_model))); SetIcon(curr_model_index, CreateFavicon(kTabIcon)); @@ -521,8 +524,8 @@ SessionID session_id, tab_groups::TabGroupVisualData visual_data, std::unique_ptr<ui::SimpleMenuModel> group_model, - int num_tabs, - int curr_model_index) { + size_t num_tabs, + size_t curr_model_index) { const int command_id = GetAndIncrementNextMenuID(); // Set the item label to the name of the group and the number of tabs. std::u16string item_label = GetGroupItemLabel(visual_data.title(), num_tabs); @@ -667,14 +670,14 @@ } std::u16string RecentTabsSubMenuModel::GetGroupItemLabel(std::u16string title, - int num_tabs) { + size_t num_tabs) { std::u16string item_label; if (title.empty()) { item_label = l10n_util::GetPluralStringFUTF16( - IDS_RECENTLY_CLOSED_GROUP_UNNAMED, num_tabs); + IDS_RECENTLY_CLOSED_GROUP_UNNAMED, static_cast<int>(num_tabs)); } else { - item_label = - l10n_util::GetPluralStringFUTF16(IDS_RECENTLY_CLOSED_GROUP, num_tabs); + item_label = l10n_util::GetPluralStringFUTF16(IDS_RECENTLY_CLOSED_GROUP, + static_cast<int>(num_tabs)); item_label = base::ReplaceStringPlaceholders(item_label, {title}, nullptr); } return item_label; @@ -691,7 +694,7 @@ } void RecentTabsSubMenuModel::AddDeviceFavicon( - int index_in_menu, + size_t index_in_menu, sync_pb::SyncEnums::DeviceType device_type) { const gfx::VectorIcon* favicon = nullptr; switch (device_type) { @@ -719,7 +722,8 @@ void RecentTabsSubMenuModel::AddTabFavicon(int command_id, ui::SimpleMenuModel* menu_model, const GURL& url) { - const int index_in_menu = menu_model->GetIndexOfCommandId(command_id); + const size_t index_in_menu = + menu_model->GetIndexOfCommandId(command_id).value(); // Set default icon first. menu_model->SetIcon(index_in_menu, ui::ImageModel::FromImage(favicon::GetDefaultFavicon())); @@ -766,9 +770,10 @@ // Default icon has already been set. return; } - const int index_in_menu = menu_model->GetIndexOfCommandId(command_id); - DCHECK_GT(index_in_menu, -1); - menu_model->SetIcon(index_in_menu, + const absl::optional<size_t> index_in_menu = + menu_model->GetIndexOfCommandId(command_id); + DCHECK(index_in_menu.has_value()); + menu_model->SetIcon(index_in_menu.value(), ui::ImageModel::FromImage(image_result.image)); ui::MenuModelDelegate* delegate = menu_model_delegate(); if (delegate) @@ -807,10 +812,10 @@ } void RecentTabsSubMenuModel::ClearTabsFromOtherDevices() { - DCHECK_GE(last_local_model_index_, 0); - const int count = GetItemCount(); - for (int index = count - 1; index > last_local_model_index_; --index) - RemoveItemAt(index); + for (size_t index = GetItemCount(); index > last_local_model_index_ + 1; + --index) { + RemoveItemAt(index - 1); + } weak_ptr_factory_for_other_devices_tab_.InvalidateWeakPtrs();
diff --git a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h index 4bcfb37..78c082c4 100644 --- a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h +++ b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model.h
@@ -79,10 +79,10 @@ bool GetAcceleratorForCommandId(int command_id, ui::Accelerator* accelerator) const override; void ExecuteCommand(int command_id, int event_flags) override; - const gfx::FontList* GetLabelFontListAt(int index) const override; + const gfx::FontList* GetLabelFontListAt(size_t index) const override; - int GetMaxWidthForItemAtIndex(int item_index) const; - bool GetURLAndTitleForItemAtIndex(int index, + int GetMaxWidthForItemAtIndex(size_t item_index) const; + bool GetURLAndTitleForItemAtIndex(size_t index, std::string* url, std::u16string* title); @@ -97,7 +97,7 @@ // Index of the separator that follows the history menu item. Used as a // reference position for inserting local entries. - static constexpr int kHistorySeparatorIndex = 1; + static constexpr size_t kHistorySeparatorIndex = 1; // Build the menu items by populating the menumodel. void Build(); @@ -115,22 +115,22 @@ absl::optional<tab_groups::TabGroupVisualData> visual_data, const std::u16string& title, const GURL& url, - int curr_model_index); + size_t curr_model_index); // Build the recently closed window item with parameters needed to restore it, // and add it to the menumodel at |curr_model_index|. void BuildLocalWindowItem(SessionID window_id, std::unique_ptr<ui::SimpleMenuModel> window_model, - int num_tabs, - int curr_model_index); + size_t num_tabs, + size_t curr_model_index); // Build the recently closed group item with parameters needed to restore it, // and add it to the menumodel at |curr_model_index|. void BuildLocalGroupItem(SessionID session_id, tab_groups::TabGroupVisualData visual_data, std::unique_ptr<ui::SimpleMenuModel> group_model, - int num_tabs, - int curr_model_index); + size_t num_tabs, + size_t curr_model_index); // Build the tab item for other devices with parameters needed to restore it. void BuildOtherDevicesTabItem(const std::string& session_tag, @@ -151,7 +151,7 @@ // Return the appropriate menu item label for a tab group, given its title // and the number of tabs it contains. - std::u16string GetGroupItemLabel(std::u16string title, int num_tabs); + std::u16string GetGroupItemLabel(std::u16string title, size_t num_tabs); // Return the command id of the given id's parent submenu, if it has one that // is created by this menu model. Otherwise, return -1. This will be the case @@ -159,7 +159,7 @@ int GetParentCommandId(int command_id) const; // Add the favicon for the device section header. - void AddDeviceFavicon(int index_in_menu, + void AddDeviceFavicon(size_t index_in_menu, sync_pb::SyncEnums::DeviceType device_type); // Add the favicon for a local or other devices' tab asynchronously, @@ -264,7 +264,7 @@ // Index of the last local entry (recently closed tab or window or group) in // the menumodel. - int last_local_model_index_ = kHistorySeparatorIndex; + size_t last_local_model_index_ = kHistorySeparatorIndex; base::CancelableTaskTracker local_tab_cancelable_task_tracker_;
diff --git a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model_unittest.cc b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model_unittest.cc index 95b1b81c..831f625 100644 --- a/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model_unittest.cc +++ b/chrome/browser/ui/toolbar/recent_tabs_sub_menu_model_unittest.cc
@@ -198,7 +198,7 @@ // 3 <separator> // 4 No tabs from other Devices - EXPECT_EQ(5, model.GetItemCount()); + EXPECT_EQ(5u, model.GetItemCount()); EXPECT_FALSE(model.IsEnabledAt(2)); EXPECT_FALSE(model.IsEnabledAt(4)); EXPECT_EQ(0, model.enable_count()); @@ -242,7 +242,7 @@ // 4 <tab for http://foo/1> // 5 <separator> // 6 No tabs from other Devices - EXPECT_EQ(7, model.GetItemCount()); + EXPECT_EQ(7u, model.GetItemCount()); EXPECT_TRUE(model.IsEnabledAt(0)); model.ActivatedAt(0); EXPECT_TRUE(model.IsEnabledAt(1)); @@ -305,7 +305,7 @@ // 4 <group1> // 5 <separator> // 6 No tabs from other Devices - EXPECT_EQ(7, model.GetItemCount()); + EXPECT_EQ(7u, model.GetItemCount()); EXPECT_TRUE(model.IsEnabledAt(0)); model.ActivatedAt(0); EXPECT_TRUE(model.IsEnabledAt(1)); @@ -313,11 +313,11 @@ EXPECT_TRUE(model.IsEnabledAt(3)); EXPECT_EQ(ui::MenuModel::TYPE_SUBMENU, model.GetTypeAt(3)); const ui::MenuModel* sub_menu_model_3 = model.GetSubmenuModelAt(3); - EXPECT_EQ(3, sub_menu_model_3->GetItemCount()); + EXPECT_EQ(3u, sub_menu_model_3->GetItemCount()); EXPECT_TRUE(model.IsEnabledAt(4)); EXPECT_EQ(ui::MenuModel::TYPE_SUBMENU, model.GetTypeAt(4)); const ui::MenuModel* sub_menu_model_4 = model.GetSubmenuModelAt(4); - EXPECT_EQ(2, sub_menu_model_4->GetItemCount()); + EXPECT_EQ(2u, sub_menu_model_4->GetItemCount()); model.ActivatedAt(3); model.ActivatedAt(4); EXPECT_FALSE(model.IsEnabledAt(6)); @@ -411,7 +411,7 @@ // 3 <separator> // 4 No tabs from other Devices - EXPECT_EQ(5, model.GetItemCount()); + EXPECT_EQ(5u, model.GetItemCount()); EXPECT_TRUE(model.IsEnabledAt(0)); EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR, model.GetTypeAt(1)); EXPECT_FALSE(model.IsEnabledAt(2)); @@ -438,7 +438,7 @@ EXPECT_TRUE(delegate.got_changes()); - EXPECT_EQ(8, model.GetItemCount()); + EXPECT_EQ(8u, model.GetItemCount()); EXPECT_TRUE(model.IsEnabledAt(0)); model.ActivatedAt(0); @@ -448,11 +448,11 @@ EXPECT_TRUE(model.IsEnabledAt(3)); EXPECT_EQ(ui::MenuModel::TYPE_SUBMENU, model.GetTypeAt(3)); const ui::MenuModel* const window_sub_menu_model = model.GetSubmenuModelAt(3); - EXPECT_EQ(3, window_sub_menu_model->GetItemCount()); + EXPECT_EQ(3u, window_sub_menu_model->GetItemCount()); EXPECT_EQ(ui::MenuModel::TYPE_SUBMENU, window_sub_menu_model->GetTypeAt(2)); const ui::MenuModel* const group_sub_menu_model = window_sub_menu_model->GetSubmenuModelAt(2); - EXPECT_EQ(1, group_sub_menu_model->GetItemCount()); + EXPECT_EQ(1u, group_sub_menu_model->GetItemCount()); EXPECT_TRUE(model.IsEnabledAt(4)); EXPECT_TRUE(model.IsEnabledAt(5)); model.ActivatedAt(3); @@ -531,7 +531,7 @@ // 11-12 <2 tabs of window 1 of session 2> TestRecentTabsSubMenuModel model(nullptr, browser()); - EXPECT_EQ(13, model.GetItemCount()); + EXPECT_EQ(13u, model.GetItemCount()); model.ActivatedAt(0); EXPECT_TRUE(model.IsEnabledAt(0)); model.ActivatedAt(1); @@ -614,7 +614,7 @@ // 4 No tabs from other Devices TestRecentTabsSubMenuModel model(nullptr, browser()); - EXPECT_EQ(5, model.GetItemCount()); + EXPECT_EQ(5u, model.GetItemCount()); model.ActivatedAt(4); EXPECT_FALSE(model.IsEnabledAt(4)); @@ -644,7 +644,7 @@ // 4 <section header for 1st session> // 5 <tab of the only window of session 0> - EXPECT_EQ(6, model.GetItemCount()); + EXPECT_EQ(6u, model.GetItemCount()); model.ActivatedAt(4); EXPECT_FALSE(model.IsEnabledAt(4)); model.ActivatedAt(5); @@ -682,7 +682,7 @@ // 5 <new added tab of the only window of session 0> // 6 <tab of the only window of session 0> - EXPECT_EQ(7, model.GetItemCount()); + EXPECT_EQ(7u, model.GetItemCount()); model.ActivatedAt(4); EXPECT_FALSE(model.IsEnabledAt(4)); model.ActivatedAt(5); @@ -731,7 +731,7 @@ // 11 <the only tab of the only window of session 1> TestRecentTabsSubMenuModel model(nullptr, browser()); - EXPECT_EQ(12, model.GetItemCount()); + EXPECT_EQ(12u, model.GetItemCount()); std::vector<std::u16string> tab_titles = recent_tabs_builder.GetTabTitlesSortedByRecency(); @@ -767,7 +767,7 @@ // 5-8 <4 most-recent tabs of session> TestRecentTabsSubMenuModel model(nullptr, browser()); - EXPECT_EQ(9, model.GetItemCount()); + EXPECT_EQ(9u, model.GetItemCount()); std::vector<std::u16string> tab_titles = recent_tabs_builder.GetTabTitlesSortedByRecency(); @@ -795,7 +795,7 @@ // 5 <the only tab of the only window of session 1> TestRecentTabsSubMenuModel model(nullptr, browser()); - EXPECT_EQ(6, model.GetItemCount()); + EXPECT_EQ(6u, model.GetItemCount()); EXPECT_EQ(-1, model.GetMaxWidthForItemAtIndex(2)); EXPECT_NE(-1, model.GetMaxWidthForItemAtIndex(3)); EXPECT_NE(-1, model.GetMaxWidthForItemAtIndex(4)); @@ -815,7 +815,7 @@ // 4 No tabs from other Devices TestRecentTabsSubMenuModel model(nullptr, browser()); - EXPECT_EQ(5, model.GetItemCount()); + EXPECT_EQ(5u, model.GetItemCount()); EXPECT_EQ(-1, model.GetMaxWidthForItemAtIndex(2)); EXPECT_NE(-1, model.GetMaxWidthForItemAtIndex(3)); EXPECT_EQ(-1, model.GetMaxWidthForItemAtIndex(4));
diff --git a/chrome/browser/ui/views/bookmarks/bookmark_context_menu.cc b/chrome/browser/ui/views/bookmarks/bookmark_context_menu.cc index 116e2b8..a35fa33 100644 --- a/chrome/browser/ui/views/bookmarks/bookmark_context_menu.cc +++ b/chrome/browser/ui/views/bookmarks/bookmark_context_menu.cc
@@ -66,7 +66,7 @@ observer_(nullptr), close_on_remove_(close_on_remove) { ui::SimpleMenuModel* menu_model = controller_->menu_model(); - for (int i = 0; i < menu_model->GetItemCount(); ++i) { + for (size_t i = 0; i < menu_model->GetItemCount(); ++i) { views::MenuModelAdapter::AppendMenuItemFromModel( menu_model, i, menu_, menu_model->GetCommandIdAt(i)); }
diff --git a/chrome/browser/ui/views/borealis/borealis_installer_view.cc b/chrome/browser/ui/views/borealis/borealis_installer_view.cc index 8c886a8..5a8f77dd 100644 --- a/chrome/browser/ui/views/borealis/borealis_installer_view.cc +++ b/chrome/browser/ui/views/borealis/borealis_installer_view.cc
@@ -249,7 +249,8 @@ } void BorealisInstallerView::OnInstallationEnded( - borealis::BorealisInstallResult result) { + borealis::BorealisInstallResult result, + const std::string& error_description) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); switch (result) { using ResultEnum = borealis::BorealisInstallResult; @@ -262,6 +263,7 @@ default: state_ = State::kError; result_ = result; + LOG(ERROR) << "Borealis Installation Error: " << error_description; break; } installing_state_ = InstallingState::kInactive;
diff --git a/chrome/browser/ui/views/borealis/borealis_installer_view.h b/chrome/browser/ui/views/borealis/borealis_installer_view.h index e244d2c..24bc001 100644 --- a/chrome/browser/ui/views/borealis/borealis_installer_view.h +++ b/chrome/browser/ui/views/borealis/borealis_installer_view.h
@@ -49,7 +49,8 @@ void OnStateUpdated( borealis::BorealisInstaller::InstallingState new_state) override; void OnProgressUpdated(double fraction_complete) override; - void OnInstallationEnded(borealis::BorealisInstallResult result) override; + void OnInstallationEnded(borealis::BorealisInstallResult result, + const std::string& error_description) override; void OnCancelInitiated() override {} // Public for testing purposes.
diff --git a/chrome/browser/ui/views/borealis/borealis_installer_view_browsertest.cc b/chrome/browser/ui/views/borealis/borealis_installer_view_browsertest.cc index 8af95ca..42563d3 100644 --- a/chrome/browser/ui/views/borealis/borealis_installer_view_browsertest.cc +++ b/chrome/browser/ui/views/borealis/borealis_installer_view_browsertest.cc
@@ -174,7 +174,7 @@ browser()->profile()->GetPrefs()->SetBoolean( prefs::kBorealisInstalledOnDevice, true); - view_->OnInstallationEnded(InstallationResult::kSuccess); + view_->OnInstallationEnded(InstallationResult::kSuccess, ""); ExpectInstallationCompletedSucessfully(); EXPECT_CALL(mock_context_manager_, IsRunning()) @@ -210,7 +210,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "in progress"); ExpectInstallationFailedWithRetry(); EXPECT_EQ(view_->GetSecondaryMessage(), l10n_util::GetStringUTF16( @@ -220,7 +220,7 @@ browser()->profile()->GetPrefs()->SetBoolean( prefs::kBorealisInstalledOnDevice, true); - view_->OnInstallationEnded(InstallationResult::kSuccess); + view_->OnInstallationEnded(InstallationResult::kSuccess, ""); ExpectInstallationCompletedSucessfully(); EXPECT_CALL(mock_context_manager_, IsRunning()) @@ -238,7 +238,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "in progress"); ExpectInstallationFailedWithRetry(); EXPECT_EQ(view_->GetSecondaryMessage(), l10n_util::GetStringUTF16( @@ -252,7 +252,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "not allowed"); ExpectInstallationFailedWithNoRetry(); EXPECT_EQ( view_->GetPrimaryMessage(), @@ -272,7 +272,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "dlc unsupported"); ExpectInstallationFailedWithNoRetry(); EXPECT_EQ( view_->GetPrimaryMessage(), @@ -292,7 +292,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "dlc failure"); ExpectInstallationFailedWithRetry(); EXPECT_EQ( view_->GetSecondaryMessage(), @@ -306,7 +306,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "dlc failure"); ExpectInstallationFailedWithRetry(); EXPECT_EQ(view_->GetSecondaryMessage(), l10n_util::GetStringUTF16(IDS_BOREALIS_DLC_BUSY_FAILED_MESSAGE)); @@ -319,7 +319,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "dlc failure"); ExpectInstallationFailedWithRetry(); EXPECT_EQ( view_->GetSecondaryMessage(), @@ -333,7 +333,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "dlc failure"); ExpectInstallationFailedWithRetryCustomTitle(); EXPECT_EQ( view_->GetPrimaryMessage(), @@ -350,7 +350,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "dlc failure"); ExpectInstallationFailedWithNoRetry(); EXPECT_EQ(view_->GetPrimaryMessage(), l10n_util::GetStringUTF16(IDS_BOREALIS_INSTALLER_ERROR_TITLE)); @@ -366,7 +366,7 @@ ShowUi("default"); AcceptInstallation(); - view_->OnInstallationEnded(error_type); + view_->OnInstallationEnded(error_type, "dlc failure"); ExpectInstallationFailedWithRetry(); EXPECT_EQ(view_->GetSecondaryMessage(), l10n_util::GetStringFUTF16(
diff --git a/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.cc b/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.cc index 0607b8f..9eb4f90 100644 --- a/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.cc +++ b/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.cc
@@ -6,6 +6,7 @@ #include "base/callback_helpers.h" #include "base/logging.h" +#include "base/strings/utf_string_conversions.h" #include "chrome/browser/ash/crostini/crostini_pref_names.h" #include "chrome/browser/ash/crostini/crostini_util.h" #include "chrome/browser/profiles/profile.h" @@ -82,6 +83,19 @@ void CrostiniAnsibleSoftwareConfigView::OnAnsibleSoftwareConfigurationStarted( const guest_os::GuestId& container_id) {} +void CrostiniAnsibleSoftwareConfigView::OnAnsibleSoftwareConfigurationProgress( + const guest_os::GuestId& container_id, + const std::vector<std::string>& status_lines) { + std::u16string status_string; + if (!base::UTF8ToUTF16(status_lines.back().c_str(), + status_lines.back().size(), &status_string)) { + LOG(ERROR) << "Failed to convert status line into a UTF16 string: " + << status_lines.back(); + } else { + progress_label_->SetText(status_string); + } +} + void CrostiniAnsibleSoftwareConfigView::OnAnsibleSoftwareConfigurationFinished( const guest_os::GuestId& container_id, bool success) { @@ -106,6 +120,11 @@ return subtext_label_->GetText(); } +std::u16string +CrostiniAnsibleSoftwareConfigView::GetProgressLabelStringForTesting() { + return progress_label_->GetText(); +} + // static CrostiniAnsibleSoftwareConfigView* CrostiniAnsibleSoftwareConfigView::GetActiveViewForTesting() { @@ -135,13 +154,19 @@ subtext_label_ = AddChildView(std::move(subtext_label)); // Add infinite progress bar. - // TODO(crbug.com/1000173): add progress reporting and display text above - // progress bar indicating current process. auto progress_bar = std::make_unique<views::ProgressBar>(); // Values outside the range [0,1] display an infinite loading animation. progress_bar->SetValue(-1); progress_bar_ = AddChildView(std::move(progress_bar)); + // Adds text below the infinite progress bar stating the last action. + // Currently can't really display the full progress since Ansible doesn't + // expose this by default w/o specific playbook hacks. + auto progress_label = std::make_unique<views::Label>(); + progress_label->SetMultiLine(true); + progress_label->SetHorizontalAlignment(gfx::ALIGN_LEFT); + progress_label_ = AddChildView(std::move(progress_label)); + default_container_ansible_filepath_ = profile->GetPrefs()->GetFilePath( crostini::prefs::kCrostiniAnsiblePlaybookFilePath);
diff --git a/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.h b/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.h index c91a776..dcfa1ca 100644 --- a/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.h +++ b/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.h
@@ -35,11 +35,15 @@ // crostini::AnsibleManagementService::Observer: void OnAnsibleSoftwareConfigurationStarted( const guest_os::GuestId& container_id) override; + void OnAnsibleSoftwareConfigurationProgress( + const guest_os::GuestId& container_id, + const std::vector<std::string>& status_lines) override; void OnAnsibleSoftwareConfigurationFinished( const guest_os::GuestId& container_id, bool success) override; std::u16string GetSubtextLabelStringForTesting(); + std::u16string GetProgressLabelStringForTesting(); static CrostiniAnsibleSoftwareConfigView* GetActiveViewForTesting(); @@ -61,6 +65,7 @@ crostini::AnsibleManagementService* ansible_management_service_ = nullptr; views::Label* subtext_label_ = nullptr; + views::Label* progress_label_ = nullptr; views::ProgressBar* progress_bar_ = nullptr; base::FilePath default_container_ansible_filepath_;
diff --git a/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view_browsertest.cc b/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view_browsertest.cc index 55da189f..ffc9c73 100644 --- a/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view_browsertest.cc +++ b/chrome/browser/ui/views/crostini/crostini_ansible_software_config_view_browsertest.cc
@@ -4,7 +4,10 @@ #include "chrome/browser/ui/views/crostini/crostini_ansible_software_config_view.h" +#include <string> + #include "base/callback_helpers.h" +#include "base/strings/utf_string_conversions.h" #include "base/test/bind.h" #include "chrome/browser/ash/crostini/ansible/ansible_management_service.h" #include "chrome/browser/ash/crostini/ansible/ansible_management_test_helper.h" @@ -23,6 +26,8 @@ #include "ui/base/l10n/l10n_util.h" #include "ui/chromeos/devicetype_utils.h" +constexpr char kProgressString[] = "Yesh milord. More work?"; + class CrostiniAnsibleSoftwareConfigViewBrowserTest : public CrostiniDialogBrowserTest, public crostini::AnsibleManagementService::Observer { @@ -48,11 +53,27 @@ // crostini::AnsibleManagementService::Observer void OnAnsibleSoftwareConfigurationStarted( const guest_os::GuestId& container_id) override {} + + void OnAnsibleSoftwareConfigurationProgress( + const guest_os::GuestId& container_id, + const std::vector<std::string>& status_lines) override {} + void OnAnsibleSoftwareConfigurationFinished( const guest_os::GuestId& container_id, bool success) override {} void OnApplyAnsiblePlaybook(const guest_os::GuestId& container_id) override { + if (send_ansible_progress_) { + EXPECT_NE(nullptr, ActiveView()); + vm_tools::cicerone::ApplyAnsiblePlaybookProgressSignal signal; + signal.set_status( + vm_tools::cicerone::ApplyAnsiblePlaybookProgressSignal::IN_PROGRESS); + signal.set_vm_name(crostini::DefaultContainerId().vm_name); + signal.set_container_name(crostini::DefaultContainerId().container_name); + signal.add_status_string(kProgressString); + ansible_management_service()->OnApplyAnsiblePlaybookProgress(signal); + status_string_ = ActiveView()->GetProgressLabelStringForTesting(); + } if (is_apply_ansible_success_) { EXPECT_NE(nullptr, ActiveView()); vm_tools::cicerone::ApplyAnsiblePlaybookProgressSignal signal; @@ -154,7 +175,12 @@ is_install_ansible_success_ = success; } + void SetSendAnsibleProgress(bool show_progress) { + send_ansible_progress_ = show_progress; + } + guest_os::GuestId container_id_; + std::u16string status_string_; private: bool HasAcceptButton() { return ActiveView()->GetOkButton() != nullptr; } @@ -190,6 +216,7 @@ bool is_install_ansible_success_; bool is_apply_ansible_success_; + bool send_ansible_progress_; std::unique_ptr<network::TestNetworkConnectionTracker> network_connection_tracker_; std::unique_ptr<crostini::AnsibleManagementTestHelper> test_helper_; @@ -297,6 +324,25 @@ } IN_PROC_BROWSER_TEST_F(CrostiniAnsibleSoftwareConfigViewBrowserTest, + AnsibleConfigFlowWithProgress_Successful) { + SetSendAnsibleProgress(true); + ansible_management_service()->ConfigureContainer( + crostini::DefaultContainerId(), + browser()->profile()->GetPrefs()->GetFilePath( + crostini::prefs::kCrostiniAnsiblePlaybookFilePath), + base::BindLambdaForTesting([&](bool success) { run_loop()->Quit(); })); + + run_loop()->Run(); + std::u16string expected; + // -1 to anti the null at the end of the string. + ASSERT_TRUE(base::UTF8ToUTF16(kProgressString, sizeof(kProgressString) - 1, + &expected)); + EXPECT_EQ(status_string_, expected); + + EXPECT_TRUE(HasNoView()); +} + +IN_PROC_BROWSER_TEST_F(CrostiniAnsibleSoftwareConfigViewBrowserTest, AnsibleConfigFlow_InstallationFailed) { // Set install failure. No need to set apply because it should never reach // there.
diff --git a/chrome/browser/ui/views/extensions/extensions_menu_view_interactive_uitest.cc b/chrome/browser/ui/views/extensions/extensions_menu_view_interactive_uitest.cc index 83e20bc5..efeda77 100644 --- a/chrome/browser/ui/views/extensions/extensions_menu_view_interactive_uitest.cc +++ b/chrome/browser/ui/views/extensions/extensions_menu_view_interactive_uitest.cc
@@ -560,10 +560,11 @@ extensions_container->GetActionForId(extensions()[0]->id()) ->GetContextMenu(extensions::ExtensionContextMenuModel:: ContextMenuSource::kToolbarAction)); - int visibility_index = context_menu->GetIndexOfCommandId( + absl::optional<size_t> visibility_index = context_menu->GetIndexOfCommandId( extensions::ExtensionContextMenuModel::TOGGLE_VISIBILITY); - ASSERT_GE(visibility_index, 0); - std::u16string visibility_label = context_menu->GetLabelAt(visibility_index); + ASSERT_TRUE(visibility_index.has_value()); + std::u16string visibility_label = + context_menu->GetLabelAt(visibility_index.value()); EXPECT_EQ(visibility_label, u"Unpin"); } @@ -592,10 +593,11 @@ extensions_container->GetActionForId(extensions()[0]->id()) ->GetContextMenu(extensions::ExtensionContextMenuModel:: ContextMenuSource::kToolbarAction)); - int visibility_index = context_menu->GetIndexOfCommandId( + absl::optional<size_t> visibility_index = context_menu->GetIndexOfCommandId( extensions::ExtensionContextMenuModel::TOGGLE_VISIBILITY); - ASSERT_GE(visibility_index, 0); - std::u16string visibility_label = context_menu->GetLabelAt(visibility_index); + ASSERT_TRUE(visibility_index.has_value()); + std::u16string visibility_label = + context_menu->GetLabelAt(visibility_index.value()); EXPECT_EQ(visibility_label, u"Pin"); }
diff --git a/chrome/browser/ui/views/extensions/extensions_tabbed_menu_coordinator.cc b/chrome/browser/ui/views/extensions/extensions_tabbed_menu_coordinator.cc index 712356a..309e9a7 100644 --- a/chrome/browser/ui/views/extensions/extensions_tabbed_menu_coordinator.cc +++ b/chrome/browser/ui/views/extensions/extensions_tabbed_menu_coordinator.cc
@@ -31,8 +31,7 @@ extensions_features::kExtensionsMenuAccessControl)); auto menu = std::make_unique<ExtensionsTabbedMenuView>( anchor_view, browser_, extensions_container_, button_type, allow_pining_); - extensions_tabbed_menu_view_tracker_ = - std::make_unique<views::ViewTracker>(menu.get()); + extensions_tabbed_menu_view_tracker_.SetView(menu.get()); views::BubbleDialogDelegateView::CreateBubble(std::move(menu))->Show(); } @@ -40,21 +39,20 @@ DCHECK(base::FeatureList::IsEnabled( extensions_features::kExtensionsMenuAccessControl)); if (IsShowing()) { - extensions_tabbed_menu_view_tracker_->view()->GetWidget()->Close(); - // Immediately set tracker to nullptr. Widget will be destroyed + extensions_tabbed_menu_view_tracker_.view()->GetWidget()->Close(); + // Immediately stop tracking the view. Widget will be destroyed // asynchronously. - extensions_tabbed_menu_view_tracker_ = nullptr; + extensions_tabbed_menu_view_tracker_.SetView(nullptr); } } bool ExtensionsTabbedMenuCoordinator::IsShowing() const { - return extensions_tabbed_menu_view_tracker_ && - extensions_tabbed_menu_view_tracker_->view() != nullptr; + return !!extensions_tabbed_menu_view_tracker_.view(); } ExtensionsTabbedMenuView* ExtensionsTabbedMenuCoordinator::GetExtensionsTabbedMenuView() { return IsShowing() ? static_cast<ExtensionsTabbedMenuView*>( - extensions_tabbed_menu_view_tracker_->view()) + extensions_tabbed_menu_view_tracker_.view()) : nullptr; }
diff --git a/chrome/browser/ui/views/extensions/extensions_tabbed_menu_coordinator.h b/chrome/browser/ui/views/extensions/extensions_tabbed_menu_coordinator.h index 7fb5d5d..47c5728f 100644 --- a/chrome/browser/ui/views/extensions/extensions_tabbed_menu_coordinator.h +++ b/chrome/browser/ui/views/extensions/extensions_tabbed_menu_coordinator.h
@@ -7,10 +7,10 @@ #include "base/memory/raw_ptr.h" #include "chrome/browser/ui/views/extensions/extensions_toolbar_button.h" +#include "ui/views/view_tracker.h" namespace views { class View; -class ViewTracker; } // namespace views class Browser; @@ -46,7 +46,7 @@ raw_ptr<Browser> browser_; raw_ptr<ExtensionsContainer> extensions_container_; bool allow_pining_; - std::unique_ptr<views::ViewTracker> extensions_tabbed_menu_view_tracker_; + views::ViewTracker extensions_tabbed_menu_view_tracker_; }; #endif // CHROME_BROWSER_UI_VIEWS_EXTENSIONS_EXTENSIONS_TABBED_MENU_COORDINATOR_H_
diff --git a/chrome/browser/ui/views/extensions/extensions_tabbed_menu_view_interactive_uitest.cc b/chrome/browser/ui/views/extensions/extensions_tabbed_menu_view_interactive_uitest.cc index da4f3ae..075d39ca 100644 --- a/chrome/browser/ui/views/extensions/extensions_tabbed_menu_view_interactive_uitest.cc +++ b/chrome/browser/ui/views/extensions/extensions_tabbed_menu_view_interactive_uitest.cc
@@ -329,10 +329,11 @@ visible_actions[0]->view_controller()->GetContextMenu( extensions::ExtensionContextMenuModel::ContextMenuSource:: kToolbarAction)); - int visibility_index = context_menu->GetIndexOfCommandId( + absl::optional<size_t> visibility_index = context_menu->GetIndexOfCommandId( extensions::ExtensionContextMenuModel::TOGGLE_VISIBILITY); - ASSERT_GE(visibility_index, 0); - std::u16string visibility_label = context_menu->GetLabelAt(visibility_index); + ASSERT_TRUE(visibility_index.has_value()); + std::u16string visibility_label = + context_menu->GetLabelAt(visibility_index.value()); EXPECT_EQ(visibility_label, u"Unpin"); // Trigger the pinned extension. @@ -366,10 +367,11 @@ visible_actions[0]->view_controller()->GetContextMenu( extensions::ExtensionContextMenuModel::ContextMenuSource:: kToolbarAction)); - int visibility_index = context_menu->GetIndexOfCommandId( + absl::optional<size_t> visibility_index = context_menu->GetIndexOfCommandId( extensions::ExtensionContextMenuModel::TOGGLE_VISIBILITY); - ASSERT_GE(visibility_index, 0); - std::u16string visibility_label = context_menu->GetLabelAt(visibility_index); + ASSERT_TRUE(visibility_index.has_value()); + std::u16string visibility_label = + context_menu->GetLabelAt(visibility_index.value()); EXPECT_EQ(visibility_label, u"Pin"); }
diff --git a/chrome/browser/ui/views/frame/dbus_appmenu.cc b/chrome/browser/ui/views/frame/dbus_appmenu.cc index 43a24111..3f28222c 100644 --- a/chrome/browser/ui/views/frame/dbus_appmenu.cc +++ b/chrome/browser/ui/views/frame/dbus_appmenu.cc
@@ -160,8 +160,8 @@ void FindMenuItemsForCommandAux( ui::MenuModel* menu, int command, - std::vector<std::pair<ui::MenuModel*, int>>* menu_items) { - for (int i = 0; i < menu->GetItemCount(); i++) { + std::vector<std::pair<ui::MenuModel*, size_t>>* menu_items) { + for (size_t i = 0; i < menu->GetItemCount(); ++i) { if (menu->GetCommandIdAt(i) == command) menu_items->push_back({menu, i}); if (menu->GetTypeAt(i) == ui::SimpleMenuModel::ItemType::TYPE_SUBMENU) { @@ -171,10 +171,10 @@ } } -std::vector<std::pair<ui::MenuModel*, int>> FindMenuItemsForCommand( +std::vector<std::pair<ui::MenuModel*, size_t>> FindMenuItemsForCommand( ui::MenuModel* menu, int command) { - std::vector<std::pair<ui::MenuModel*, int>> menu_items; + std::vector<std::pair<ui::MenuModel*, size_t>> menu_items; FindMenuItemsForCommandAux(menu, command, &menu_items); return menu_items; } @@ -297,7 +297,7 @@ if (command_id == kSeparator) { // Use InsertSeparatorAt() instead of AddSeparator() because the latter // refuses to add a separator to an empty menu. - int old_item_count = menu->GetItemCount(); + size_t old_item_count = menu->GetItemCount(); menu->InsertSeparatorAt(old_item_count, ui::MenuSeparatorType::SPACING_SEPARATOR);
diff --git a/chrome/browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc b/chrome/browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc index 6678935c..b1a4e61 100644 --- a/chrome/browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc +++ b/chrome/browser/ui/views/frame/system_menu_model_builder_browsertest_chromeos.cc
@@ -70,7 +70,7 @@ BrowserView::GetBrowserViewForBrowser(settings_browser); ui::MenuModel* menu = browser_view->frame()->GetSystemMenuModel(); std::set<int> commands; - for (int i = 0; i < menu->GetItemCount(); i++) + for (size_t i = 0; i < menu->GetItemCount(); ++i) commands.insert(menu->GetCommandIdAt(i)); // Standard WebUI commands are available.
diff --git a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_contextual_menu_unittest.cc b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_contextual_menu_unittest.cc index 68d1d33..22932ec2c9 100644 --- a/chrome/browser/ui/views/global_media_controls/media_toolbar_button_contextual_menu_unittest.cc +++ b/chrome/browser/ui/views/global_media_controls/media_toolbar_button_contextual_menu_unittest.cc
@@ -54,11 +54,11 @@ auto menu = MediaToolbarButtonContextualMenu::Create(browser()); auto model = menu->CreateMenuModel(); #if BUILDFLAG(GOOGLE_CHROME_BRANDING) - EXPECT_EQ(model->GetItemCount(), 2); + EXPECT_EQ(model->GetItemCount(), 2u); EXPECT_EQ(model->GetCommandIdAt(1), IDC_MEDIA_TOOLBAR_CONTEXT_REPORT_CAST_ISSUE); #else - EXPECT_EQ(model->GetItemCount(), 1); + EXPECT_EQ(model->GetItemCount(), 1u); #endif EXPECT_EQ(model->GetCommandIdAt(0), IDC_MEDIA_TOOLBAR_CONTEXT_SHOW_OTHER_SESSIONS);
diff --git a/chrome/browser/ui/views/media_router/cast_dialog_view_unittest.cc b/chrome/browser/ui/views/media_router/cast_dialog_view_unittest.cc index ff71bb5d..9e698dd 100644 --- a/chrome/browser/ui/views/media_router/cast_dialog_view_unittest.cc +++ b/chrome/browser/ui/views/media_router/cast_dialog_view_unittest.cc
@@ -232,7 +232,7 @@ views::test::ButtonTestApi(sources_button()).NotifyClick(CreateMouseEvent()); // The items should be "tab" (includes tab mirroring and presentation) and // "desktop". - EXPECT_EQ(2, sources_menu_model()->GetItemCount()); + EXPECT_EQ(2u, sources_menu_model()->GetItemCount()); EXPECT_EQ(CastDialogView::kTab, sources_menu_model()->GetCommandIdAt(0)); EXPECT_EQ(CastDialogView::kDesktop, sources_menu_model()->GetCommandIdAt(1)); @@ -250,7 +250,7 @@ // Press the button to show the sources menu. views::test::ButtonTestApi(sources_button()).NotifyClick(CreateMouseEvent()); // There should be two sources: tab and desktop. - ASSERT_EQ(2, sources_menu_model()->GetItemCount()); + ASSERT_EQ(2u, sources_menu_model()->GetItemCount()); EXPECT_CALL(controller_, StartCasting(model.media_sinks()[0].id, TAB_MIRROR)); sources_menu_model()->ActivatedAt(0);
diff --git a/chrome/browser/ui/views/media_router/media_router_ui_interactive_uitest.cc b/chrome/browser/ui/views/media_router/media_router_ui_interactive_uitest.cc index 4d4f0bd..513c7992 100644 --- a/chrome/browser/ui/views/media_router/media_router_ui_interactive_uitest.cc +++ b/chrome/browser/ui/views/media_router/media_router_ui_interactive_uitest.cc
@@ -199,8 +199,10 @@ EXPECT_TRUE(ToolbarIconExists()); // Pin the icon via its context menu. ui::SimpleMenuModel* context_menu = GetIconContextMenu(); - const int command_index = context_menu->GetIndexOfCommandId( - IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION); + const size_t command_index = + context_menu + ->GetIndexOfCommandId(IDC_MEDIA_ROUTER_ALWAYS_SHOW_TOOLBAR_ACTION) + .value(); context_menu->ActivatedAt(command_index); views::test::WidgetDestroyedWaiter waiter(GetDialogWidget());
diff --git a/chrome/browser/ui/views/menu_model_adapter_test.cc b/chrome/browser/ui/views/menu_model_adapter_test.cc index 51bae0b..fe13376 100644 --- a/chrome/browser/ui/views/menu_model_adapter_test.cc +++ b/chrome/browser/ui/views/menu_model_adapter_test.cc
@@ -50,34 +50,36 @@ // ui::MenuModel implementation. bool HasIcons() const override { return false; } - bool IsItemDynamicAt(int index) const override { return false; } + bool IsItemDynamicAt(size_t index) const override { return false; } - bool GetAcceleratorAt(int index, + bool GetAcceleratorAt(size_t index, ui::Accelerator* accelerator) const override { return false; } - ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override { + ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const override { return ui::NORMAL_SEPARATOR; } bool IsItemCheckedAt(size_t index) const override { return false; } - int GetGroupIdAt(int index) const override { return 0; } + int GetGroupIdAt(size_t index) const override { return 0; } - ui::ImageModel GetIconAt(int index) const override { + ui::ImageModel GetIconAt(size_t index) const override { return ui::ImageModel(); } - ui::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const override { + ui::ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const override { return nullptr; } - bool IsEnabledAt(int index) const override { return true; } + bool IsEnabledAt(size_t index) const override { return true; } - ui::MenuModel* GetSubmenuModelAt(int index) const override { return nullptr; } + ui::MenuModel* GetSubmenuModelAt(size_t index) const override { + return nullptr; + } - void ActivatedAt(int index) override {} + void ActivatedAt(size_t index) override {} }; class SubMenuModel : public CommonMenuModel { @@ -97,15 +99,15 @@ private: // ui::MenuModel implementation. - int GetItemCount() const override { return 1; } + size_t GetItemCount() const override { return 1; } - ItemType GetTypeAt(int index) const override { return TYPE_COMMAND; } + ItemType GetTypeAt(size_t index) const override { return TYPE_COMMAND; } - int GetCommandIdAt(int index) const override { - return index + kSubMenuBaseId; + int GetCommandIdAt(size_t index) const override { + return static_cast<int>(index) + kSubMenuBaseId; } - std::u16string GetLabelAt(int index) const override { return u"Item"; } + std::u16string GetLabelAt(size_t index) const override { return u"Item"; } void MenuWillShow() override { showing_ = true; } @@ -131,17 +133,17 @@ private: // ui::MenuModel implementation. - int GetItemCount() const override { return 1; } + size_t GetItemCount() const override { return 1; } - ItemType GetTypeAt(int index) const override { return TYPE_SUBMENU; } + ItemType GetTypeAt(size_t index) const override { return TYPE_SUBMENU; } - int GetCommandIdAt(int index) const override { - return index + kTopMenuBaseId; + int GetCommandIdAt(size_t index) const override { + return static_cast<int>(index) + kTopMenuBaseId; } - std::u16string GetLabelAt(int index) const override { return u"submenu"; } + std::u16string GetLabelAt(size_t index) const override { return u"submenu"; } - MenuModel* GetSubmenuModelAt(int index) const override { + MenuModel* GetSubmenuModelAt(size_t index) const override { return &sub_menu_model_; }
diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc index 05644a9..2ea13cc 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views.cc
@@ -1809,10 +1809,11 @@ void OmniboxViewViews::UpdateContextMenu(ui::SimpleMenuModel* menu_contents) { MaybeAddSendTabToSelfItem(menu_contents); - int paste_position = menu_contents->GetIndexOfCommandId(Textfield::kPaste); - DCHECK_GE(paste_position, 0); - menu_contents->InsertItemWithStringIdAt(paste_position + 1, IDC_PASTE_AND_GO, - IDS_PASTE_AND_GO); + absl::optional<size_t> paste_position = + menu_contents->GetIndexOfCommandId(Textfield::kPaste); + DCHECK(paste_position.has_value()); + menu_contents->InsertItemWithStringIdAt(paste_position.value() + 1, + IDC_PASTE_AND_GO, IDS_PASTE_AND_GO); menu_contents->AddSeparator(ui::NORMAL_SEPARATOR); @@ -1918,7 +1919,7 @@ return; } - int index = menu_contents->GetIndexOfCommandId(Textfield::kUndo); + size_t index = menu_contents->GetIndexOfCommandId(Textfield::kUndo).value(); // Add a separator if this is not the first item. if (index) { menu_contents->InsertSeparatorAt(index++, ui::NORMAL_SEPARATOR);
diff --git a/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc b/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc index 9767f0d..71b72a6 100644 --- a/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc +++ b/chrome/browser/ui/views/sharing/click_to_call_browsertest.cc
@@ -203,14 +203,14 @@ IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_MULTIPLE_DEVICES)); ui::MenuModel* sub_menu_model = nullptr; - int device_id = -1; + size_t device_id = 0; ASSERT_TRUE(menu->GetMenuModelAndItemIndex(kSubMenuFirstDeviceCommandId, &sub_menu_model, &device_id)); - EXPECT_EQ(2, sub_menu_model->GetItemCount()); - EXPECT_EQ(0, device_id); + EXPECT_EQ(2u, sub_menu_model->GetItemCount()); + EXPECT_EQ(0u, device_id); for (auto& device : devices) { - EXPECT_EQ(kSubMenuFirstDeviceCommandId + device_id, + EXPECT_EQ(kSubMenuFirstDeviceCommandId + static_cast<int>(device_id), sub_menu_model->GetCommandIdAt(device_id)); sub_menu_model->ActivatedAt(device_id); @@ -236,14 +236,14 @@ IDC_CONTENT_CONTEXT_SHARING_CLICK_TO_CALL_MULTIPLE_DEVICES)); ui::MenuModel* sub_menu_model = nullptr; - int device_id = -1; + size_t device_id = 0; ASSERT_TRUE(menu->GetMenuModelAndItemIndex(kSubMenuFirstDeviceCommandId, &sub_menu_model, &device_id)); - EXPECT_EQ(2, sub_menu_model->GetItemCount()); - EXPECT_EQ(0, device_id); + EXPECT_EQ(2u, sub_menu_model->GetItemCount()); + EXPECT_EQ(0u, device_id); for (auto& device : devices) { - EXPECT_EQ(kSubMenuFirstDeviceCommandId + device_id, + EXPECT_EQ(kSubMenuFirstDeviceCommandId + static_cast<int>(device_id), sub_menu_model->GetCommandIdAt(device_id)); sub_menu_model->ActivatedAt(device_id);
diff --git a/chrome/browser/ui/views/side_panel/read_anything/read_anything_font_combobox.cc b/chrome/browser/ui/views/side_panel/read_anything/read_anything_font_combobox.cc index e644d71..c9d0c4fd 100644 --- a/chrome/browser/ui/views/side_panel/read_anything/read_anything_font_combobox.cc +++ b/chrome/browser/ui/views/side_panel/read_anything/read_anything_font_combobox.cc
@@ -28,7 +28,7 @@ // The Read Anything font combobox will use a different FontList for each // item in the menu. This will give a preview of the font to the user. - const gfx::FontList* GetLabelFontListAt(int index) const override { + const gfx::FontList* GetLabelFontListAt(size_t index) const override { return new gfx::FontList(static_cast<ReadAnythingFontModel*>(GetModel()) ->GetLabelFontListAt(index)); }
diff --git a/chrome/browser/ui/views/status_icons/concat_menu_model.cc b/chrome/browser/ui/views/status_icons/concat_menu_model.cc index e9bf6501..510498a 100644 --- a/chrome/browser/ui/views/status_icons/concat_menu_model.cc +++ b/chrome/browser/ui/views/status_icons/concat_menu_model.cc
@@ -13,39 +13,39 @@ return m1_->HasIcons() || m2_->HasIcons(); } -int ConcatMenuModel::GetItemCount() const { +size_t ConcatMenuModel::GetItemCount() const { return m1_->GetItemCount() + m2_->GetItemCount(); } -ui::MenuModel::ItemType ConcatMenuModel::GetTypeAt(int index) const { +ui::MenuModel::ItemType ConcatMenuModel::GetTypeAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetTypeAt, index); } -ui::MenuSeparatorType ConcatMenuModel::GetSeparatorTypeAt(int index) const { +ui::MenuSeparatorType ConcatMenuModel::GetSeparatorTypeAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetSeparatorTypeAt, index); } -int ConcatMenuModel::GetCommandIdAt(int index) const { +int ConcatMenuModel::GetCommandIdAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetCommandIdAt, index); } -std::u16string ConcatMenuModel::GetLabelAt(int index) const { +std::u16string ConcatMenuModel::GetLabelAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetLabelAt, index); } -std::u16string ConcatMenuModel::GetMinorTextAt(int index) const { +std::u16string ConcatMenuModel::GetMinorTextAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetMinorTextAt, index); } -ui::ImageModel ConcatMenuModel::GetMinorIconAt(int index) const { +ui::ImageModel ConcatMenuModel::GetMinorIconAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetMinorIconAt, index); } -bool ConcatMenuModel::IsItemDynamicAt(int index) const { +bool ConcatMenuModel::IsItemDynamicAt(size_t index) const { return GetterImpl(&ui::MenuModel::IsItemDynamicAt, index); } -bool ConcatMenuModel::GetAcceleratorAt(int index, +bool ConcatMenuModel::GetAcceleratorAt(size_t index, ui::Accelerator* accelerator) const { return GetterImpl(&ui::MenuModel::GetAcceleratorAt, index, accelerator); } @@ -54,35 +54,36 @@ return GetterImpl(&ui::MenuModel::IsItemCheckedAt, index); } -int ConcatMenuModel::GetGroupIdAt(int index) const { +int ConcatMenuModel::GetGroupIdAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetGroupIdAt, index); } -ui::ImageModel ConcatMenuModel::GetIconAt(int index) const { +ui::ImageModel ConcatMenuModel::GetIconAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetIconAt, index); } -ui::ButtonMenuItemModel* ConcatMenuModel::GetButtonMenuItemAt(int index) const { +ui::ButtonMenuItemModel* ConcatMenuModel::GetButtonMenuItemAt( + size_t index) const { return GetterImpl(&ui::MenuModel::GetButtonMenuItemAt, index); } -bool ConcatMenuModel::IsEnabledAt(int index) const { +bool ConcatMenuModel::IsEnabledAt(size_t index) const { return GetterImpl(&ui::MenuModel::IsEnabledAt, index); } -bool ConcatMenuModel::IsVisibleAt(int index) const { +bool ConcatMenuModel::IsVisibleAt(size_t index) const { return GetterImpl(&ui::MenuModel::IsVisibleAt, index); } -void ConcatMenuModel::ActivatedAt(int index) { +void ConcatMenuModel::ActivatedAt(size_t index) { GetMenuAndIndex(&index)->ActivatedAt(index); } -void ConcatMenuModel::ActivatedAt(int index, int event_flags) { +void ConcatMenuModel::ActivatedAt(size_t index, int event_flags) { GetMenuAndIndex(&index)->ActivatedAt(index, event_flags); } -ui::MenuModel* ConcatMenuModel::GetSubmenuModelAt(int index) const { +ui::MenuModel* ConcatMenuModel::GetSubmenuModelAt(size_t index) const { return GetterImpl(&ui::MenuModel::GetSubmenuModelAt, index); } @@ -96,12 +97,12 @@ m2_->MenuWillClose(); } -ui::MenuModel* ConcatMenuModel::GetMenuAndIndex(int* index) const { - int m1_count = m1_->GetItemCount(); +ui::MenuModel* ConcatMenuModel::GetMenuAndIndex(size_t* index) const { + size_t m1_count = m1_->GetItemCount(); if (*index < m1_count) return m1_; - DCHECK_LT(*index - m1_count, m2_->GetItemCount()); *index -= m1_count; + DCHECK_LT(*index, m2_->GetItemCount()); return m2_; }
diff --git a/chrome/browser/ui/views/status_icons/concat_menu_model.h b/chrome/browser/ui/views/status_icons/concat_menu_model.h index 761cca4f..047a8a8a 100644 --- a/chrome/browser/ui/views/status_icons/concat_menu_model.h +++ b/chrome/browser/ui/views/status_icons/concat_menu_model.h
@@ -23,36 +23,37 @@ // MenuModel: bool HasIcons() const override; - int GetItemCount() const override; - ItemType GetTypeAt(int index) const override; - ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override; - int GetCommandIdAt(int index) const override; - std::u16string GetLabelAt(int index) const override; - std::u16string GetMinorTextAt(int index) const override; - ui::ImageModel GetMinorIconAt(int index) const override; - bool IsItemDynamicAt(int index) const override; - bool GetAcceleratorAt(int index, ui::Accelerator* accelerator) const override; + size_t GetItemCount() const override; + ItemType GetTypeAt(size_t index) const override; + ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const override; + int GetCommandIdAt(size_t index) const override; + std::u16string GetLabelAt(size_t index) const override; + std::u16string GetMinorTextAt(size_t index) const override; + ui::ImageModel GetMinorIconAt(size_t index) const override; + bool IsItemDynamicAt(size_t index) const override; + bool GetAcceleratorAt(size_t index, + ui::Accelerator* accelerator) const override; bool IsItemCheckedAt(size_t index) const override; - int GetGroupIdAt(int index) const override; - ui::ImageModel GetIconAt(int index) const override; - ui::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const override; - bool IsEnabledAt(int index) const override; - bool IsVisibleAt(int index) const override; - void ActivatedAt(int index) override; - void ActivatedAt(int index, int event_flags) override; - MenuModel* GetSubmenuModelAt(int index) const override; + int GetGroupIdAt(size_t index) const override; + ui::ImageModel GetIconAt(size_t index) const override; + ui::ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const override; + bool IsEnabledAt(size_t index) const override; + bool IsVisibleAt(size_t index) const override; + void ActivatedAt(size_t index) override; + void ActivatedAt(size_t index, int event_flags) override; + MenuModel* GetSubmenuModelAt(size_t index) const override; void MenuWillShow() override; void MenuWillClose() override; private: template <typename F, typename... Ts> - auto GetterImpl(F&& f, int index, Ts&&... args) const { + auto GetterImpl(F&& f, size_t index, Ts&&... args) const { return (GetMenuAndIndex(&index)->*f)(index, args...); } // Returns either |m1_| or |m2_| for the input |index|. |index| will be // adjusted for the returned menu. - ui::MenuModel* GetMenuAndIndex(int* index) const; + ui::MenuModel* GetMenuAndIndex(size_t* index) const; const raw_ptr<ui::MenuModel> m1_; const raw_ptr<ui::MenuModel> m2_;
diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc index 9e9e8f4..cccf554 100644 --- a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc +++ b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
@@ -1099,8 +1099,14 @@ // Creates a browser with four tabs with third and fourth in a group. // Selecting and dragging the second and third tabs towards left out // of the group will result in the tabs being ungrouped. +// TODO(crbug.com/1342795): Flaky on Lacros. +#if BUILDFLAG(IS_CHROMEOS_LACROS) +#define MAYBE_DragUngroupedTabGroupedTabOutsideGroup DISABLED_DragUngroupedTabGroupedTabOutsideGroup +#else +#define MAYBE_DragUngroupedTabGroupedTabOutsideGroup DragUngroupedTabGroupedTabOutsideGroup +#endif IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest, - DragUngroupedTabGroupedTabOutsideGroup) { + MAYBE_DragUngroupedTabGroupedTabOutsideGroup) { ASSERT_TRUE(browser()->tab_strip_model()->SupportsTabGroups()); TabStrip* tab_strip = GetTabStripForBrowser(browser());
diff --git a/chrome/browser/ui/views/toolbar/app_menu.cc b/chrome/browser/ui/views/toolbar/app_menu.cc index 1033888a..00f299c 100644 --- a/chrome/browser/ui/views/toolbar/app_menu.cc +++ b/chrome/browser/ui/views/toolbar/app_menu.cc
@@ -198,7 +198,7 @@ }; std::u16string GetAccessibleNameForAppMenuItem(ButtonMenuItemModel* model, - int item_index, + size_t item_index, int accessible_string_id, bool add_accelerator_text) { std::u16string accessible_name = @@ -284,7 +284,7 @@ views::Button::PressedCallback callback, int string_id, InMenuButtonBackground::ButtonType type, - int index) { + size_t index) { return CreateButtonWithAccessibleName( std::move(callback), string_id, type, index, string_id, /*add_accelerator_text=*/true, @@ -295,7 +295,7 @@ views::Button::PressedCallback callback, int string_id, InMenuButtonBackground::ButtonType type, - int index, + size_t index, int accessible_name_id, bool add_accelerator_text, bool use_accessible_name_as_tooltip_text) { @@ -342,7 +342,7 @@ METADATA_HEADER(FullscreenButton); explicit FullscreenButton(PressedCallback callback, ButtonMenuItemModel* menu_model, - int fullscreen_index, + size_t fullscreen_index, bool is_in_fullscreen) : ImageButton(std::move(callback)) { // Since |fullscreen_button_| will reside in a menu, make it ALWAYS @@ -400,12 +400,12 @@ METADATA_HEADER(CutCopyPasteView); CutCopyPasteView(AppMenu* menu, ButtonMenuItemModel* menu_model, - int cut_index, - int copy_index, - int paste_index) + size_t cut_index, + size_t copy_index, + size_t paste_index) : AppMenuView(menu, menu_model) { const auto cancel_and_evaluate = - [](AppMenu* menu, ButtonMenuItemModel* menu_model, int index) { + [](AppMenu* menu, ButtonMenuItemModel* menu_model, size_t index) { menu->CancelAndEvaluate(menu_model, index); }; CreateAndConfigureButton( @@ -467,9 +467,9 @@ METADATA_HEADER(ZoomView); ZoomView(AppMenu* menu, ButtonMenuItemModel* menu_model, - int decrement_index, - int increment_index, - int fullscreen_index) + size_t decrement_index, + size_t increment_index, + size_t fullscreen_index) : AppMenuView(menu, menu_model), increment_button_(nullptr), zoom_label_(nullptr), @@ -483,7 +483,7 @@ base::BindRepeating(&AppMenu::ZoomView::OnZoomLevelChanged, base::Unretained(this))); - const auto activate = [](ButtonMenuItemModel* menu_model, int index) { + const auto activate = [](ButtonMenuItemModel* menu_model, size_t index) { menu_model->ActivatedAt(index); }; decrement_button_ = CreateButtonWithAccessibleName( @@ -518,7 +518,7 @@ fullscreen_button_ = new FullscreenButton( base::BindRepeating( - [](AppMenu* menu, ButtonMenuItemModel* menu_model, int index) { + [](AppMenu* menu, ButtonMenuItemModel* menu_model, size_t index) { menu->CancelAndEvaluate(menu_model, index); }, menu, menu_model, fullscreen_index), @@ -713,9 +713,8 @@ const gfx::FontList* GetLabelFontListForCommandId(int command_id) const { ui::MenuModel* model = model_; - int index = -1; + size_t index = 0; AppMenuModel::GetModelAndIndexForCommandId(command_id, &model, &index); - DCHECK_GT(index, -1); return model->GetLabelFontListAt(index); } @@ -723,7 +722,7 @@ void OnIconChanged(int command_id) override { ui::MenuModel* model = model_; - int index; + size_t index; model_->GetModelAndIndexForCommandId(command_id, &model, &index); views::MenuItemView* item = menu_item_->GetMenuItemByID(command_id); DCHECK(item); @@ -768,8 +767,8 @@ void BuildMenu(MenuItemView* menu, ui::MenuModel* model) { DCHECK(menu); DCHECK(model); - const int item_count = model->GetItemCount(); - for (int i = 0; i < item_count; ++i) { + const size_t item_count = model->GetItemCount(); + for (size_t i = 0; i < item_count; ++i) { MenuItemView* const item = app_menu_->AddMenuItem(menu, i, model, i, model->GetTypeAt(i)); if (model->GetTypeAt(i) == ui::MenuModel::TYPE_SUBMENU || @@ -785,8 +784,8 @@ // Populates out_set with all command ids referenced by the model, including // those referenced by sub menu models. void GetDescendantCommandIds(MenuModel* model, base::flat_set<int>* out_set) { - const int item_count = model->GetItemCount(); - for (int i = 0; i < item_count; i++) { + const size_t item_count = model->GetItemCount(); + for (size_t i = 0; i < item_count; ++i) { out_set->insert(model->GetCommandIdAt(i)); if (model->GetTypeAt(i) == ui::MenuModel::TYPE_SUBMENU || model->GetTypeAt(i) == ui::MenuModel::TYPE_ACTIONABLE_SUBMENU) { @@ -1101,12 +1100,11 @@ } void AppMenu::PopulateMenu(MenuItemView* parent, MenuModel* model) { - for (int i = 0, max = model->GetItemCount(); i < max; ++i) { + for (size_t i = 0, max = model->GetItemCount(); i < max; ++i) { // Add the menu item at the end. - int menu_index = - parent->HasSubmenu() - ? static_cast<int>(parent->GetSubmenu()->children().size()) - : 0; + size_t menu_index = parent->HasSubmenu() + ? parent->GetSubmenu()->children().size() + : size_t{0}; MenuItemView* item = AddMenuItem(parent, menu_index, model, i, model->GetTypeAt(i)); @@ -1181,9 +1179,9 @@ } MenuItemView* AppMenu::AddMenuItem(MenuItemView* parent, - int menu_index, + size_t menu_index, MenuModel* model, - int model_index, + size_t model_index, MenuModel::ItemType menu_type) { int command_id = model->GetCommandIdAt(model_index); DCHECK(command_id > -1 || @@ -1226,7 +1224,7 @@ return menu_item; } -void AppMenu::CancelAndEvaluate(ButtonMenuItemModel* model, int index) { +void AppMenu::CancelAndEvaluate(ButtonMenuItemModel* model, size_t index) { selected_menu_model_ = model; selected_index_ = index; root_->Cancel(); @@ -1258,7 +1256,7 @@ BOOKMARK_LAUNCH_LOCATION_APP_MENU); } -int AppMenu::ModelIndexFromCommandId(int command_id) const { +size_t AppMenu::ModelIndexFromCommandId(int command_id) const { auto ix = command_id_to_entry_.find(command_id); DCHECK(ix != command_id_to_entry_.end()); return ix->second.second;
diff --git a/chrome/browser/ui/views/toolbar/app_menu.h b/chrome/browser/ui/views/toolbar/app_menu.h index f0c067a..2b89f8fc 100644 --- a/chrome/browser/ui/views/toolbar/app_menu.h +++ b/chrome/browser/ui/views/toolbar/app_menu.h
@@ -108,7 +108,7 @@ class RecentTabsMenuModelDelegate; class ZoomView; - typedef std::pair<ui::MenuModel*,int> Entry; + typedef std::pair<ui::MenuModel*, size_t> Entry; typedef std::map<int,Entry> CommandIDToEntry; // Populates |parent| with all the child menus in |model|. Recursively invokes @@ -124,14 +124,14 @@ // The returned item's MenuItemView::GetCommand() is the same as that of // |model|->GetCommandIdAt(|model_index|). views::MenuItemView* AddMenuItem(views::MenuItemView* parent, - int menu_index, + size_t menu_index, ui::MenuModel* model, - int model_index, + size_t model_index, ui::MenuModel::ItemType menu_type); // Invoked from the cut/copy/paste menus. Cancels the current active menu and // activates the menu item in |model| at |index|. - void CancelAndEvaluate(ui::ButtonMenuItemModel* model, int index); + void CancelAndEvaluate(ui::ButtonMenuItemModel* model, size_t index); // Creates the bookmark menu if necessary. Does nothing if already created or // the bookmark model isn't loaded. @@ -139,7 +139,7 @@ // Returns the index of the MenuModel/index pair representing the |command_id| // in |command_id_to_entry_|. - int ModelIndexFromCommandId(int command_id) const; + size_t ModelIndexFromCommandId(int command_id) const; // The views menu. Owned by |menu_runner_|. raw_ptr<views::MenuItemView> root_ = nullptr; @@ -158,7 +158,7 @@ // ActivatedAt is invoked. This is done so that ActivatedAt isn't invoked // while the message loop is nested. raw_ptr<ui::ButtonMenuItemModel> selected_menu_model_ = nullptr; - int selected_index_ = 0; + size_t selected_index_ = 0; // Used for managing the bookmark menu items. std::unique_ptr<BookmarkMenuDelegate> bookmark_menu_delegate_;
diff --git a/chrome/browser/ui/views/toolbar/toolbar_button_unittest.cc b/chrome/browser/ui/views/toolbar/toolbar_button_unittest.cc index c716875..bf715fef 100644 --- a/chrome/browser/ui/views/toolbar/toolbar_button_unittest.cc +++ b/chrome/browser/ui/views/toolbar/toolbar_button_unittest.cc
@@ -67,7 +67,7 @@ ~CheckActiveWebContentsMenuModel() override = default; // ui::SimpleMenuModel: - int GetItemCount() const override { + size_t GetItemCount() const override { EXPECT_TRUE(tab_strip_model_->GetActiveWebContents()); return 0; }
diff --git a/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc b/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc index 6ef2392..6dd988e 100644 --- a/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc +++ b/chrome/browser/ui/views/translate/translate_bubble_view_unittest.cc
@@ -259,8 +259,10 @@ EXPECT_FALSE(denial_button_clicked()); TriggerOptionsMenu(); - const int index = bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::NEVER_TRANSLATE_LANGUAGE); + const size_t index = + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::NEVER_TRANSLATE_LANGUAGE) + .value(); bubble_->options_menu_model_->ActivatedAt(index); EXPECT_TRUE(denial_button_clicked()); @@ -283,8 +285,10 @@ EXPECT_FALSE(bubble_->GetWidget()->IsClosed()); TriggerOptionsMenu(); - const int index = bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::NEVER_TRANSLATE_SITE); + const size_t index = + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::NEVER_TRANSLATE_SITE) + .value(); bubble_->options_menu_model_->ActivatedAt(index); EXPECT_TRUE(denial_button_clicked()); @@ -316,8 +320,7 @@ EXPECT_TRUE(mock_model_->translate_called_); EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, bubble_->GetViewState()); - EXPECT_EQ(bubble_->tabbed_pane_->GetSelectedTabIndex(), - static_cast<size_t>(1)); + EXPECT_EQ(bubble_->tabbed_pane_->GetSelectedTabIndex(), size_t{1}); histogram_tester.ExpectBucketCount( translate::kTranslateBubbleUiEventHistogramName, translate::TranslateBubbleUiEvent::ALWAYS_TRANSLATE_CHECKED, 1); @@ -506,12 +509,15 @@ TriggerOptionsMenu(); // NEVER_TRANSLATE_SITE shouldn't show up for sites that can't be blocklisted. - EXPECT_EQ(-1, bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::NEVER_TRANSLATE_SITE)); + EXPECT_FALSE( + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::NEVER_TRANSLATE_SITE) + .has_value()); // Verify that the menu is populated so previous check makes sense. - EXPECT_GE(bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::NEVER_TRANSLATE_LANGUAGE), - 0); + EXPECT_TRUE( + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::NEVER_TRANSLATE_LANGUAGE) + .has_value()); } TEST_F(TranslateBubbleViewTest, MenuOptionsHiddenOnUnknownSource) { @@ -522,22 +528,29 @@ TriggerOptionsMenu(); // NEVER_TRANSLATE_LANGUAGE and ALWAYS_TRANSLATE_LANGUAGE shouldn't show when // the source language is "Unknown". - EXPECT_EQ(-1, bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::NEVER_TRANSLATE_LANGUAGE)); - EXPECT_EQ(-1, bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::ALWAYS_TRANSLATE_LANGUAGE)); + EXPECT_FALSE( + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::NEVER_TRANSLATE_LANGUAGE) + .has_value()); + EXPECT_FALSE( + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::ALWAYS_TRANSLATE_LANGUAGE) + .has_value()); // Verify that the menu is populated so previous checks make sense. - EXPECT_GE(bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::CHANGE_TARGET_LANGUAGE), - 0); + EXPECT_TRUE( + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::CHANGE_TARGET_LANGUAGE) + .has_value()); } TEST_F(TranslateBubbleViewTest, AlwaysTranslateLanguageMenuItem) { CreateAndShowBubble(); TriggerOptionsMenu(); - const int index = bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::ALWAYS_TRANSLATE_LANGUAGE); + const size_t index = + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::ALWAYS_TRANSLATE_LANGUAGE) + .value(); EXPECT_FALSE(mock_model_->ShouldAlwaysTranslate()); EXPECT_FALSE(bubble_->options_menu_model_->IsItemCheckedAt(index)); @@ -582,8 +595,10 @@ CreateAndShowBubble(); TriggerOptionsMenu(); - const int index = bubble_->options_menu_model_->GetIndexOfCommandId( - TranslateBubbleView::ALWAYS_TRANSLATE_LANGUAGE); + const size_t index = + bubble_->options_menu_model_ + ->GetIndexOfCommandId(TranslateBubbleView::ALWAYS_TRANSLATE_LANGUAGE) + .value(); EXPECT_FALSE(mock_model_->ShouldAlwaysTranslate()); EXPECT_FALSE(bubble_->options_menu_model_->IsItemCheckedAt(index));
diff --git a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_browsertest.cc b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_browsertest.cc index 0a9cd97..7e217ff 100644 --- a/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_browsertest.cc +++ b/chrome/browser/ui/views/web_apps/frame_toolbar/web_app_frame_toolbar_browsertest.cc
@@ -120,12 +120,10 @@ /*provider=*/nullptr, helper()->app_browser()); app_menu_model->Init(); ui::MenuModel* model = app_menu_model.get(); - int index = -1; - if (!app_menu_model->GetModelAndIndexForCommandId(command_id, &model, - &index)) { - return false; - } - return model->IsEnabledAt(index); + size_t index = 0; + return app_menu_model->GetModelAndIndexForCommandId(command_id, &model, + &index) && + model->IsEnabledAt(index); } private:
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc index ee1a04cf..ec6280d 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc +++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.cc
@@ -1423,7 +1423,7 @@ std::make_unique<WebAppMenuModel>(/*provider=*/nullptr, app_browser); app_menu_model->Init(); ui::MenuModel* model = app_menu_model.get(); - int index = -1; + size_t index = 0; const bool found = app_menu_model->GetModelAndIndexForCommandId( WebAppMenuModel::kUninstallAppCommandId, &model, &index); EXPECT_TRUE(found);
diff --git a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h index 30a283fc..3de37fa 100644 --- a/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h +++ b/chrome/browser/ui/views/web_apps/web_app_integration_test_driver.h
@@ -384,7 +384,9 @@ raw_ptr<Browser> active_browser_ = nullptr; raw_ptr<Profile> active_profile_ = nullptr; AppId active_app_id_; - raw_ptr<Browser> app_browser_ = nullptr; + // TODO(crbug.com/1298696): browser_tests breaks with MTECheckedPtr + // enabled. Triage. + raw_ptr<Browser, DegradeToNoOpWhenMTE> app_browser_ = nullptr; std::unique_ptr<views::NamedWidgetShownWaiter> app_id_update_dialog_waiter_; base::ScopedObservation<web_app::WebAppInstallManager,
diff --git a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc index b497c23f..add15cd0 100644 --- a/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc +++ b/chrome/browser/ui/views/webauthn/authenticator_request_dialog_view.cc
@@ -320,7 +320,7 @@ auto* other_mechanisms_menu_model = sheet_->model()->GetOtherMechanismsMenuModel(); DCHECK(other_mechanisms_menu_model); - DCHECK_GE(other_mechanisms_menu_model->GetItemCount(), 1); + DCHECK_GE(other_mechanisms_menu_model->GetItemCount(), 1u); other_mechanisms_menu_runner_ = std::make_unique<views::MenuRunner>( other_mechanisms_menu_model, views::MenuRunner::COMBOBOX);
diff --git a/chrome/browser/ui/web_applications/test/system_web_app_interactive_uitest.cc b/chrome/browser/ui/web_applications/test/system_web_app_interactive_uitest.cc index 0b9e0ddb2..b100f2e 100644 --- a/chrome/browser/ui/web_applications/test/system_web_app_interactive_uitest.cc +++ b/chrome/browser/ui/web_applications/test/system_web_app_interactive_uitest.cc
@@ -1096,7 +1096,7 @@ ASSERT_TRUE(menu); ui::MenuModel* model = menu.get(); - int command_index; + size_t command_index; ui::MenuModel::GetModelAndIndexForCommandId(command_id, &model, &command_index); EXPECT_TRUE(menu->IsEnabledAt(command_index));
diff --git a/chrome/browser/ui/web_applications/test/web_app_browsertest_util.cc b/chrome/browser/ui/web_applications/test/web_app_browsertest_util.cc index c06f40a..fcb23cba 100644 --- a/chrome/browser/ui/web_applications/test/web_app_browsertest_util.cc +++ b/chrome/browser/ui/web_applications/test/web_app_browsertest_util.cc
@@ -321,7 +321,7 @@ auto app_menu_model = std::make_unique<AppMenuModel>(nullptr, browser); app_menu_model->Init(); ui::MenuModel* model = app_menu_model.get(); - int index = -1; + size_t index = 0; if (!app_menu_model->GetModelAndIndexForCommandId(command_id, &model, &index)) { return kNotPresent;
diff --git a/chrome/browser/ui/web_applications/web_app_browsertest.cc b/chrome/browser/ui/web_applications/web_app_browsertest.cc index 4f29db14..4a038ac 100644 --- a/chrome/browser/ui/web_applications/web_app_browsertest.cc +++ b/chrome/browser/ui/web_applications/web_app_browsertest.cc
@@ -934,7 +934,7 @@ std::make_unique<AppMenuModel>(nullptr, incognito_browser); app_menu_model->Init(); ui::MenuModel* model = app_menu_model.get(); - int index = -1; + size_t index = 0; ASSERT_TRUE(app_menu_model->GetModelAndIndexForCommandId( IDC_OPEN_IN_PWA_WINDOW, &model, &index)); EXPECT_FALSE(model->IsEnabledAt(index)); @@ -968,7 +968,7 @@ /*provider=*/nullptr, app_browser); app_menu_model->Init(); ui::MenuModel* model = app_menu_model.get(); - int index = -1; + size_t index = 0; const bool found = app_menu_model->GetModelAndIndexForCommandId( WebAppMenuModel::kUninstallAppCommandId, &model, &index); #if BUILDFLAG(IS_CHROMEOS) @@ -1494,7 +1494,7 @@ auto app_menu_model = std::make_unique<AppMenuModel>(nullptr, browser()); app_menu_model->Init(); ui::MenuModel* model = app_menu_model.get(); - int index = -1; + size_t index = 0; EXPECT_TRUE(app_menu_model->GetModelAndIndexForCommandId(IDC_INSTALL_PWA, &model, &index)); EXPECT_EQ(app_menu_model.get(), model);
diff --git a/chrome/browser/ui/web_applications/web_app_menu_model.cc b/chrome/browser/ui/web_applications/web_app_menu_model.cc index 5b7b9ea..f3fd09c 100644 --- a/chrome/browser/ui/web_applications/web_app_menu_model.cc +++ b/chrome/browser/ui/web_applications/web_app_menu_model.cc
@@ -96,7 +96,7 @@ void WebAppMenuModel::Build() { AddItemWithStringId(IDC_WEB_APP_MENU_APP_INFO, IDS_APP_CONTEXT_MENU_SHOW_INFO); - int app_info_index = GetItemCount() - 1; + size_t app_info_index = GetItemCount() - 1; content::WebContents* web_contents = browser()->tab_strip_model()->GetActiveWebContents(); if (web_contents) {
diff --git a/chrome/browser/ui/webui/about_ui.cc b/chrome/browser/ui/webui/about_ui.cc index f1be7001..7b3aee4 100644 --- a/chrome/browser/ui/webui/about_ui.cc +++ b/chrome/browser/ui/webui/about_ui.cc
@@ -720,7 +720,8 @@ base::RefCountedString::TakeString(std::move(html_copy))); } -std::string AboutUIHTMLSource::GetMimeType(const std::string& path) { +std::string AboutUIHTMLSource::GetMimeType(const GURL& url) { + const base::StringPiece path = url.path_piece().substr(1); if (path == kCreditsJsPath || #if BUILDFLAG(IS_CHROMEOS_ASH) path == kKeyboardUtilsPath ||
diff --git a/chrome/browser/ui/webui/about_ui.h b/chrome/browser/ui/webui/about_ui.h index b159d18de..4bdfbc6 100644 --- a/chrome/browser/ui/webui/about_ui.h +++ b/chrome/browser/ui/webui/about_ui.h
@@ -32,7 +32,7 @@ const GURL& url, const content::WebContents::Getter& wc_getter, content::URLDataSource::GotDataCallback callback) override; - std::string GetMimeType(const std::string& path) override; + std::string GetMimeType(const GURL& url) override; bool ShouldAddContentSecurityPolicy() override; std::string GetAccessControlAllowOriginForOrigin( const std::string& origin) override;
diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs_chromeos.cc b/chrome/browser/ui/webui/chrome_web_ui_configs_chromeos.cc index ed9f1501..f03a37a 100644 --- a/chrome/browser/ui/webui/chrome_web_ui_configs_chromeos.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_configs_chromeos.cc
@@ -8,6 +8,7 @@ #include "content/public/browser/webui_config_map.h" #if BUILDFLAG(IS_CHROMEOS_ASH) +#include "chrome/browser/ui/webui/chromeos/notification_tester/notification_tester_ui.h" #if !defined(OFFICIAL_BUILD) #include "ash/webui/sample_system_web_app_ui/sample_system_web_app_ui.h" #endif // !defined(OFFICIAL_BUILD) @@ -17,8 +18,9 @@ #if BUILDFLAG(IS_CHROMEOS_ASH) void RegisterAshChromeWebUIConfigs() { // Add `WebUIConfig`s for Ash ChromeOS to the list here. -#if !defined(OFFICIAL_BUILD) auto& map = content::WebUIConfigMap::GetInstance(); + map.AddWebUIConfig(std::make_unique<chromeos::NotificationTesterUIConfig>()); +#if !defined(OFFICIAL_BUILD) map.AddWebUIConfig(std::make_unique<ash::SampleSystemWebAppUIConfig>()); #endif // !defined(OFFICIAL_BUILD) }
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc index 472b2218..72d811b0 100644 --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
@@ -956,8 +956,6 @@ } return &NewWebUI<chromeos::cloud_upload::CloudUploadDialogUI>; } - if (url.host_piece() == chrome::kChromeUINotificationTesterHost) - return &NewWebUI<chromeos::NotificationTesterUI>; if (url.host_piece() == chrome::kChromeUIAccountManagerErrorHost) return &NewWebUI<chromeos::AccountManagerErrorUI>; if (url.host_piece() == chrome::kChromeUIAccountMigrationWelcomeHost)
diff --git a/chrome/browser/ui/webui/chromeos/cellular_setup/mobile_setup_ui.cc b/chrome/browser/ui/webui/chromeos/cellular_setup/mobile_setup_ui.cc index e5238f7..49becfea 100644 --- a/chrome/browser/ui/webui/chromeos/cellular_setup/mobile_setup_ui.cc +++ b/chrome/browser/ui/webui/chromeos/cellular_setup/mobile_setup_ui.cc
@@ -184,7 +184,7 @@ const GURL& url, const content::WebContents::Getter& wc_getter, content::URLDataSource::GotDataCallback callback) override; - std::string GetMimeType(const std::string&) override { return "text/html"; } + std::string GetMimeType(const GURL&) override { return "text/html"; } bool ShouldAddContentSecurityPolicy() override { return false; } bool AllowCaching() override { // Should not be cached to reflect dynamically-generated contents that may
diff --git a/chrome/browser/ui/webui/chromeos/image_source.cc b/chrome/browser/ui/webui/chromeos/image_source.cc index de8c398..6e07ddbcf 100644 --- a/chrome/browser/ui/webui/chromeos/image_source.cc +++ b/chrome/browser/ui/webui/chromeos/image_source.cc
@@ -85,9 +85,9 @@ } } -std::string ImageSource::GetMimeType(const std::string& path) { +std::string ImageSource::GetMimeType(const GURL& url) { std::string mime_type; - std::string ext = base::FilePath(path).Extension(); + std::string ext = base::FilePath(url.path_piece()).Extension(); if (!ext.empty()) net::GetWellKnownMimeTypeFromExtension(ext.substr(1), &mime_type); return mime_type;
diff --git a/chrome/browser/ui/webui/chromeos/image_source.h b/chrome/browser/ui/webui/chromeos/image_source.h index 9516b76..843934a 100644 --- a/chrome/browser/ui/webui/chromeos/image_source.h +++ b/chrome/browser/ui/webui/chromeos/image_source.h
@@ -35,7 +35,7 @@ const content::WebContents::Getter& wc_getter, content::URLDataSource::GotDataCallback got_data_callback) override; - std::string GetMimeType(const std::string& path) override; + std::string GetMimeType(const GURL& url) override; private: // Continuation from StartDataRequest().
diff --git a/chrome/browser/ui/webui/chromeos/notification_tester/notification_tester_ui.h b/chrome/browser/ui/webui/chromeos/notification_tester/notification_tester_ui.h index 254370f..f91b913 100644 --- a/chrome/browser/ui/webui/chromeos/notification_tester/notification_tester_ui.h +++ b/chrome/browser/ui/webui/chromeos/notification_tester/notification_tester_ui.h
@@ -5,10 +5,23 @@ #ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_NOTIFICATION_TESTER_NOTIFICATION_TESTER_UI_H_ #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_NOTIFICATION_TESTER_NOTIFICATION_TESTER_UI_H_ +#include "chrome/common/webui_url_constants.h" #include "content/public/browser/web_ui_controller.h" +#include "content/public/browser/webui_config.h" +#include "content/public/common/url_constants.h" namespace chromeos { +class NotificationTesterUI; + +class NotificationTesterUIConfig + : public content::DefaultWebUIConfig<NotificationTesterUI> { + public: + NotificationTesterUIConfig() + : DefaultWebUIConfig(content::kChromeUIScheme, + chrome::kChromeUINotificationTesterHost) {} +}; + // The UI controller for NotificationTester page. class NotificationTesterUI : public content::WebUIController { public:
diff --git a/chrome/browser/ui/webui/chromeos/onc_import_message_handler.h b/chrome/browser/ui/webui/chromeos/onc_import_message_handler.h index 3e63b99..16d3d31 100644 --- a/chrome/browser/ui/webui/chromeos/onc_import_message_handler.h +++ b/chrome/browser/ui/webui/chromeos/onc_import_message_handler.h
@@ -9,6 +9,8 @@ #include "base/memory/weak_ptr.h" #include "base/values.h" +// TODO(https://crbug.com/1164001): move to forward declaration +#include "chromeos/ash/components/network/onc/onc_certificate_importer_impl.h" #include "content/public/browser/web_ui_message_handler.h" namespace net { @@ -17,10 +19,6 @@ namespace chromeos { -namespace onc { -class CertificateImporterImpl; -} - class OncImportMessageHandler : public content::WebUIMessageHandler { public: OncImportMessageHandler();
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc index 94cdaf0..cef07af 100644 --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -781,6 +781,8 @@ IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_LABEL}, {"spellCheckEnhancedDescription", IDS_SETTINGS_LANGUAGES_SPELL_CHECK_ENHANCED_DESCRIPTION}, + {"offerToEnableSpellCheck", + IDS_SETTINGS_LANGUAGES_OFFER_TO_ENABLE_SPELL_CHECK}, // Managed dialog strings: {"languageManagedDialogTitle", IDS_SETTINGS_LANGUAGES_MANAGED_DIALOG_TITLE}, {"languageManagedDialogBody", IDS_SETTINGS_LANGUAGES_MANAGED_DIALOG_BODY},
diff --git a/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.cc b/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.cc index 91c9fda..7a573c9 100644 --- a/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.cc +++ b/chrome/browser/ui/webui/side_panel/bookmarks/bookmarks_page_handler.cc
@@ -98,10 +98,11 @@ private: void AddItem(int command_id) { - ui::SimpleMenuModel::AddItem( - command_id, - controller_->menu_model()->GetLabelAt( - controller_->menu_model()->GetIndexOfCommandId(command_id))); + ui::SimpleMenuModel::AddItem(command_id, + controller_->menu_model()->GetLabelAt( + controller_->menu_model() + ->GetIndexOfCommandId(command_id) + .value())); } base::WeakPtr<ui::MojoBubbleWebUIController::Embedder> embedder_; std::unique_ptr<BookmarkContextMenuController> controller_;
diff --git a/chrome/browser/web_applications/app_service/web_apps_browsertest.cc b/chrome/browser/web_applications/app_service/web_apps_browsertest.cc index 0bde7a6..f3ad83e2 100644 --- a/chrome/browser/web_applications/app_service/web_apps_browsertest.cc +++ b/chrome/browser/web_applications/app_service/web_apps_browsertest.cc
@@ -21,7 +21,7 @@ #include "chrome/browser/web_applications/web_app_provider.h" #include "chrome/browser/web_applications/web_app_registrar.h" #include "chrome/test/base/in_process_browser_test.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "components/services/app_service/public/cpp/intent.h" #include "components/services/app_service/public/cpp/intent_util.h" #include "components/services/app_service/public/mojom/types.mojom.h"
diff --git a/chrome/browser/web_applications/app_service/web_apps_chromeos_browsertest.cc b/chrome/browser/web_applications/app_service/web_apps_chromeos_browsertest.cc index 7fa9ace2..b295abc 100644 --- a/chrome/browser/web_applications/app_service/web_apps_chromeos_browsertest.cc +++ b/chrome/browser/web_applications/app_service/web_apps_chromeos_browsertest.cc
@@ -33,7 +33,7 @@ namespace { void CheckShortcut(const ui::SimpleMenuModel& model, - int index, + size_t index, int shortcut_index, const std::u16string& label, absl::optional<SkColor> color) { @@ -51,7 +51,7 @@ } } -void CheckSeparator(const ui::SimpleMenuModel& model, int index) { +void CheckSeparator(const ui::SimpleMenuModel& model, size_t index) { EXPECT_EQ(model.GetTypeAt(index), ui::MenuModel::TYPE_SEPARATOR); EXPECT_EQ(model.GetCommandIdAt(index), -1); } @@ -91,7 +91,7 @@ // Shortcuts appear last in the context menu. // See /web_app_shortcuts/shortcuts.json for shortcut icon definitions. - int index = menu_model->GetItemCount() - 11; + size_t index = menu_model->GetItemCount() - 11; // Purpose |any| by default. CheckShortcut(*menu_model, index++, 0, u"One", SK_ColorGREEN); @@ -116,7 +116,7 @@ ui_test_utils::UrlLoadObserver url_observer( https_server()->GetURL("/web_app_shortcuts/shortcuts.html#four"), content::NotificationService::AllSources()); - menu_model->ActivatedAt(menu_model->GetIndexOfCommandId(command_id), + menu_model->ActivatedAt(menu_model->GetIndexOfCommandId(command_id).value(), ui::EF_LEFT_MOUSE_BUTTON); url_observer.Wait(); }
diff --git a/chrome/browser/web_applications/isolated_app_browsertest.cc b/chrome/browser/web_applications/isolated_app_browsertest.cc index 9ccb6eb..6b9e7349 100644 --- a/chrome/browser/web_applications/isolated_app_browsertest.cc +++ b/chrome/browser/web_applications/isolated_app_browsertest.cc
@@ -284,7 +284,7 @@ /*provider=*/nullptr, app_browser); app_menu_model->Init(); ui::MenuModel* model = app_menu_model.get(); - int index = -1; + size_t index = 0; const bool found = app_menu_model->GetModelAndIndexForCommandId( IDC_OPEN_IN_CHROME, &model, &index); EXPECT_FALSE(found);
diff --git a/chrome/build/linux.pgo.txt b/chrome/build/linux.pgo.txt index 8cb4027..997cfa23 100644 --- a/chrome/build/linux.pgo.txt +++ b/chrome/build/linux.pgo.txt
@@ -1 +1 @@ -chrome-linux-main-1658253580-168c8bfea83cfbc77dcddb2a7c61afd9fe97d8f3.profdata +chrome-linux-main-1658274933-355d2716c80bd4170fc244bc070cde51bc17da79.profdata
diff --git a/chrome/build/mac-arm.pgo.txt b/chrome/build/mac-arm.pgo.txt index cf7dd1f6..a66d694 100644 --- a/chrome/build/mac-arm.pgo.txt +++ b/chrome/build/mac-arm.pgo.txt
@@ -1 +1 @@ -chrome-mac-arm-main-1658231914-422a97b8499d2ab3b71d20a36c6731daa43e983d.profdata +chrome-mac-arm-main-1658274933-63817084fd43bbf557bfefe00c28308baab662be.profdata
diff --git a/chrome/build/mac.pgo.txt b/chrome/build/mac.pgo.txt index 1f9590f9..c07eb29 100644 --- a/chrome/build/mac.pgo.txt +++ b/chrome/build/mac.pgo.txt
@@ -1 +1 @@ -chrome-mac-main-1658253580-0cfbc9da92202afad2ce2255c11cccf318842bba.profdata +chrome-mac-main-1658274933-37605cd3911bb83b7e324d4e81fc9d044acda3d2.profdata
diff --git a/chrome/build/win32.pgo.txt b/chrome/build/win32.pgo.txt index a168756..79e468dd1 100644 --- a/chrome/build/win32.pgo.txt +++ b/chrome/build/win32.pgo.txt
@@ -1 +1 @@ -chrome-win32-main-1658253580-83a90686a348174944d53c05dfddc7bec4465d2f.profdata +chrome-win32-main-1658274933-b1783bf8ed9af7fbc56a0b31217a1b18513899a5.profdata
diff --git a/chrome/build/win64.pgo.txt b/chrome/build/win64.pgo.txt index 940ee16..2a895d7 100644 --- a/chrome/build/win64.pgo.txt +++ b/chrome/build/win64.pgo.txt
@@ -1 +1 @@ -chrome-win64-main-1658264363-f911d35b4c407ea497ee31466d63db4d0706fd22.profdata +chrome-win64-main-1658274933-518c90a91b841f96a73d8cd59333549cb8c53f66.profdata
diff --git a/chrome/common/chrome_content_client.cc b/chrome/common/chrome_content_client.cc index 86bf6f1..2cd7c41 100644 --- a/chrome/common/chrome_content_client.cc +++ b/chrome/common/chrome_content_client.cc
@@ -307,6 +307,13 @@ schemes->csp_bypassing_schemes.push_back(extensions::kExtensionScheme); #endif +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) + schemes->predefined_handler_schemes.emplace_back( + url::kMailToScheme, chrome::kChromeOSDefaultMailtoHandler); + schemes->predefined_handler_schemes.emplace_back( + url::kWebcalScheme, chrome::kChromeOSDefaultWebcalHandler); +#endif + #if BUILDFLAG(IS_CHROMEOS_ASH) schemes->local_schemes.push_back(content::kExternalFileScheme); #endif
diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc index 70720bb..91674a5 100644 --- a/chrome/common/url_constants.cc +++ b/chrome/common/url_constants.cc
@@ -308,6 +308,13 @@ "https://support.google.com/chrome/?p=mobile_protected_content"; #endif +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) +const char kChromeOSDefaultMailtoHandler[] = + "https://mail.google.com/mail/?extsrc=mailto&url=%s"; +const char kChromeOSDefaultWebcalHandler[] = + "https://www.google.com/calendar/render?cid=%s"; +#endif + #if BUILDFLAG(IS_CHROMEOS_ASH) const char kAccountManagerLearnMoreURL[] = "https://support.google.com/chromebook/?p=google_accounts";
diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h index f951ffc2..53d59a6 100644 --- a/chrome/common/url_constants.h +++ b/chrome/common/url_constants.h
@@ -277,6 +277,12 @@ extern const char kEnhancedPlaybackNotificationLearnMoreURL[]; #endif +#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(IS_CHROMEOS_LACROS) +// Chrome OS default pre-defined custom handlers +extern const char kChromeOSDefaultMailtoHandler[]; +extern const char kChromeOSDefaultWebcalHandler[]; +#endif + #if BUILDFLAG(IS_CHROMEOS_ASH) // Help center URL for Chrome OS Account Manager. extern const char kAccountManagerLearnMoreURL[];
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn index 74c81a5..a829b3b 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn
@@ -2624,12 +2624,14 @@ sources += [ "../browser/chrome_multiprofile_startup_browsertest.cc", "../browser/enterprise/reporting/cloud_profile_reporting_browsertest.cc", - "../browser/external_protocol/external_protocol_handler_browsertest.cc", "../browser/profiles/avatar_menu_browsertest.cc", "../browser/profiles/profile_window_browsertest.cc", "../browser/ui/views/accessibility/accessibility_focus_highlight_browsertest.cc", "../browser/ui/views/profiles/signin_view_controller_delegate_views_browsertest.cc", ] + if (!is_chromeos_lacros) { + sources += [ "../browser/external_protocol/external_protocol_handler_browsertest.cc" ] + } sources -= [ "../browser/invalidation/profile_invalidation_provider_factory_browsertest.cc", "../browser/net/nss_context_chromeos_browsertest.cc", @@ -4145,6 +4147,7 @@ "//chromeos/ash/components/dbus/biod:biod_proto", "//chromeos/ash/components/dbus/cicerone", "//chromeos/ash/components/dbus/concierge", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/image_burner", "//chromeos/ash/components/dbus/rmad:rmad", "//chromeos/ash/components/dbus/seneschal", @@ -4165,8 +4168,6 @@ "//chromeos/components/quick_answers/public/cpp:cpp", "//chromeos/components/remote_apps/mojom:mojom", "//chromeos/dbus:test_support", - "//chromeos/dbus/cros_disks", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/cryptohome", "//chromeos/dbus/cryptohome:cryptohome_proto", "//chromeos/dbus/dlp", @@ -7305,6 +7306,7 @@ "//chromeos/ash/components/dbus/attestation", "//chromeos/ash/components/dbus/cicerone", "//chromeos/ash/components/dbus/concierge", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/hermes", "//chromeos/ash/components/dbus/image_loader", "//chromeos/ash/components/dbus/seneschal", @@ -7319,7 +7321,6 @@ "//chromeos/components/sync_wifi", "//chromeos/constants", "//chromeos/dbus", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/debug_daemon", "//chromeos/dbus/permission_broker", "//chromeos/dbus/shill",
diff --git a/chrome/test/base/menu_model_test.cc b/chrome/test/base/menu_model_test.cc index 1c96f08..eb29e45 100644 --- a/chrome/test/base/menu_model_test.cc +++ b/chrome/test/base/menu_model_test.cc
@@ -24,7 +24,7 @@ // match the number of times the delegate is called to ensure every item works. void MenuModelTest::CountEnabledExecutable(ui::MenuModel* model, int* count) { - for (int i = 0; i < model->GetItemCount(); ++i) { + for (size_t i = 0; i < model->GetItemCount(); ++i) { ui::MenuModel::ItemType type = model->GetTypeAt(i); switch (type) { case ui::MenuModel::TYPE_SEPARATOR:
diff --git a/chrome/test/data/webui/bluetooth_internals/bluetooth_internals_test.js b/chrome/test/data/webui/bluetooth_internals/bluetooth_internals_test.js index 62e8b58..7c83b1d 100644 --- a/chrome/test/data/webui/bluetooth_internals/bluetooth_internals_test.js +++ b/chrome/test/data/webui/bluetooth_internals/bluetooth_internals_test.js
@@ -62,7 +62,7 @@ adapterFieldSet = document.querySelector('#adapter fieldset'); deviceTable = document.querySelector('#devices table'); sidebarNode = document.querySelector('#sidebar'); - devices.splice(0, devices.length); + devices.resetForTest(); adapterBroker.deviceAdded(fakeDeviceInfo1()); adapterBroker.deviceAdded(fakeDeviceInfo2()); });
diff --git a/chrome/test/data/webui/webui_resource_browsertest.cc b/chrome/test/data/webui/webui_resource_browsertest.cc index 14d7176..674f345f 100644 --- a/chrome/test/data/webui/webui_resource_browsertest.cc +++ b/chrome/test/data/webui/webui_resource_browsertest.cc
@@ -47,11 +47,11 @@ } }; +#if BUILDFLAG(IS_CHROMEOS_ASH) IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, ArrayDataModelModuleTest) { LoadTestUrl("?module=js/cr/ui/array_data_model_test.js"); } -#if BUILDFLAG(IS_CHROMEOS_ASH) IN_PROC_BROWSER_TEST_F(WebUIResourceBrowserTest, CrTest) { LoadTestUrl("cr_test.html"); }
diff --git a/chromeos/BUILD.gn b/chromeos/BUILD.gn index 85f807e..f7e4c38b 100644 --- a/chromeos/BUILD.gn +++ b/chromeos/BUILD.gn
@@ -123,7 +123,6 @@ "//chromeos/dbus:unit_tests", "//chromeos/language/language_packs:unit_tests", "//chromeos/login/login_state:unit_tests", - "//chromeos/network:unit_tests", "//chromeos/printing:unit_tests", "//chromeos/process_proxy:unit_tests", "//chromeos/services:unit_tests",
diff --git a/chromeos/ash/components/BUILD.gn b/chromeos/ash/components/BUILD.gn index 3bae6a3..dc1bdb82 100644 --- a/chromeos/ash/components/BUILD.gn +++ b/chromeos/ash/components/BUILD.gn
@@ -18,6 +18,7 @@ "//chromeos/ash/components/local_search_service:unit_tests", "//chromeos/ash/components/local_search_service/public/mojom:unit_tests", "//chromeos/ash/components/memory:unit_tests", + "//chromeos/ash/components/network:unit_tests", "//chromeos/ash/components/oobe_quick_start:unit_tests", "//chromeos/ash/components/trash_service:unit_tests", ]
diff --git a/chromeos/ash/components/dbus/BUILD.gn b/chromeos/ash/components/dbus/BUILD.gn index c2be0c3..e4e7c3b 100644 --- a/chromeos/ash/components/dbus/BUILD.gn +++ b/chromeos/ash/components/dbus/BUILD.gn
@@ -20,6 +20,7 @@ "//chromeos/ash/components/dbus/authpolicy:authpolicy_proto", "//chromeos/ash/components/dbus/biod:test_support", "//chromeos/ash/components/dbus/cec_service:unit_tests", + "//chromeos/ash/components/dbus/cros_disks:unit_tests", "//chromeos/ash/components/dbus/gnubby:unit_tests", "//chromeos/ash/components/dbus/hermes:test_support", "//chromeos/ash/components/dbus/hiberman",
diff --git a/chromeos/ash/components/dbus/DEPS b/chromeos/ash/components/dbus/DEPS index d6b507a..d382144 100644 --- a/chromeos/ash/components/dbus/DEPS +++ b/chromeos/ash/components/dbus/DEPS
@@ -10,6 +10,7 @@ "+crypto", "+testing", "+third_party/cros_system_api", + "+url", # TODO(crbug.com/1164001): Remove after chromeos/dbus migration is done. "+chromeos/dbus",
diff --git a/chromeos/dbus/cros_disks/BUILD.gn b/chromeos/ash/components/dbus/cros_disks/BUILD.gn similarity index 89% rename from chromeos/dbus/cros_disks/BUILD.gn rename to chromeos/ash/components/dbus/cros_disks/BUILD.gn index 048ed4d..293f7806 100644 --- a/chromeos/dbus/cros_disks/BUILD.gn +++ b/chromeos/ash/components/dbus/cros_disks/BUILD.gn
@@ -7,8 +7,8 @@ assert(is_chromeos_ash, "Non-Chrome-OS builds must not depend on //chromeos") component("cros_disks") { - output_name = "chromeos_cros_disks" - defines = [ "IS_CHROMEOS_DBUS_CROS_DISKS_IMPL" ] + output_name = "ash_cros_disks" + defines = [ "IS_ASH_DBUS_CROS_DISKS_IMPL" ] deps = [ "//base", "//chromeos/dbus/common",
diff --git a/chromeos/dbus/cros_disks/OWNERS b/chromeos/ash/components/dbus/cros_disks/OWNERS similarity index 100% rename from chromeos/dbus/cros_disks/OWNERS rename to chromeos/ash/components/dbus/cros_disks/OWNERS
diff --git a/chromeos/dbus/cros_disks/cros_disks_client.cc b/chromeos/ash/components/dbus/cros_disks/cros_disks_client.cc similarity index 99% rename from chromeos/dbus/cros_disks/cros_disks_client.cc rename to chromeos/ash/components/dbus/cros_disks/cros_disks_client.cc index c5d1f67..74ced73 100644 --- a/chromeos/dbus/cros_disks/cros_disks_client.cc +++ b/chromeos/ash/components/dbus/cros_disks/cros_disks_client.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include <stddef.h> #include <stdint.h> @@ -28,8 +28,8 @@ #include "base/task/task_runner_util.h" #include "base/time/time.h" #include "base/values.h" +#include "chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h" #include "chromeos/dbus/constants/dbus_switches.h" -#include "chromeos/dbus/cros_disks/fake_cros_disks_client.h" #include "dbus/bus.h" #include "dbus/message.h" #include "dbus/object_path.h"
diff --git a/chromeos/dbus/cros_disks/cros_disks_client.h b/chromeos/ash/components/dbus/cros_disks/cros_disks_client.h similarity index 97% rename from chromeos/dbus/cros_disks/cros_disks_client.h rename to chromeos/ash/components/dbus/cros_disks/cros_disks_client.h index 0238727..c1d4d9b 100644 --- a/chromeos/dbus/cros_disks/cros_disks_client.h +++ b/chromeos/ash/components/dbus/cros_disks/cros_disks_client.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROMEOS_DBUS_CROS_DISKS_CROS_DISKS_CLIENT_H_ -#define CHROMEOS_DBUS_CROS_DISKS_CROS_DISKS_CLIENT_H_ +#ifndef CHROMEOS_ASH_COMPONENTS_DBUS_CROS_DISKS_CROS_DISKS_CLIENT_H_ +#define CHROMEOS_ASH_COMPONENTS_DBUS_CROS_DISKS_CROS_DISKS_CLIENT_H_ #include <cstdint> #include <ostream> @@ -79,7 +79,7 @@ }; // Output operator for logging. -COMPONENT_EXPORT(CHROMEOS_DBUS_CROS_DISKS) +COMPONENT_EXPORT(ASH_DBUS_CROS_DISKS) std::ostream& operator<<(std::ostream& out, MountError error); // Rename error reported by cros-disks. @@ -157,7 +157,7 @@ }; // A class to represent information about a disk sent from cros-disks. -class COMPONENT_EXPORT(CHROMEOS_DBUS_CROS_DISKS) DiskInfo { +class COMPONENT_EXPORT(ASH_DBUS_CROS_DISKS) DiskInfo { public: DiskInfo(const std::string& device_path, dbus::Response* response); ~DiskInfo(); @@ -268,7 +268,7 @@ }; // A struct to represent information about a mount point sent from cros-disks. -struct COMPONENT_EXPORT(CHROMEOS_DBUS_CROS_DISKS) MountEntry { +struct COMPONENT_EXPORT(ASH_DBUS_CROS_DISKS) MountEntry { public: MountEntry() : error_code_(MOUNT_ERROR_UNKNOWN), mount_type_(MOUNT_TYPE_INVALID) {} @@ -297,7 +297,7 @@ // A class to make the actual DBus calls for cros-disks service. // This class only makes calls, result/error handling should be done // by callbacks. -class COMPONENT_EXPORT(CHROMEOS_DBUS_CROS_DISKS) CrosDisksClient +class COMPONENT_EXPORT(ASH_DBUS_CROS_DISKS) CrosDisksClient : public DBusClient { public: // A callback to handle the result of EnumerateDevices. @@ -489,4 +489,4 @@ using ::chromeos::RenameError; } // namespace ash -#endif // CHROMEOS_DBUS_CROS_DISKS_CROS_DISKS_CLIENT_H_ +#endif // CHROMEOS_ASH_COMPONENTS_DBUS_CROS_DISKS_CROS_DISKS_CLIENT_H_
diff --git a/chromeos/dbus/cros_disks/cros_disks_client_unittest.cc b/chromeos/ash/components/dbus/cros_disks/cros_disks_client_unittest.cc similarity index 98% rename from chromeos/dbus/cros_disks/cros_disks_client_unittest.cc rename to chromeos/ash/components/dbus/cros_disks/cros_disks_client_unittest.cc index e52eba0..2ceecff6 100644 --- a/chromeos/dbus/cros_disks/cros_disks_client_unittest.cc +++ b/chromeos/ash/components/dbus/cros_disks/cros_disks_client_unittest.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include <stdint.h>
diff --git a/chromeos/dbus/cros_disks/fake_cros_disks_client.cc b/chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.cc similarity index 98% rename from chromeos/dbus/cros_disks/fake_cros_disks_client.cc rename to chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.cc index 263eb394..2913c63 100644 --- a/chromeos/dbus/cros_disks/fake_cros_disks_client.cc +++ b/chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chromeos/dbus/cros_disks/fake_cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h" #include <utility>
diff --git a/chromeos/dbus/cros_disks/fake_cros_disks_client.h b/chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h similarity index 95% rename from chromeos/dbus/cros_disks/fake_cros_disks_client.h rename to chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h index f934b8a1..43491fd 100644 --- a/chromeos/dbus/cros_disks/fake_cros_disks_client.h +++ b/chromeos/ash/components/dbus/cros_disks/fake_cros_disks_client.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROMEOS_DBUS_CROS_DISKS_FAKE_CROS_DISKS_CLIENT_H_ -#define CHROMEOS_DBUS_CROS_DISKS_FAKE_CROS_DISKS_CLIENT_H_ +#ifndef CHROMEOS_ASH_COMPONENTS_DBUS_CROS_DISKS_FAKE_CROS_DISKS_CLIENT_H_ +#define CHROMEOS_ASH_COMPONENTS_DBUS_CROS_DISKS_FAKE_CROS_DISKS_CLIENT_H_ #include <set> #include <string> @@ -13,13 +13,13 @@ #include "base/files/file_path.h" #include "base/memory/weak_ptr.h" #include "base/observer_list.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" namespace chromeos { // A fake implementation of CrosDiskeClient. This class provides a fake behavior // and the user of this class can raise a fake mouse events. -class COMPONENT_EXPORT(CHROMEOS_DBUS_CROS_DISKS) FakeCrosDisksClient +class COMPONENT_EXPORT(ASH_DBUS_CROS_DISKS) FakeCrosDisksClient : public CrosDisksClient { public: using CustomMountPointCallback = @@ -207,4 +207,4 @@ using ::chromeos::FakeCrosDisksClient; } // namespace ash -#endif // CHROMEOS_DBUS_CROS_DISKS_FAKE_CROS_DISKS_CLIENT_H_ +#endif // CHROMEOS_ASH_COMPONENTS_DBUS_CROS_DISKS_FAKE_CROS_DISKS_CLIENT_H_
diff --git a/chromeos/ash/components/network/BUILD.gn b/chromeos/ash/components/network/BUILD.gn index 4f0e396..b9c611c 100644 --- a/chromeos/ash/components/network/BUILD.gn +++ b/chromeos/ash/components/network/BUILD.gn
@@ -6,12 +6,12 @@ assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") -source_set("network") { - # TODO(https://crbug.com/1164001): Allow circular dependency during the - # migration and others should depend on via chromeos/network. - visibility = [ "//chromeos/network" ] +config("network_config") { + defines = [ "IS_CHROMEOS_NETWORK_IMPL" ] +} - configs += [ "//chromeos/network:network_config" ] +component("network") { + configs += [ ":network_config" ] deps = [ "//ash/constants", "//base", @@ -40,6 +40,12 @@ "//url", ] + public_deps = [ + "//chromeos/ash/components/network/metrics", + "//chromeos/ash/components/network/onc", + "//chromeos/ash/components/network/proxy", + ] + # Allow circular dependency from sub-directories of # chromeos/ash/components/network. allow_circular_includes_from = [ @@ -177,9 +183,9 @@ source_set("test_support") { testonly = true public_deps = [ + ":network", "//chromeos/ash/components/dbus/hermes", "//chromeos/components/onc", - "//chromeos/network", "//dbus", ] deps = [ @@ -227,19 +233,22 @@ source_set("unit_tests") { testonly = true deps = [ + ":network", ":test_support", "//ash/constants", "//base", "//base:i18n", "//base/test:test_support", "//chromeos/ash/components/feature_usage", + "//chromeos/ash/components/network/metrics:unit_tests", + "//chromeos/ash/components/network/onc:unit_tests", + "//chromeos/ash/components/network/proxy:unit_tests", "//chromeos/components/onc", "//chromeos/components/onc:test_support", "//chromeos/dbus:test_support", "//chromeos/dbus/permission_broker", "//chromeos/dbus/shill", "//chromeos/login/login_state", - "//chromeos/network", "//components/onc", "//components/prefs", "//components/prefs:test_support",
diff --git a/chromeos/ash/components/network/DEPS b/chromeos/ash/components/network/DEPS index 807d241..a972410 100644 --- a/chromeos/ash/components/network/DEPS +++ b/chromeos/ash/components/network/DEPS
@@ -1,7 +1,3 @@ -# TODO(https://crbug.com/1164001): When this file is edited, same file in -# //chromeos/network should be updated as well. We need to sync both files -# until the migration is done. - noparent = True include_rules = [ @@ -14,7 +10,6 @@ "+chromeos/dbus", "+chromeos/components/onc", "+chromeos/login/login_state", - "+chromeos/network", "+chromeos/services/network_config/public", "+components/account_id", "+components/certificate_matching",
diff --git a/chromeos/ash/components/network/DIR_METADATA b/chromeos/ash/components/network/DIR_METADATA index 65533aae2..0ae98532 100644 --- a/chromeos/ash/components/network/DIR_METADATA +++ b/chromeos/ash/components/network/DIR_METADATA
@@ -1,6 +1,3 @@ -# TODO(https://crbug.com/1164001): When this file is edited, same file in -# //chromeos/network should be updated as well. We need to sync both files -# until the migration is done. buganizer { component_id: 1131775 }
diff --git a/chromeos/ash/components/network/README.md b/chromeos/ash/components/network/README.md index c1d494d..766c85b 100644 --- a/chromeos/ash/components/network/README.md +++ b/chromeos/ash/components/network/README.md
@@ -23,10 +23,6 @@ wpa_supplicant), but these are beyond the scope of this README since these interactions are encapsulated from Chrome. -TODO(crbug.com/1164001): As part of [Chrome OS source directory migration](https://docs.google.com/document/d/1g-98HpzA8XcoGBWUv1gQNr4rbnD5yfvbtYZyPDDbkaE/edit), -the migration of codes for Chrome OS networking is in-progress and being moved -from `//chromeos/network` to `//chromeos/ash/components/network` for now. - ## Background Before diving into the Chrome layer's details, we provide some background
diff --git a/chromeos/ash/components/network/certificate_helper.h b/chromeos/ash/components/network/certificate_helper.h index d9739063..8723ba2 100644 --- a/chromeos/ash/components/network/certificate_helper.h +++ b/chromeos/ash/components/network/certificate_helper.h
@@ -53,4 +53,9 @@ } // namespace certificate } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash::certificate { +using ::chromeos::certificate::GetCertType; +} + #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_CERTIFICATE_HELPER_H_
diff --git a/chromeos/ash/components/network/client_cert_util.h b/chromeos/ash/components/network/client_cert_util.h index 41673788..a359493 100644 --- a/chromeos/ash/components/network/client_cert_util.h +++ b/chromeos/ash/components/network/client_cert_util.h
@@ -185,4 +185,12 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash::client_cert { +using ::chromeos::client_cert::ConfigType; +using ::chromeos::client_cert::GetPkcs11AndSlotIdFromEapCertId; +using ::chromeos::client_cert::SetEmptyShillProperties; +using ::chromeos::client_cert::SetShillProperties; +} // namespace ash::client_cert + #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_CLIENT_CERT_UTIL_H_
diff --git a/chromeos/ash/components/network/docs/cros_connectivity_layers.svg b/chromeos/ash/components/network/docs/cros_connectivity_layers.svg index 0f07ad54..386c585 100644 --- a/chromeos/ash/components/network/docs/cros_connectivity_layers.svg +++ b/chromeos/ash/components/network/docs/cros_connectivity_layers.svg
@@ -1 +1 @@ -<svg version="1.1" viewBox="0.0 0.0 1931.8503937007874 1390.5931758530185" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l1931.8503 0l0 1390.5931l-1931.8503 0l0 -1390.5931z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l1931.8503 0l0 1390.5931l-1931.8503 0z" fill-rule="evenodd"/><path fill="#efefef" d="m9.328085 225.08398l322.07874 0l0 347.65356l-322.07874 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m9.328085 225.08398l322.07874 0l0 347.65356l-322.07874 0z" fill-rule="evenodd"/><path fill="#000000" d="m93.810814 257.124l-6.140625 -17.1875l3.765625 0l4.34375 12.71875l4.21875 -12.71875l3.671875 0l-6.15625 17.1875l-3.703125 0zm11.5859375 0l0 -17.1875l5.1875 0l3.125 11.71875l3.078125 -11.71875l5.203125 0l0 17.1875l-3.21875 0l0 -13.53125l-3.421875 13.53125l-3.328125 0l-3.40625 -13.53125l0 13.53125l-3.21875 0zm24.925774 0.296875l4.25 -17.765625l2.46875 0l-4.296875 17.765625l-2.421875 0zm23.101562 -6.609375l0 -2.90625l7.484375 0l0 6.84375q-1.09375 1.0625 -3.171875 1.875q-2.0625 0.796875 -4.171875 0.796875q-2.703125 0 -4.703125 -1.125q-2.0 -1.140625 -3.015625 -3.234375q-1.0 -2.109375 -1.0 -4.59375q0 -2.671875 1.125 -4.75q1.125 -2.09375 3.28125 -3.21875q1.65625 -0.84375 4.125 -0.84375q3.1875 0 4.984375 1.34375q1.8125 1.328125 2.328125 3.703125l-3.453125 0.640625q-0.359375 -1.265625 -1.359375 -2.0q-1.0 -0.734375 -2.5 -0.734375q-2.28125 0 -3.625 1.453125q-1.34375 1.4375 -1.34375 4.265625q0 3.0625 1.359375 4.59375q1.359375 1.53125 3.5625 1.53125q1.09375 0 2.1875 -0.421875q1.09375 -0.4375 1.890625 -1.046875l0 -2.171875l-3.984375 0zm18.855469 6.3125l0 -1.859375q-0.6875 0.984375 -1.796875 1.5625q-1.109375 0.578125 -2.328125 0.578125q-1.265625 0 -2.265625 -0.546875q-0.984375 -0.5625 -1.4375 -1.546875q-0.4375 -1.0 -0.4375 -2.765625l0 -7.875l3.296875 0l0 5.71875q0 2.625 0.171875 3.21875q0.1875 0.59375 0.65625 0.9375q0.484375 0.34375 1.234375 0.34375q0.84375 0 1.5 -0.453125q0.671875 -0.46875 0.921875 -1.15625q0.25 -0.6875 0.25 -3.359375l0 -5.25l3.28125 0l0 12.453125l-3.046875 0zm13.675781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm4.7851562 3.75l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875zm20.222656 -8.90625l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921875l0 4.390625l2.25 0zm8.269531 3.96875q0 -2.625 0.78125 -4.40625q0.59375 -1.3125 1.59375 -2.359375q1.015625 -1.046875 2.234375 -1.546875q1.59375 -0.671875 3.703125 -0.671875q3.796875 0 6.0625 2.359375q2.28125 2.34375 2.28125 6.546875q0 4.15625 -2.265625 6.515625q-2.25 2.34375 -6.03125 2.34375q-3.84375 0 -6.109375 -2.34375q-2.25 -2.34375 -2.25 -6.4375zm3.578125 -0.125q0 2.921875 1.34375 4.4375q1.34375 1.5 3.421875 1.5q2.078125 0 3.40625 -1.484375q1.328125 -1.5 1.328125 -4.5q0 -2.953125 -1.296875 -4.40625q-1.296875 -1.453125 -3.4375 -1.453125q-2.140625 0 -3.453125 1.484375q-1.3125 1.46875 -1.3125 4.421875zm14.917969 3.015625l3.375 -0.328125q0.296875 1.703125 1.21875 2.5q0.9375 0.796875 2.53125 0.796875q1.671875 0 2.515625 -0.703125q0.859375 -0.71875 0.859375 -1.671875q0 -0.609375 -0.359375 -1.03125q-0.359375 -0.421875 -1.25 -0.75q-0.609375 -0.203125 -2.78125 -0.75q-2.78125 -0.6875 -3.90625 -1.6875q-1.59375 -1.421875 -1.59375 -3.46875q0 -1.3125 0.75 -2.453125q0.75 -1.140625 2.140625 -1.734375q1.40625 -0.59375 3.390625 -0.59375q3.234375 0 4.859375 1.421875q1.640625 1.40625 1.71875 3.78125l-3.46875 0.140625q-0.21875 -1.3125 -0.953125 -1.890625q-0.734375 -0.59375 -2.203125 -0.59375q-1.5 0 -2.359375 0.625q-0.546875 0.40625 -0.546875 1.0625q0 0.609375 0.515625 1.046875q0.65625 0.546875 3.1875 1.15625q2.53125 0.59375 3.734375 1.234375q1.21875 0.640625 1.90625 1.75q0.6875 1.09375 0.6875 2.734375q0 1.46875 -0.828125 2.765625q-0.8125 1.28125 -2.3125 1.921875q-1.5 0.625 -3.75 0.625q-3.25 0 -5.0 -1.5q-1.75 -1.515625 -2.078125 -4.40625z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m918.6483 963.71655l394.01575 0l0 105.322876l-394.01575 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m918.6483 963.71655l394.01575 0l0 105.322876l-394.01575 0z" fill-rule="evenodd"/><path fill="#000000" d="m1073.8053 989.1678l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051025 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0zm10.375732 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1292725 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.4938965 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm7.7663574 8.53125l0 -1.1875l10.859375 0l0 1.1875l-10.859375 0zm11.891357 0l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.203857 3.59375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1881104 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.806519 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5269775 5.1875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125zm8.171875 -3.484375l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1021.31366 995.7475l188.685 0l0 21.45288l-188.685 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1022.4543 1002.96466l2.359436 0l0 1.3125q1.265625 -1.53125 3.015625 -1.53125q0.9375 0 1.609375 0.390625q0.6875 0.375 1.125 1.140625q0.640625 -0.765625 1.375 -1.140625q0.75 -0.390625 1.578125 -0.390625q1.0625 0 1.796875 0.4375q0.75 0.421875 1.109375 1.265625q0.265625 0.625 0.265625 2.0l0 6.1875l-2.5625 0l0 -5.53125q0 -1.4375 -0.265625 -1.859375q-0.34375 -0.546875 -1.09375 -0.546875q-0.53125 0 -1.015625 0.328125q-0.46875 0.328125 -0.671875 0.96875q-0.203125 0.625 -0.203125 2.0l0 4.640625l-2.5625 0l0 -5.296875q0 -1.421875 -0.140625 -1.828125q-0.140625 -0.40625 -0.421875 -0.609375q-0.28125 -0.203125 -0.78125 -0.203125q-0.59375 0 -1.0625 0.328125q-0.46875 0.3125 -0.6875 0.921875q-0.203125 0.59375 -0.203125 1.984375l0 4.703125l-2.562561 0l0 -9.671875zm16.197815 4.703125q0 -1.28125 0.625 -2.46875q0.625 -1.203125 1.78125 -1.828125q1.15625 -0.625 2.578125 -0.625q2.1875 0 3.59375 1.421875q1.40625 1.421875 1.40625 3.609375q0 2.1875 -1.421875 3.640625q-1.421875 1.4375 -3.5625 1.4375q-1.328125 0 -2.546875 -0.59375q-1.203125 -0.609375 -1.828125 -1.765625q-0.625 -1.171875 -0.625 -2.828125zm2.625 0.125q0 1.453125 0.671875 2.21875q0.6875 0.75 1.6875 0.75q1.0 0 1.671875 -0.75q0.6875 -0.765625 0.6875 -2.234375q0 -1.421875 -0.6875 -2.1875q-0.671875 -0.765625 -1.671875 -0.765625q-1.0 0 -1.6875 0.765625q-0.671875 0.765625 -0.671875 2.203125zm18.239746 4.84375l-2.390625 0l0 -1.421875q-0.59375 0.828125 -1.40625 1.234375q-0.796875 0.40625 -1.609375 0.40625q-1.671875 0 -2.859375 -1.34375q-1.1875 -1.34375 -1.1875 -3.75q0 -2.453125 1.15625 -3.734375q1.15625 -1.28125 2.921875 -1.28125q1.625 0 2.8125 1.34375l0 -4.8125l2.5625 0l0 13.359375zm-6.84375 -5.046875q0 1.546875 0.4375 2.234375q0.609375 1.015625 1.71875 1.015625q0.890625 0 1.5 -0.75q0.625 -0.765625 0.625 -2.25q0 -1.671875 -0.609375 -2.40625q-0.59375 -0.734375 -1.53125 -0.734375q-0.90625 0 -1.53125 0.734375q-0.609375 0.71875 -0.609375 2.15625zm14.958374 1.96875l2.546875 0.421875q-0.484375 1.40625 -1.546875 2.140625q-1.0625 0.734375 -2.65625 0.734375q-2.515625 0 -3.734375 -1.65625q-0.953125 -1.3125 -0.953125 -3.328125q0 -2.40625 1.25 -3.765625q1.265625 -1.359375 3.1875 -1.359375q2.15625 0 3.40625 1.421875q1.25 1.421875 1.1875 4.375l-6.40625 0q0.03125 1.140625 0.609375 1.78125q0.59375 0.625 1.484375 0.625q0.59375 0 1.0 -0.328125q0.421875 -0.328125 0.625 -1.0625zm0.15625 -2.59375q-0.03125 -1.109375 -0.578125 -1.6875q-0.546875 -0.578125 -1.328125 -0.578125q-0.84375 0 -1.390625 0.609375q-0.546875 0.609375 -0.53125 1.65625l3.828125 0zm4.4226074 -4.0l2.359375 0l0 1.3125q1.265625 -1.53125 3.015625 -1.53125q0.9375 0 1.609375 0.390625q0.6875 0.375 1.125 1.140625q0.640625 -0.765625 1.375 -1.140625q0.75 -0.390625 1.578125 -0.390625q1.0625 0 1.796875 0.4375q0.75 0.421875 1.109375 1.265625q0.265625 0.625 0.265625 2.0l0 6.1875l-2.5625 0l0 -5.53125q0 -1.4375 -0.265625 -1.859375q-0.34375 -0.546875 -1.09375 -0.546875q-0.53125 0 -1.015625 0.328125q-0.46875 0.328125 -0.671875 0.96875q-0.203125 0.625 -0.203125 2.0l0 4.640625l-2.5625 0l0 -5.296875q0 -1.421875 -0.140625 -1.828125q-0.140625 -0.40625 -0.421875 -0.609375q-0.28125 -0.203125 -0.78125 -0.203125q-0.59375 0 -1.0625 0.328125q-0.46875 0.3125 -0.6875 0.921875q-0.203125 0.59375 -0.203125 1.984375l0 4.703125l-2.5625 0l0 -9.671875zm16.588379 0l2.359375 0l0 1.3125q1.265625 -1.53125 3.015625 -1.53125q0.9375 0 1.609375 0.390625q0.6875 0.375 1.125 1.140625q0.640625 -0.765625 1.375 -1.140625q0.75 -0.390625 1.578125 -0.390625q1.0625 0 1.796875 0.4375q0.75 0.421875 1.109375 1.265625q0.265625 0.625 0.265625 2.0l0 6.1875l-2.5625 0l0 -5.53125q0 -1.4375 -0.265625 -1.859375q-0.34375 -0.546875 -1.09375 -0.546875q-0.53125 0 -1.015625 0.328125q-0.46875 0.328125 -0.671875 0.96875q-0.203125 0.625 -0.203125 2.0l0 4.640625l-2.5625 0l0 -5.296875q0 -1.421875 -0.140625 -1.828125q-0.140625 -0.40625 -0.421875 -0.609375q-0.28125 -0.203125 -0.78125 -0.203125q-0.59375 0 -1.0625 0.328125q-0.46875 0.3125 -0.6875 0.921875q-0.203125 0.59375 -0.203125 1.984375l0 4.703125l-2.5625 0l0 -9.671875zm18.697876 2.953125l-2.328125 -0.421875q0.40625 -1.40625 1.359375 -2.078125q0.953125 -0.671875 2.84375 -0.671875q1.703125 0 2.546875 0.40625q0.84375 0.40625 1.171875 1.03125q0.34375 0.625 0.34375 2.28125l-0.015625 3.0q0 1.265625 0.109375 1.875q0.125 0.609375 0.46875 1.296875l-2.53125 0q-0.109375 -0.25 -0.25 -0.75q-0.0625 -0.234375 -0.09375 -0.3125q-0.65625 0.640625 -1.40625 0.96875q-0.734375 0.3125 -1.59375 0.3125q-1.484375 0 -2.34375 -0.8125q-0.859375 -0.8125 -0.859375 -2.046875q0 -0.828125 0.390625 -1.46875q0.390625 -0.640625 1.09375 -0.96875q0.703125 -0.34375 2.03125 -0.609375q1.796875 -0.328125 2.484375 -0.625l0 -0.25q0 -0.75 -0.359375 -1.0625q-0.359375 -0.3125 -1.375 -0.3125q-0.6875 0 -1.078125 0.28125q-0.375 0.265625 -0.609375 0.9375zm3.421875 2.078125q-0.484375 0.15625 -1.5625 0.390625q-1.0625 0.21875 -1.390625 0.4375q-0.5 0.359375 -0.5 0.90625q0 0.53125 0.40625 0.9375q0.40625 0.390625 1.015625 0.390625q0.703125 0 1.328125 -0.46875q0.46875 -0.34375 0.609375 -0.84375q0.09375 -0.328125 0.09375 -1.25l0 -0.5zm13.84436 4.640625l-2.5625 0l0 -4.9375q0 -1.5625 -0.171875 -2.015625q-0.15625 -0.46875 -0.53125 -0.71875q-0.359375 -0.265625 -0.875 -0.265625q-0.671875 0 -1.203125 0.375q-0.53125 0.359375 -0.734375 0.96875q-0.1875 0.59375 -0.1875 2.21875l0 4.375l-2.546875 0l0 -9.671875l2.375 0l0 1.421875q1.265625 -1.640625 3.1875 -1.640625q0.84375 0 1.546875 0.3125q0.703125 0.296875 1.0625 0.78125q0.359375 0.46875 0.5 1.078125q0.140625 0.59375 0.140625 1.703125l0 6.015625zm4.505371 -6.71875l-2.328125 -0.421875q0.40625 -1.40625 1.359375 -2.078125q0.953125 -0.671875 2.84375 -0.671875q1.703125 0 2.546875 0.40625q0.84375 0.40625 1.171875 1.03125q0.34375 0.625 0.34375 2.28125l-0.015625 3.0q0 1.265625 0.109375 1.875q0.125 0.609375 0.46875 1.296875l-2.53125 0q-0.109375 -0.25 -0.25 -0.75q-0.0625 -0.234375 -0.09375 -0.3125q-0.65625 0.640625 -1.40625 0.96875q-0.734375 0.3125 -1.59375 0.3125q-1.484375 0 -2.34375 -0.8125q-0.859375 -0.8125 -0.859375 -2.046875q0 -0.828125 0.390625 -1.46875q0.390625 -0.640625 1.09375 -0.96875q0.703125 -0.34375 2.03125 -0.609375q1.796875 -0.328125 2.484375 -0.625l0 -0.25q0 -0.75 -0.359375 -1.0625q-0.359375 -0.3125 -1.375 -0.3125q-0.6875 0 -1.078125 0.28125q-0.375 0.265625 -0.609375 0.9375zm3.421875 2.078125q-0.484375 0.15625 -1.5625 0.390625q-1.0625 0.21875 -1.390625 0.4375q-0.5 0.359375 -0.5 0.90625q0 0.53125 0.40625 0.9375q0.40625 0.390625 1.015625 0.390625q0.703125 0 1.328125 -0.46875q0.46875 -0.34375 0.609375 -0.84375q0.09375 -0.328125 0.09375 -1.25l0 -0.5zm4.8132324 5.28125l2.921875 0.359375q0.0625 0.5 0.328125 0.6875q0.375 0.28125 1.15625 0.28125q1.0 0 1.5 -0.296875q0.328125 -0.203125 0.515625 -0.65625q0.109375 -0.3125 0.109375 -1.171875l0 -1.40625q-1.140625 1.5625 -2.890625 1.5625q-1.953125 0 -3.09375 -1.65625q-0.890625 -1.296875 -0.890625 -3.234375q0 -2.4375 1.171875 -3.71875q1.171875 -1.28125 2.90625 -1.28125q1.796875 0 2.96875 1.578125l0 -1.359375l2.390625 0l0 8.671875q0 1.71875 -0.28125 2.5625q-0.28125 0.84375 -0.796875 1.328125q-0.5 0.484375 -1.359375 0.75q-0.84375 0.28125 -2.15625 0.28125q-2.453125 0 -3.484375 -0.84375q-1.03125 -0.84375 -1.03125 -2.125q0 -0.140625 0.015625 -0.3125zm2.28125 -5.671875q0 1.53125 0.59375 2.25q0.59375 0.71875 1.46875 0.71875q0.9375 0 1.578125 -0.734375q0.65625 -0.734375 0.65625 -2.171875q0 -1.515625 -0.625 -2.234375q-0.609375 -0.734375 -1.5625 -0.734375q-0.921875 0 -1.515625 0.71875q-0.59375 0.71875 -0.59375 2.1875zm14.942871 1.953125l2.546875 0.421875q-0.484375 1.40625 -1.546875 2.140625q-1.0625 0.734375 -2.65625 0.734375q-2.515625 0 -3.734375 -1.65625q-0.953125 -1.3125 -0.953125 -3.328125q0 -2.40625 1.25 -3.765625q1.265625 -1.359375 3.1875 -1.359375q2.15625 0 3.40625 1.421875q1.25 1.421875 1.1875 4.375l-6.40625 0q0.03125 1.140625 0.609375 1.78125q0.59375 0.625 1.484375 0.625q0.59375 0 1.0 -0.328125q0.421875 -0.328125 0.625 -1.0625zm0.15625 -2.59375q-0.03125 -1.109375 -0.578125 -1.6875q-0.546875 -0.578125 -1.328125 -0.578125q-0.84375 0 -1.390625 0.609375q-0.546875 0.609375 -0.53125 1.65625l3.828125 0zm7.0788574 5.671875l-2.5625 0l0 -9.671875l2.375 0l0 1.375q0.609375 -0.984375 1.09375 -1.28125q0.484375 -0.3125 1.109375 -0.3125q0.875 0 1.6875 0.484375l-0.796875 2.234375q-0.640625 -0.421875 -1.203125 -0.421875q-0.53125 0 -0.90625 0.296875q-0.375 0.296875 -0.59375 1.078125q-0.203125 0.765625 -0.203125 3.234375l0 2.984375zm4.510254 -3.5625l0 -2.5625l5.03125 0l0 2.5625l-5.03125 0zm15.3063965 3.5625l-2.5625 0l0 -4.9375q0 -1.5625 -0.171875 -2.015625q-0.15625 -0.46875 -0.53125 -0.71875q-0.359375 -0.265625 -0.875 -0.265625q-0.671875 0 -1.203125 0.375q-0.53125 0.359375 -0.734375 0.96875q-0.1875 0.59375 -0.1875 2.21875l0 4.375l-2.546875 0l0 -9.671875l2.375 0l0 1.421875q1.265625 -1.640625 3.1875 -1.640625q0.84375 0 1.546875 0.3125q0.703125 0.296875 1.0625 0.78125q0.359375 0.46875 0.5 1.078125q0.140625 0.59375 0.140625 1.703125l0 6.015625zm8.192871 -3.078125l2.546875 0.421875q-0.484375 1.40625 -1.546875 2.140625q-1.0625 0.734375 -2.65625 0.734375q-2.515625 0 -3.734375 -1.65625q-0.953125 -1.3125 -0.953125 -3.328125q0 -2.40625 1.25 -3.765625q1.265625 -1.359375 3.1875 -1.359375q2.15625 0 3.40625 1.421875q1.25 1.421875 1.1875 4.375l-6.40625 0q0.03125 1.140625 0.609375 1.78125q0.59375 0.625 1.484375 0.625q0.59375 0 1.0 -0.328125q0.421875 -0.328125 0.625 -1.0625zm0.15625 -2.59375q-0.03125 -1.109375 -0.578125 -1.6875q-0.546875 -0.578125 -1.328125 -0.578125q-0.84375 0 -1.390625 0.609375q-0.546875 0.609375 -0.53125 1.65625l3.828125 0zm3.3913574 5.671875l3.484375 -4.984375l-3.34375 -4.6875l3.125 0l1.71875 2.65625l1.796875 -2.65625l3.015625 0l-3.28125 4.578125l3.578125 5.09375l-3.140625 0l-1.96875 -3.0l-1.984375 3.0l-3.0 0zm16.047607 -9.671875l0 2.03125l-1.75 0l0 3.90625q0 1.1875 0.046875 1.390625q0.046875 0.1875 0.21875 0.3125q0.1875 0.125 0.4375 0.125q0.359375 0 1.03125 -0.25l0.21875 2.0q-0.890625 0.375 -2.015625 0.375q-0.703125 0 -1.265625 -0.234375q-0.546875 -0.234375 -0.8125 -0.59375q-0.25 -0.375 -0.34375 -1.0q-0.09375 -0.453125 -0.09375 -1.8125l0 -4.21875l-1.171875 0l0 -2.03125l1.171875 0l0 -1.921875l2.578125 -1.5l0 3.421875l1.75 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m1209.9987 995.7475l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1021.31366 1013.84985l188.685 0l0 1.6799927l-188.685 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/third_party/modemmanager-next/;l%3D1?q%3Dmodemmanager%26ss%3Dpiper%252FGoogle%252Fchromeos_public&sa=D&source=editors&ust=1638577908180000&usg=AOvVaw3TEU2fwnxTqbVGtu0_JiI2" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1021.31366 994.71655l188.685 0l0 22.399963l-188.685 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#c9daf8" d="m383.7874 172.4672l1521.4802 0l0 442.51968l-1521.4802 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m383.7874 172.4672l1521.4802 0l0 442.51968l-1521.4802 0z" fill-rule="evenodd"/><path fill="#000000" d="m1111.9221 198.19469l3.375 1.0625q-0.78125 2.8125 -2.578125 4.1875q-1.796875 1.359375 -4.5625 1.359375q-3.421875 0 -5.625 -2.34375q-2.203125 -2.34375 -2.203125 -6.390625q0 -4.296875 2.203125 -6.65625q2.21875 -2.375 5.828125 -2.375q3.15625 0 5.125 1.859375q1.171875 1.09375 1.765625 3.15625l-3.4375 0.828125q-0.3125 -1.34375 -1.28125 -2.109375q-0.953125 -0.78125 -2.34375 -0.78125q-1.90625 0 -3.09375 1.375q-1.1875 1.375 -1.1875 4.4375q0 3.265625 1.171875 4.65625q1.171875 1.375 3.046875 1.375q1.375 0 2.375 -0.875q1.0 -0.890625 1.421875 -2.765625zm9.597656 -10.875l0 6.328125q1.59375 -1.875 3.8125 -1.875q1.140625 0 2.046875 0.421875q0.921875 0.421875 1.375 1.078125q0.46875 0.65625 0.640625 1.453125q0.171875 0.796875 0.171875 2.484375l0 7.296875l-3.296875 0l0 -6.578125q0 -1.953125 -0.1875 -2.484375q-0.1875 -0.53125 -0.671875 -0.828125q-0.46875 -0.3125 -1.171875 -0.3125q-0.828125 0 -1.46875 0.40625q-0.640625 0.390625 -0.953125 1.1875q-0.296875 0.796875 -0.296875 2.375l0 6.234375l-3.28125 0l0 -17.1875l3.28125 0zm14.535156 17.1875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.4335938 -6.40625q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm11.800781 -6.234375l3.03125 0l0 1.703125q1.625 -1.984375 3.875 -1.984375q1.203125 0 2.078125 0.5q0.875 0.484375 1.4375 1.484375q0.828125 -1.0 1.765625 -1.484375q0.953125 -0.5 2.03125 -0.5q1.375 0 2.3125 0.5625q0.953125 0.5625 1.421875 1.640625q0.34375 0.796875 0.34375 2.578125l0 7.953125l-3.296875 0l0 -7.109375q0 -1.859375 -0.328125 -2.390625q-0.46875 -0.703125 -1.40625 -0.703125q-0.703125 0 -1.3125 0.421875q-0.609375 0.421875 -0.875 1.234375q-0.265625 0.8125 -0.265625 2.5625l0 5.984375l-3.296875 0l0 -6.828125q0 -1.8125 -0.171875 -2.328125q-0.171875 -0.53125 -0.546875 -0.78125q-0.375 -0.265625 -1.0 -0.265625q-0.765625 0 -1.375 0.40625q-0.609375 0.40625 -0.875 1.1875q-0.265625 0.765625 -0.265625 2.5625l0 6.046875l-3.28125 0l0 -12.453125zm28.792969 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0z" fill-rule="nonzero"/><defs><linearGradient id="p.1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(22.75616333875044 0.0 0.0 22.75616333875044 0.0 0.0)" spreadMethod="pad" x1="50.0253847639223" y1="25.41507032009087" x2="33.93449513200751" y2="9.323885132124536"><stop offset="0.0" stop-color="#3c78d8"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.1)" d="m428.52756 555.8609l687.37 0l0 44.97638l-687.37 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m428.52756 555.8609l687.37 0l0 44.97638l-687.37 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m671.0997 565.5953l121.489136 0l0 15.32605l-121.489136 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m676.4903 575.12964l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0165405 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm6.2578125 2.21875l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm9.062378 -0.15625l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm7.7093506 3.453125l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm10.865601 3.5l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm6.2578125 2.21875l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm4.109192 -2.21875l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.1328125 2.0625l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.4281006 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.9298706 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9610596 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.1017456 0.15625l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0z" fill-rule="nonzero"/><path fill="#000000" d="m797.32306 577.6609l0 -9.546875l3.28125 0q1.109375 0 1.703125 0.140625q0.8125 0.1875 1.390625 0.6875q0.765625 0.640625 1.140625 1.640625q0.375 0.984375 0.375 2.25q0 1.09375 -0.265625 1.9375q-0.25 0.828125 -0.65625 1.390625q-0.390625 0.546875 -0.859375 0.859375q-0.46875 0.3125 -1.140625 0.484375q-0.65625 0.15625 -1.53125 0.15625l-3.4375 0zm1.265625 -1.125l2.03125 0q0.9375 0 1.46875 -0.171875q0.546875 -0.1875 0.875 -0.5q0.4375 -0.453125 0.6875 -1.203125q0.25 -0.765625 0.25 -1.84375q0 -1.5 -0.5 -2.296875q-0.484375 -0.8125 -1.1875 -1.078125q-0.5 -0.203125 -1.625 -0.203125l-2.0 0l0 7.296875zm8.296997 1.125l0 -9.546875l3.59375 0q1.09375 0 1.75 0.296875q0.65625 0.28125 1.03125 0.890625q0.375 0.609375 0.375 1.265625q0 0.609375 -0.34375 1.15625q-0.328125 0.53125 -0.984375 0.859375q0.859375 0.25 1.328125 0.875q0.46875 0.609375 0.46875 1.4375q0 0.671875 -0.296875 1.25q-0.28125 0.578125 -0.703125 0.890625q-0.40625 0.3125 -1.03125 0.46875q-0.625 0.15625 -1.546875 0.15625l-3.640625 0zm1.265625 -5.53125l2.0625 0q0.84375 0 1.203125 -0.109375q0.484375 -0.140625 0.71875 -0.46875q0.25 -0.34375 0.25 -0.84375q0 -0.46875 -0.234375 -0.828125q-0.21875 -0.359375 -0.640625 -0.5q-0.421875 -0.140625 -1.453125 -0.140625l-1.90625 0l0 2.890625zm0 4.40625l2.375 0q0.609375 0 0.859375 -0.046875q0.4375 -0.078125 0.734375 -0.25q0.296875 -0.1875 0.484375 -0.53125q0.1875 -0.359375 0.1875 -0.8125q0 -0.53125 -0.28125 -0.921875q-0.265625 -0.40625 -0.75 -0.5625q-0.484375 -0.15625 -1.40625 -0.15625l-2.203125 0l0 3.28125zm12.0616455 1.125l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm17.78894 -1.28125l1.265625 0.3125q-0.390625 1.5625 -1.421875 2.375q-1.03125 0.8125 -2.53125 0.8125q-1.53125 0 -2.5 -0.625q-0.96875 -0.625 -1.484375 -1.8125q-0.5 -1.1875 -0.5 -2.5625q0 -1.484375 0.5625 -2.59375q0.578125 -1.109375 1.625 -1.6875q1.0625 -0.578125 2.328125 -0.578125q1.421875 0 2.390625 0.734375q0.984375 0.71875 1.375 2.046875l-1.25 0.296875q-0.328125 -1.046875 -0.96875 -1.515625q-0.625 -0.484375 -1.578125 -0.484375q-1.09375 0 -1.84375 0.53125q-0.734375 0.53125 -1.03125 1.421875q-0.296875 0.875 -0.296875 1.828125q0 1.21875 0.34375 2.125q0.359375 0.90625 1.109375 1.359375q0.75 0.4375 1.625 0.4375q1.0625 0 1.796875 -0.609375q0.734375 -0.609375 0.984375 -1.8125zm2.656372 3.34375l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9923706 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm7.6798096 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5218506 4.125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm9.974976 -1.046875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.6717529 -1.015625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625z" fill-rule="nonzero"/><path fill="#000099" d="m671.0997 578.5276l121.489075 0l0 1.1999512l-121.489075 0l0 -1.1999512z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/dbus/shill/?q%3Dchromeos%252Fdbus%252Fshill%252F%26ss%3Dchromium&sa=D&source=editors&ust=1638577908190000&usg=AOvVaw22yN5gsjrQuI5P92yA_mhH" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m671.0997 564.8609l121.489075 0l0 16.0l-121.489075 0l0 -16.0z" fill-rule="nonzero"/></a><defs><linearGradient id="p.2" gradientUnits="userSpaceOnUse" gradientTransform="matrix(18.572973184015446 0.0 0.0 18.572973184015446 0.0 0.0)" spreadMethod="pad" x1="54.366384790409825" y1="24.411686394668724" x2="41.23343205387387" y2="11.278488561921765"><stop offset="0.0" stop-color="#3c78d8"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.2)" d="m591.33594 383.96326l348.97638 0l0 138.86615l-348.97638 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m591.33594 383.96326l348.97638 0l0 138.86615l-348.97638 0z" fill-rule="evenodd"/><path fill="#000000" d="m632.75385 408.32324l0 -11.453125l2.25 0l4.6875 7.640625l0 -7.640625l2.15625 0l0 11.453125l-2.328125 0l-4.609375 -7.46875l0 7.46875l-2.15625 0zm16.320312 -2.640625l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm7.7734375 -3.4375l0 1.75l-1.5 0l0 3.34375q0 1.015625 0.046875 1.1875q0.046875 0.15625 0.1875 0.265625q0.15625 0.109375 0.375 0.109375q0.3125 0 0.890625 -0.203125l0.1875 1.703125q-0.765625 0.328125 -1.734375 0.328125q-0.59375 0 -1.078125 -0.203125q-0.46875 -0.203125 -0.703125 -0.515625q-0.21875 -0.3125 -0.296875 -0.859375q-0.078125 -0.375 -0.078125 -1.546875l0 -3.609375l-1.0 0l0 -1.75l1.0 0l0 -1.65625l2.203125 -1.28125l0 2.9375l1.5 0zm3.078125 8.296875l-2.625 -8.296875l2.125 0l1.5625 5.4375l1.421875 -5.4375l2.125 0l1.375 5.4375l1.59375 -5.4375l2.15625 0l-2.65625 8.296875l-2.109375 0l-1.4375 -5.34375l-1.40625 5.34375l-2.125 0zm10.3828125 -4.265625q0 -1.09375 0.53125 -2.109375q0.546875 -1.03125 1.53125 -1.5625q1.0 -0.546875 2.21875 -0.546875q1.875 0 3.078125 1.21875q1.203125 1.21875 1.203125 3.09375q0 1.875 -1.21875 3.125q-1.203125 1.234375 -3.046875 1.234375q-1.140625 0 -2.1875 -0.515625q-1.03125 -0.515625 -1.578125 -1.515625q-0.53125 -1.0 -0.53125 -2.421875zm2.25 0.109375q0 1.234375 0.578125 1.890625q0.59375 0.65625 1.453125 0.65625q0.859375 0 1.4375 -0.65625q0.59375 -0.65625 0.59375 -1.90625q0 -1.21875 -0.59375 -1.875q-0.578125 -0.65625 -1.4375 -0.65625q-0.859375 0 -1.453125 0.65625q-0.578125 0.65625 -0.578125 1.890625zm10.1328125 4.15625l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625zm4.0546875 0l0 -11.453125l2.1875 0l0 6.078125l2.578125 -2.921875l2.703125 0l-2.84375 3.03125l3.046875 5.265625l-2.375 0l-2.078125 -3.734375l-1.03125 1.078125l0 2.65625l-2.1875 0zm8.9921875 0l0 -11.453125l2.3125 0l0 4.5l4.53125 0l0 -4.5l2.3125 0l0 11.453125l-2.3125 0l0 -5.015625l-4.53125 0l0 5.015625l-2.3125 0zm13.1796875 -5.765625l-2.0 -0.359375q0.34375 -1.203125 1.15625 -1.78125q0.828125 -0.578125 2.4375 -0.578125q1.46875 0 2.1875 0.34375q0.71875 0.34375 1.015625 0.890625q0.296875 0.53125 0.296875 1.953125l-0.03125 2.5625q0 1.09375 0.109375 1.625q0.109375 0.515625 0.390625 1.109375l-2.171875 0q-0.078125 -0.21875 -0.203125 -0.65625q-0.0625 -0.1875 -0.078125 -0.25q-0.5625 0.546875 -1.203125 0.828125q-0.640625 0.265625 -1.375 0.265625q-1.28125 0 -2.015625 -0.6875q-0.734375 -0.703125 -0.734375 -1.765625q0 -0.703125 0.328125 -1.25q0.34375 -0.5625 0.9375 -0.84375q0.609375 -0.296875 1.75 -0.515625q1.546875 -0.296875 2.140625 -0.546875l0 -0.21875q0 -0.625 -0.3125 -0.890625q-0.3125 -0.28125 -1.1875 -0.28125q-0.578125 0 -0.90625 0.234375q-0.328125 0.234375 -0.53125 0.8125zm2.9375 1.78125q-0.421875 0.140625 -1.34375 0.34375q-0.90625 0.1875 -1.1875 0.375q-0.4375 0.296875 -0.4375 0.765625q0 0.46875 0.34375 0.8125q0.34375 0.328125 0.875 0.328125q0.59375 0 1.140625 -0.390625q0.390625 -0.296875 0.515625 -0.734375q0.09375 -0.28125 0.09375 -1.0625l0 -0.4375zm11.8671875 3.984375l-2.203125 0l0 -4.234375q0 -1.34375 -0.140625 -1.734375q-0.140625 -0.40625 -0.453125 -0.625q-0.3125 -0.21875 -0.765625 -0.21875q-0.5625 0 -1.015625 0.3125q-0.453125 0.3125 -0.625 0.828125q-0.171875 0.515625 -0.171875 1.90625l0 3.765625l-2.1875 0l0 -8.296875l2.03125 0l0 1.21875q1.09375 -1.40625 2.734375 -1.40625q0.734375 0 1.328125 0.265625q0.609375 0.25 0.90625 0.65625q0.3125 0.40625 0.4375 0.921875q0.125 0.515625 0.125 1.484375l0 5.15625zm9.8359375 0l-2.046875 0l0 -1.21875q-0.5 0.703125 -1.203125 1.0625q-0.6875 0.34375 -1.390625 0.34375q-1.421875 0 -2.453125 -1.15625q-1.015625 -1.15625 -1.015625 -3.21875q0 -2.109375 0.984375 -3.203125q1.0 -1.09375 2.515625 -1.09375q1.390625 0 2.40625 1.15625l0 -4.125l2.203125 0l0 11.453125zm-5.859375 -4.328125q0 1.328125 0.359375 1.921875q0.53125 0.859375 1.484375 0.859375q0.765625 0 1.296875 -0.640625q0.53125 -0.65625 0.53125 -1.9375q0 -1.421875 -0.515625 -2.046875q-0.515625 -0.640625 -1.328125 -0.640625q-0.78125 0 -1.3125 0.625q-0.515625 0.625 -0.515625 1.859375zm8.0234375 4.328125l0 -11.453125l2.1875 0l0 11.453125l-2.1875 0zm9.2421875 -2.640625l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm6.0703125 4.859375l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625z" fill-rule="nonzero"/><path fill="#000000" d="m762.457 411.69824q-1.171875 -1.46875 -1.984375 -3.4375q-0.796875 -1.984375 -0.796875 -4.09375q0 -1.859375 0.609375 -3.5625q0.703125 -1.96875 2.171875 -3.9375l1.0 0q-0.9375 1.625 -1.25 2.328125q-0.46875 1.078125 -0.75 2.25q-0.328125 1.453125 -0.328125 2.9375q0 3.75 2.328125 7.515625l-1.0 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m764.0351 393.83887l130.71875 0l0 18.398438l-130.71875 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m770.50385 405.27637l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.59375 3.046875l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8828125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.3046875 0.796875q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4140625 1.671875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm7.5 2.6875l3.328125 -11.859375l1.125 0l-3.3125 11.859375l-1.140625 0zm5.5078125 -0.203125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m896.7382 411.69824l-1.015625 0q2.34375 -3.765625 2.34375 -7.515625q0 -1.46875 -0.34375 -2.921875q-0.265625 -1.171875 -0.734375 -2.25q-0.3125 -0.703125 -1.265625 -2.34375l1.015625 0q1.46875 1.96875 2.171875 3.9375q0.59375 1.703125 0.59375 3.5625q0 2.109375 -0.8125 4.09375q-0.796875 1.96875 -1.953125 3.4375z" fill-rule="nonzero"/><path fill="#000099" d="m764.0351 409.36325l130.71875 0l0 1.4400024l-130.71875 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#000000" d="m644.957 442.30762l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm2.6796875 -0.140625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9453125 4.15625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.2578125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2421875 1.90625l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm5.65625 1.78125l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm12.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm13.96875 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.5625 3.046875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.0390625 1.6875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.0 0l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm14.234375 -0.1875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm16.070312 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm17.828125 1.109375l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.0625 -1.109375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm11.1953125 0l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm11.375 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm8.40625 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m860.5429 431.83887l35.554688 0l0 18.398438l-35.554688 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m861.32416 440.74512q0 -2.859375 1.53125 -4.46875q1.53125 -1.609375 3.953125 -1.609375q1.578125 0 2.84375 0.765625q1.28125 0.75 1.953125 2.109375q0.671875 1.34375 0.671875 3.0625q0 1.75 -0.703125 3.125q-0.703125 1.375 -2.0 2.09375q-1.28125 0.703125 -2.78125 0.703125q-1.609375 0 -2.890625 -0.78125q-1.265625 -0.796875 -1.921875 -2.140625q-0.65625 -1.359375 -0.65625 -2.859375zm1.5625 0.015625q0 2.078125 1.109375 3.265625q1.109375 1.1875 2.796875 1.1875q1.703125 0 2.8125 -1.203125q1.109375 -1.203125 1.109375 -3.40625q0 -1.40625 -0.484375 -2.4375q-0.46875 -1.046875 -1.375 -1.625q-0.90625 -0.578125 -2.046875 -0.578125q-1.609375 0 -2.765625 1.109375q-1.15625 1.109375 -1.15625 3.6875zm11.3203125 5.5625l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm19.742188 -4.015625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875z" fill-rule="nonzero"/><path fill="#000099" d="m860.5429 447.36325l35.554688 0l0 1.4400024l-35.554688 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#000000" d="m615.3046 462.27637l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.0625 -1.109375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm9.2265625 0l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm4.1171875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.2890625 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.4296875 4.296875l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4453125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm10.75 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm16.070312 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm12.078125 0.46875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm11.015625 3.6875l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8984375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5234375 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.9453125 0l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm13.9375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.2734375 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm12.40625 7.328125l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.6171875 4.109375l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm10.2734375 4.15625l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9296875 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm13.6328125 1.46875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm17.6875 3.921875q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm13.453125 1.125l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm8.0 2.015625q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm9.0078125 1.125l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.59375 3.046875l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2109375 4.953125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875z" fill-rule="nonzero"/><path fill="#000000" d="m608.8984 481.83887l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 2.484375l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.3046875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 7.359375l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.0703125 1.625l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 2.484375l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.3671875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm5.296875 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm8.21875 -3.6875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm11.015625 3.6875l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8984375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5234375 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm13.4375 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.0625 -1.109375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm9.2265625 0l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm4.1171875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.2890625 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.4296875 4.296875l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4453125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm10.75 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm16.070312 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm15.484375 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm12.265625 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm11.015625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.625 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm5.296875 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m744.5546 499.30762l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm3.2109375 4.015625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8828125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm8.2265625 4.953125l0 -1.609375l1.609375 0l0 1.609375l-1.609375 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/network/&sa=D&source=editors&ust=1638577908205000&usg=AOvVaw3RF8_-dncJ_vqG_RuGuF21" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m764.0351 392.96326l130.71875 0l0 19.200012l-130.71875 0l0 -19.200012z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:components/onc/docs/onc_spec.md?q%3Donc_spec.md%26ss%3Dchromium&sa=D&source=editors&ust=1638577908205000&usg=AOvVaw1LrGntAsQ_eaS6itTnk7eG" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m860.5429 430.96326l35.554688 0l0 19.200012l-35.554688 0l0 -19.200012z" fill-rule="nonzero"/></a><path fill="#000000" fill-opacity="0.0" d="m972.25195 367.22864l0.06298828 -0.9763794" fill-rule="evenodd"/><path stroke="#000000" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m972.25195 367.22864l0.06298828 -0.9763794" fill-rule="evenodd"/><path fill="#6d9eeb" d="m428.5223 673.2756l687.37 0l0 224.62994l-687.37 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m428.5223 673.2756l687.37 0l0 224.62994l-687.37 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m746.8714 683.58905l50.671875 0l0 27.597656l-50.671875 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m747.7464 699.72186l3.375 -0.328125q0.296875 1.703125 1.21875 2.5q0.9375 0.796875 2.53125 0.796875q1.671875 0 2.515625 -0.703125q0.859375 -0.71875 0.859375 -1.671875q0 -0.609375 -0.359375 -1.03125q-0.359375 -0.421875 -1.25 -0.75q-0.609375 -0.203125 -2.78125 -0.75q-2.78125 -0.6875 -3.90625 -1.6875q-1.59375 -1.421875 -1.59375 -3.46875q0 -1.3125 0.75 -2.453125q0.75 -1.140625 2.140625 -1.734375q1.40625 -0.59375 3.390625 -0.59375q3.234375 0 4.859375 1.421875q1.640625 1.40625 1.71875 3.78125l-3.46875 0.140625q-0.21875 -1.3125 -0.953125 -1.890625q-0.734375 -0.59375 -2.203125 -0.59375q-1.5 0 -2.359375 0.625q-0.546875 0.40625 -0.546875 1.0625q0 0.609375 0.515625 1.046875q0.65625 0.546875 3.1875 1.15625q2.53125 0.59375 3.734375 1.234375q1.21875 0.640625 1.90625 1.75q0.6875 1.09375 0.6875 2.734375q0 1.46875 -0.828125 2.765625q-0.8125 1.28125 -2.3125 1.921875q-1.5 0.625 -3.75 0.625q-3.25 0 -5.0 -1.5q-1.75 -1.515625 -2.078125 -4.40625zm20.132812 -11.59375l0 6.328125q1.59375 -1.875 3.8125 -1.875q1.140625 0 2.046875 0.421875q0.921875 0.421875 1.375 1.078125q0.46875 0.65625 0.640625 1.453125q0.171875 0.796875 0.171875 2.484375l0 7.296875l-3.296875 0l0 -6.578125q0 -1.953125 -0.1875 -2.484375q-0.1875 -0.53125 -0.671875 -0.828125q-0.46875 -0.3125 -1.171875 -0.3125q-0.828125 0 -1.46875 0.40625q-0.640625 0.390625 -0.953125 1.1875q-0.296875 0.796875 -0.296875 2.375l0 6.234375l-3.28125 0l0 -17.1875l3.28125 0zm11.378906 3.046875l0 -3.046875l3.296875 0l0 3.046875l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm6.6679688 0l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm6.6679688 0l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m797.5433 683.58905l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m746.8714 706.8756l50.671875 0l0 2.1599731l-50.671875 0l0 -2.1599731z" fill-rule="nonzero"/><path fill="#000000" d="m468.4378 745.6356l0 -11.453125l5.078125 0q1.53125 0 2.328125 0.3125q0.796875 0.296875 1.265625 1.078125q0.484375 0.78125 0.484375 1.734375q0 1.21875 -0.796875 2.0625q-0.78125 0.828125 -2.4375 1.046875q0.609375 0.296875 0.921875 0.578125q0.65625 0.609375 1.25 1.515625l2.0 3.125l-1.90625 0l-1.515625 -2.390625q-0.671875 -1.03125 -1.109375 -1.578125q-0.421875 -0.546875 -0.765625 -0.765625q-0.328125 -0.21875 -0.6875 -0.296875q-0.25 -0.0625 -0.84375 -0.0625l-1.75 0l0 5.09375l-1.515625 0zm1.515625 -6.40625l3.25 0q1.046875 0 1.625 -0.203125q0.59375 -0.21875 0.890625 -0.6875q0.3125 -0.484375 0.3125 -1.03125q0 -0.8125 -0.59375 -1.328125q-0.59375 -0.53125 -1.859375 -0.53125l-3.625 0l0 3.78125zm15.5078125 3.734375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 5.671875l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.1015625 -0.046875q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 -7.359375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm4.8515625 0l-1.3125 0l0 -11.453125l1.40625 0l0 4.078125q0.890625 -1.109375 2.28125 -1.109375q0.765625 0 1.4375 0.3125q0.6875 0.296875 1.125 0.859375q0.453125 0.5625 0.703125 1.359375q0.25 0.78125 0.25 1.671875q0 2.140625 -1.0625 3.3125q-1.046875 1.15625 -2.53125 1.15625q-1.46875 0 -2.296875 -1.234375l0 1.046875zm-0.015625 -4.21875q0 1.5 0.40625 2.15625q0.65625 1.09375 1.796875 1.09375q0.921875 0 1.59375 -0.796875q0.671875 -0.8125 0.671875 -2.390625q0 -1.625 -0.65625 -2.390625q-0.640625 -0.78125 -1.546875 -0.78125q-0.921875 0 -1.59375 0.796875q-0.671875 0.796875 -0.671875 2.3125zm7.5859375 4.21875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.2578125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm12.609375 4.953125l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm15.1953125 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.0625 -1.109375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm9.2265625 0l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm4.1171875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.2890625 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.4296875 4.296875l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4453125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5546875 0l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.6328125 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm14.609375 4.296875l-3.03125 -11.453125l1.546875 0l1.75 7.5q0.28125 1.1875 0.484375 2.34375q0.4375 -1.828125 0.515625 -2.109375l2.171875 -7.734375l1.828125 0l1.640625 5.796875q0.625 2.15625 0.890625 4.046875q0.21875 -1.078125 0.578125 -2.484375l1.796875 -7.359375l1.515625 0l-3.140625 11.453125l-1.453125 0l-2.421875 -8.734375q-0.296875 -1.09375 -0.359375 -1.34375q-0.171875 0.796875 -0.328125 1.34375l-2.4375 8.734375l-1.546875 0zm12.9296875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.8046875 0l0 -11.453125l7.734375 0l0 1.34375l-6.21875 0l0 3.546875l5.375 0l0 1.359375l-5.375 0l0 5.203125l-1.515625 0zm9.5234375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.9140625 0l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm16.875 -4.015625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.8828125 1.34375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8046875 4.953125l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4296875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8203125 0l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm8.734375 0l0 -11.453125l8.28125 0l0 1.34375l-6.765625 0l0 3.515625l6.34375 0l0 1.34375l-6.34375 0l0 3.890625l7.03125 0l0 1.359375l-8.546875 0zm13.53125 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7421875 1.265625l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm8.25 -5.578125q0 -2.859375 1.53125 -4.46875q1.53125 -1.609375 3.953125 -1.609375q1.578125 0 2.84375 0.765625q1.28125 0.75 1.953125 2.109375q0.671875 1.34375 0.671875 3.0625q0 1.75 -0.703125 3.125q-0.703125 1.375 -2.0 2.09375q-1.28125 0.703125 -2.78125 0.703125q-1.609375 0 -2.890625 -0.78125q-1.265625 -0.796875 -1.921875 -2.140625q-0.65625 -1.359375 -0.65625 -2.859375zm1.5625 0.015625q0 2.078125 1.109375 3.265625q1.109375 1.1875 2.796875 1.1875q1.703125 0 2.8125 -1.203125q1.109375 -1.203125 1.109375 -3.40625q0 -1.40625 -0.484375 -2.4375q-0.46875 -1.046875 -1.375 -1.625q-0.90625 -0.578125 -2.046875 -0.578125q-1.609375 0 -2.765625 1.109375q-1.15625 1.109375 -1.15625 3.6875zm11.1640625 8.75l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm13.3046875 1.4375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm12.3515625 0l-4.4375 -11.453125l1.640625 0l2.96875 8.3125q0.359375 1.0 0.609375 1.875q0.265625 -0.9375 0.609375 -1.875l3.09375 -8.3125l1.546875 0l-4.484375 11.453125l-1.546875 0zm7.390625 0l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm9.140625 6.015625l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm11.7578125 0l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm13.9375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.273499 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.000061 0 -1.828186 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859436 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.437561 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578186 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.93756104 0 -1.562561 0.765625q-0.625 0.765625 -0.625 2.421875zm12.515686 4.140625l0 -11.453125l1.515625 0l0 10.09375l5.640625 0l0 1.359375l-7.15625 0zm15.7890625 -1.359375l0 1.359375l-7.578125 0q-0.015625 -0.515625 0.171875 -0.984375q0.28125 -0.765625 0.921875 -1.515625q0.640625 -0.75 1.84375 -1.734375q1.859375 -1.53125 2.515625 -2.421875q0.65625 -0.90625 0.65625 -1.703125q0 -0.828125 -0.59375 -1.40625q-0.59375 -0.578125 -1.5625 -0.578125q-1.015625 0 -1.625 0.609375q-0.609375 0.609375 -0.609375 1.6875l-1.453125 -0.140625q0.15625 -1.625 1.125 -2.46875q0.96875 -0.84375 2.59375 -0.84375q1.65625 0 2.609375 0.921875q0.96875 0.90625 0.96875 2.25q0 0.6875 -0.28125 1.359375q-0.28125 0.65625 -0.9375 1.390625q-0.65625 0.734375 -2.171875 2.015625q-1.265625 1.0625 -1.625 1.453125q-0.359375 0.375 -0.59375 0.75l5.625 0zm4.9921875 1.359375l0 -10.109375l-3.78125 0l0 -1.34375l9.078125 0l0 1.34375l-3.78125 0l0 10.109375l-1.515625 0zm6.8515625 0l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm7.921875 6.21875l3.328125 -11.859375l1.125 0l-3.3125 11.859375l-1.140625 0zm5.9453125 -0.203125l0 -11.453125l1.515625 0l0 11.453125l-1.515625 0zm4.1796875 0l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.640625 2.328125l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm16.6875 1.015625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2421875 1.90625l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm10.4921875 3.046875l-4.4375 -11.453125l1.640625 0l2.96875 8.3125q0.359375 1.0 0.609375 1.875q0.265625 -0.9375 0.609375 -1.875l3.09375 -8.3125l1.546875 0l-4.484375 11.453125l-1.546875 0zm7.390625 0l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm9.140625 6.015625l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm11.7890625 0l0 -1.609375l1.609375 0l0 1.609375l-1.609375 0z" fill-rule="nonzero"/><path fill="#000000" d="m640.0472 764.6356l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.96875 6.015625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm10.2734375 4.15625l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9296875 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm13.6328125 1.46875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm13.0078125 2.484375l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0zm8.0 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5546875 0l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.6328125 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm11.875 1.8125l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.625 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm6.7890625 0.234375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm15.34375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm20.765625 0.140625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm3.2109375 4.015625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8828125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm8.2265625 4.953125l0 -1.609375l1.609375 0l0 1.609375l-1.609375 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/README.md&sa=D&source=editors&ust=1638577908213000&usg=AOvVaw0zvtzR9Rp3BvTXJ5t-eH42" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m746.8714 682.2756l50.671875 0l0 28.799988l-50.671875 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#8e7cc3" d="m1156.1908 674.91077l240.85034 0l0 138.86615l-240.85034 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1156.1908 674.91077l240.85034 0l0 138.86615l-240.85034 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1232.5886 685.2242l88.05469 0l0 27.597656l-88.05469 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m1234.3542 706.95074l0 -17.1875l3.46875 0l0 6.765625l6.796875 0l0 -6.765625l3.46875 0l0 17.1875l-3.46875 0l0 -7.515625l-6.796875 0l0 7.515625l-3.46875 0zm24.503906 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm9.097656 7.296875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.9492188 -12.453125l3.03125 0l0 1.703125q1.625 -1.984375 3.875 -1.984375q1.203125 0 2.078125 0.5q0.875 0.484375 1.4375 1.484375q0.828125 -1.0 1.765625 -1.484375q0.953125 -0.5 2.03125 -0.5q1.375 0 2.3125 0.5625q0.953125 0.5625 1.421875 1.640625q0.34375 0.796875 0.34375 2.578125l0 7.953125l-3.296875 0l0 -7.109375q0 -1.859375 -0.328125 -2.390625q-0.46875 -0.703125 -1.40625 -0.703125q-0.703125 0 -1.3125 0.421875q-0.609375 0.421875 -0.875 1.234375q-0.265625 0.8125 -0.265625 2.5625l0 5.984375l-3.296875 0l0 -6.828125q0 -1.8125 -0.171875 -2.328125q-0.171875 -0.53125 -0.546875 -0.78125q-0.375 -0.265625 -1.0 -0.265625q-0.765625 0 -1.375 0.40625q-0.609375 0.40625 -0.875 1.1875q-0.265625 0.765625 -0.265625 2.5625l0 6.046875l-3.28125 0l0 -12.453125zm28.792969 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm4.7851562 3.75l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1320.6433 685.2242l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m1232.5886 708.51074l88.05469 0l0 2.1600342l-88.05469 0l0 -2.1600342z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/hermes/README.md&sa=D&source=editors&ust=1638577908215000&usg=AOvVaw0pm3C9IcD3P84ALeLgB-sr" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1232.5886 683.91077l88.05469 0l0 28.799988l-88.05469 0l0 -28.799988z" fill-rule="nonzero"/></a><defs><linearGradient id="p.3" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.216496493233654 0.0 0.0 14.216496493233654 0.0 0.0)" spreadMethod="pad" x1="99.85085736086143" y1="40.61493112550267" x2="89.79836859699044" y2="30.56225774006074"><stop offset="0.0" stop-color="#8e7cc3"/><stop offset="0.47" stop-color="#b4a7d6"/><stop offset="0.54" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.3)" d="m1156.1908 554.9134l240.85034 0l0 44.97638l-240.85034 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1156.1908 554.9134l240.85034 0l0 44.97638l-240.85034 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1177.575 564.5701l125.390625 0l0 13.798828l-125.390625 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m1182.4343 573.15216l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm1.9375 2.28125l0 -8.59375l1.046875 0l0 3.078125q0.734375 -0.84375 1.859375 -0.84375q0.703125 0 1.203125 0.28125q0.515625 0.265625 0.734375 0.75q0.21875 0.46875 0.21875 1.390625l0 3.9375l-1.046875 0l0 -3.9375q0 -0.796875 -0.34375 -1.15625q-0.34375 -0.359375 -0.96875 -0.359375q-0.46875 0 -0.890625 0.25q-0.40625 0.234375 -0.59375 0.65625q-0.171875 0.40625 -0.171875 1.140625l0 3.40625l-1.046875 0zm6.658203 0l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm3.6210938 -3.109375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.986328 3.109375l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm14.246094 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.486328 0.59375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.564453 1.25l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm5.625 2.0l2.484375 -8.875l0.84375 0l-2.484375 8.875l-0.84375 0zm8.162109 -0.140625l0 -0.78125q-0.59375 0.921875 -1.734375 0.921875q-0.75 0 -1.375 -0.40625q-0.625 -0.421875 -0.96875 -1.15625q-0.34375 -0.734375 -0.34375 -1.6875q0 -0.921875 0.3125 -1.6875q0.3125 -0.765625 0.9375 -1.15625q0.625 -0.40625 1.390625 -0.40625q0.5625 0 1.0 0.234375q0.4375 0.234375 0.71875 0.609375l0 -3.078125l1.046875 0l0 8.59375l-0.984375 0zm-3.328125 -3.109375q0 1.203125 0.5 1.796875q0.5 0.578125 1.1875 0.578125q0.6875 0 1.171875 -0.5625q0.484375 -0.5625 0.484375 -1.71875q0 -1.28125 -0.5 -1.875q-0.484375 -0.59375 -1.203125 -0.59375q-0.703125 0 -1.171875 0.578125q-0.46875 0.5625 -0.46875 1.796875zm6.939453 3.109375l-0.984375 0l0 -8.59375l1.0625 0l0 3.0625q0.671875 -0.828125 1.703125 -0.828125q0.578125 0 1.078125 0.234375q0.515625 0.21875 0.84375 0.640625q0.34375 0.421875 0.53125 1.015625q0.1875 0.59375 0.1875 1.265625q0 1.59375 -0.796875 2.46875q-0.796875 0.875 -1.890625 0.875q-1.109375 0 -1.734375 -0.921875l0 0.78125zm-0.015625 -3.15625q0 1.109375 0.3125 1.609375q0.5 0.8125 1.34375 0.8125q0.6875 0 1.1875 -0.59375q0.515625 -0.59375 0.515625 -1.796875q0 -1.21875 -0.484375 -1.796875q-0.484375 -0.578125 -1.171875 -0.578125q-0.6875 0 -1.203125 0.609375q-0.5 0.59375 -0.5 1.734375zm9.798828 3.15625l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm2.1738281 -1.859375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm5.625 2.0l2.484375 -8.875l0.84375 0l-2.484375 8.875l-0.84375 0zm4.1308594 -0.140625l0 -8.59375l1.046875 0l0 3.078125q0.734375 -0.84375 1.859375 -0.84375q0.703125 0 1.203125 0.28125q0.515625 0.265625 0.734375 0.75q0.21875 0.46875 0.21875 1.390625l0 3.9375l-1.046875 0l0 -3.9375q0 -0.796875 -0.34375 -1.15625q-0.34375 -0.359375 -0.96875 -0.359375q-0.46875 0 -0.890625 0.25q-0.40625 0.234375 -0.59375 0.65625q-0.171875 0.40625 -0.171875 1.140625l0 3.40625l-1.046875 0zm10.923828 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.861328 3.703125l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm4.0117188 0l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm14.246094 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.455078 1.84375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5z" fill-rule="nonzero"/><path fill="#000000" d="m1307.2214 575.4334l0 -8.59375l2.96875 0q1.0 0 1.53125 0.125q0.734375 0.171875 1.25 0.609375q0.6875 0.578125 1.015625 1.484375q0.34375 0.890625 0.34375 2.03125q0 0.984375 -0.234375 1.734375q-0.21875 0.75 -0.578125 1.25q-0.359375 0.5 -0.796875 0.78125q-0.421875 0.28125 -1.015625 0.4375q-0.59375 0.140625 -1.375 0.140625l-3.109375 0zm1.140625 -1.015625l1.828125 0q0.859375 0 1.34375 -0.15625q0.484375 -0.15625 0.765625 -0.453125q0.40625 -0.390625 0.625 -1.078125q0.234375 -0.6875 0.234375 -1.65625q0 -1.34375 -0.453125 -2.0625q-0.4375 -0.734375 -1.0625 -0.984375q-0.46875 -0.171875 -1.46875 -0.171875l-1.8125 0l0 6.5625zm7.4785156 1.015625l0 -8.59375l3.234375 0q0.984375 0 1.578125 0.265625q0.59375 0.265625 0.921875 0.8125q0.34375 0.53125 0.34375 1.125q0 0.546875 -0.296875 1.03125q-0.296875 0.484375 -0.90625 0.78125q0.78125 0.234375 1.1875 0.796875q0.421875 0.546875 0.421875 1.296875q0 0.59375 -0.25 1.125q-0.25 0.515625 -0.625 0.796875q-0.375 0.28125 -0.953125 0.421875q-0.5625 0.140625 -1.375 0.140625l-3.28125 0zm1.140625 -4.984375l1.859375 0q0.75 0 1.078125 -0.09375q0.4375 -0.125 0.65625 -0.421875q0.21875 -0.3125 0.21875 -0.765625q0 -0.421875 -0.203125 -0.75q-0.203125 -0.328125 -0.59375 -0.4375q-0.375 -0.125 -1.296875 -0.125l-1.71875 0l0 2.59375zm0 3.96875l2.140625 0q0.546875 0 0.765625 -0.046875q0.40625 -0.0625 0.65625 -0.21875q0.265625 -0.171875 0.4375 -0.484375q0.171875 -0.3125 0.171875 -0.71875q0 -0.484375 -0.25 -0.84375q-0.234375 -0.359375 -0.671875 -0.5q-0.4375 -0.140625 -1.265625 -0.140625l-1.984375 0l0 2.953125zm10.863281 1.015625l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm2.1738281 -1.859375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm16.021484 -1.15625l1.125 0.296875q-0.359375 1.390625 -1.28125 2.125q-0.921875 0.734375 -2.265625 0.734375q-1.390625 0 -2.265625 -0.5625q-0.875 -0.5625 -1.328125 -1.625q-0.453125 -1.078125 -0.453125 -2.3125q0 -1.34375 0.515625 -2.34375q0.515625 -1.0 1.453125 -1.515625q0.953125 -0.515625 2.09375 -0.515625q1.28125 0 2.15625 0.65625q0.890625 0.65625 1.234375 1.84375l-1.125 0.265625q-0.296875 -0.9375 -0.875 -1.359375q-0.5625 -0.4375 -1.421875 -0.4375q-0.984375 0 -1.65625 0.484375q-0.65625 0.46875 -0.9375 1.265625q-0.265625 0.796875 -0.265625 1.65625q0 1.09375 0.3125 1.90625q0.328125 0.8125 1.0 1.21875q0.671875 0.40625 1.46875 0.40625q0.953125 0 1.609375 -0.546875q0.671875 -0.546875 0.90625 -1.640625zm2.3691406 3.015625l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm2.6972656 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm6.9160156 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.876953 3.703125l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm8.970703 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm0.6152344 -0.921875l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5z" fill-rule="nonzero"/><path fill="#000099" d="m1177.575 576.2134l125.390625 0l0 1.0800171l-125.390625 0l0 -1.0800171z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/ash/components/dbus/hermes/&sa=D&source=editors&ust=1638577908219000&usg=AOvVaw2ujobYXoJulWxne0OMffYI" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1177.575 563.9134l125.390625 0l0 14.400024l-125.390625 0l0 -14.400024z" fill-rule="nonzero"/></a><path fill="#6d9eeb" d="m704.0971 633.55914l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l125.64807 0c1.4019775 0 2.746582 0.5569458 3.737915 1.5482788c0.991333 0.99139404 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194946 -2.3666992 5.286194 -5.286194 5.286194l-125.64807 0c-2.9194946 0 -5.286194 -2.3666992 -5.286194 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m704.0971 633.55914l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l125.64807 0c1.4019775 0 2.746582 0.5569458 3.737915 1.5482788c0.991333 0.99139404 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194946 -2.3666992 5.286194 -5.286194 5.286194l-125.64807 0c-2.9194946 0 -5.286194 -2.3666992 -5.286194 -5.286194z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m744.80914 636.86566l49.60962 0l0 15.325989l-49.60962 0l0 -15.325989z" fill-rule="nonzero"/><path fill="#000099" d="m745.9654 648.9312l0 -6.0l-1.03125 0l0 -0.90625l1.03125 0l0 -0.734375q0 -0.703125 0.125 -1.046875q0.171875 -0.453125 0.59375 -0.734375q0.421875 -0.28125 1.203125 -0.28125q0.484375 0 1.09375 0.109375l-0.1875 1.03125q-0.359375 -0.0625 -0.6875 -0.0625q-0.53125 0 -0.75 0.234375q-0.21875 0.21875 -0.21875 0.84375l0 0.640625l1.34375 0l0 0.90625l-1.34375 0l0 6.0l-1.171875 0zm3.406128 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9923706 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.9454346 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm11.383667 0l0 -6.0l-1.03125 0l0 -0.90625l1.03125 0l0 -0.734375q0 -0.703125 0.125 -1.046875q0.171875 -0.453125 0.59375 -0.734375q0.421875 -0.28125 1.203125 -0.28125q0.484375 0 1.093811 0.109375l-0.18756104 1.03125q-0.359375 -0.0625 -0.6875 -0.0625q-0.53125 0 -0.75 0.234375q-0.21875 0.21875 -0.21875 0.84375l0 0.640625l1.34375 0l0 0.90625l-1.34375 0l0 6.0l-1.171875 0zm3.406128 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.4923706 -0.859375q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm2.9906006 3.46875l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm11.430542 0l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0z" fill-rule="nonzero"/><path fill="#000000" d="m794.84064 641.13434l0.296875 -0.921875q1.03125 0.375 1.5 0.640625q-0.125 -1.1875 -0.125 -1.625l0.9375 0q-0.015625 0.640625 -0.140625 1.609375q0.65625 -0.328125 1.53125 -0.625l0.296875 0.921875q-0.828125 0.28125 -1.625 0.375q0.40625 0.34375 1.125 1.21875l-0.78125 0.5625q-0.375 -0.515625 -0.890625 -1.40625q-0.484375 0.921875 -0.84375 1.40625l-0.765625 -0.5625q0.75 -0.921875 1.078125 -1.21875q-0.84375 -0.171875 -1.59375 -0.375z" fill-rule="nonzero"/><path fill="#000099" d="m744.80914 649.7979l49.60962 0l0 1.2000122l-49.60962 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/doc/manager-api.txt?q%3Dmanager-api.txt%26sq%3Dpackage:chromeos_public&sa=D&source=editors&ust=1638577908221000&usg=AOvVaw0tDQt2hh5bFGWyCKJJIcyj" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m744.80914 636.1312l49.60962 0l0 16.0l-49.60962 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m1156.1908 478.6614l240.85034 0l0 59.716522l-240.85034 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1156.1908 478.6614l240.85034 0l0 59.716522l-240.85034 0z" fill-rule="evenodd"/><path fill="#000000" d="m1237.9949 499.0058l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.8828125 1.34375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8046875 4.953125l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4296875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.0 -3.6875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm16.6875 1.015625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm6.8203125 1.265625l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4609375 3.1875l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375z" fill-rule="nonzero"/><defs><linearGradient id="p.4" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.461889909062105 0.0 0.0 14.461889909062105 0.0 0.0)" spreadMethod="pad" x1="79.93039935274531" y1="21.668886568203416" x2="69.70439250989592" y2="11.442692564966935"><stop offset="0.0" stop-color="#3c78d8"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.4)" d="m878.9525 300.8479l0 0c0 -3.4587402 2.803833 -6.2626038 6.2625732 -6.2626038l245.67957 0c1.6608887 0 3.2537842 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8342285 2.7673645 1.8342285 4.428314l0 25.049622c0 3.4587097 -2.803833 6.2625732 -6.2625732 6.2625732l-245.67957 0c-3.4587402 0 -6.2625732 -2.8038635 -6.2625732 -6.2625732z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m878.9525 300.8479l0 0c0 -3.4587402 2.803833 -6.2626038 6.2625732 -6.2626038l245.67957 0c1.6608887 0 3.2537842 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8342285 2.7673645 1.8342285 4.428314l0 25.049622c0 3.4587097 -2.803833 6.2625732 -6.2625732 6.2625732l-245.67957 0c-3.4587402 0 -6.2625732 -2.8038635 -6.2625732 -6.2625732z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m910.274 306.15396l195.5617 0l0 15.32605l-195.5617 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m915.6646 315.6883l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0164795 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836853 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374817 0l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm2.421753 1.046875l-2.125 -6.90625l1.21875 0l1.09375 3.984375l0.421875 1.484375q0.015625 -0.109375 0.359375 -1.421875l1.09375 -4.046875l1.203125 0l1.03125 4.0l0.34375 1.328125l0.40625 -1.34375l1.171875 -3.984375l1.140625 0l-2.15625 6.90625l-1.21875 0l-1.09375 -4.140625l-0.265625 -1.171875l-1.40625 5.3125l-1.21875 0zm7.906433 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6312256 3.453125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.4696045 0l0 -9.546875l1.171875 0l0 5.453125l2.765625 -2.8125l1.515625 0l-2.640625 2.5625l2.90625 4.34375l-1.4375 0l-2.28125 -3.53125l-0.828125 0.796875l0 2.734375l-1.171875 0zm5.5703125 2.65625l0 -0.859375l7.765625 0l0 0.859375l-7.765625 0zm13.006226 -5.1875l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm1.7109375 -0.921875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm7.6937256 0l0 -6.0l-1.03125 0l0 -0.90625l1.03125 0l0 -0.734375q0 -0.703125 0.125 -1.046875q0.171875 -0.453125 0.59375 -0.734375q0.421875 -0.28125 1.203125 -0.28125q0.484375 0 1.09375 0.109375l-0.1875 1.03125q-0.359375 -0.0625 -0.6875 -0.0625q-0.53125 0 -0.75 0.234375q-0.21875 0.21875 -0.21875 0.84375l0 0.640625l1.34375 0l0 0.90625l-1.34375 0l0 6.0l-1.171875 0zm3.437378 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.7266846 0.578125l1.140625 0.15625q0.078125 0.53125 0.40625 0.78125q0.4375 0.3125 1.1875 0.3125q0.8125 0 1.25 -0.328125q0.453125 -0.3125 0.609375 -0.90625q0.09375 -0.359375 0.078125 -1.5q-0.765625 0.90625 -1.90625 0.90625q-1.4375 0 -2.21875 -1.03125q-0.78125 -1.03125 -0.78125 -2.46875q0 -0.984375 0.359375 -1.8125q0.359375 -0.84375 1.03125 -1.296875q0.6875 -0.453125 1.609375 -0.453125q1.21875 0 2.015625 0.984375l0 -0.828125l1.078125 0l0 5.96875q0 1.609375 -0.328125 2.28125q-0.328125 0.6875 -1.046875 1.078125q-0.703125 0.390625 -1.75 0.390625q-1.234375 0 -2.0 -0.5625q-0.75 -0.5625 -0.734375 -1.671875zm0.984375 -4.15625q0 1.359375 0.53125 1.984375q0.546875 0.625 1.359375 0.625q0.796875 0 1.34375 -0.625q0.546875 -0.625 0.546875 -1.953125q0 -1.265625 -0.5625 -1.90625q-0.5625 -0.640625 -1.359375 -0.640625q-0.765625 0 -1.3125 0.640625q-0.546875 0.625 -0.546875 1.875zm6.9749756 3.578125l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374878 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm10.664917 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 -4.734375l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm-1.484375 10.875l0.21875 -1.0q0.359375 0.09375 0.546875 0.09375q0.359375 0 0.53125 -0.25q0.1875 -0.234375 0.1875 -1.1875l0 -7.25l1.171875 0l0 7.28125q0 1.28125 -0.328125 1.78125q-0.4375 0.65625 -1.40625 0.65625q-0.484375 0 -0.921875 -0.125zm4.0079346 -6.140625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1105.8357 306.15396l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m910.274 319.0862l195.5617 0l0 1.2000122l-195.5617 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/services/network_config/public/mojom/cros_network_config.mojom?q%3Dchromeos.network_config.mojom%2520%26ss%3Dchromium&sa=D&source=editors&ust=1638577908228000&usg=AOvVaw1Ze-2zSCqY2-wFonj4JQiW" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m910.274 305.41956l195.5617 0l0 16.0l-195.5617 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#8e7cc3" d="m958.3438 1280.937l498.48822 0l0 101.03931l-498.48822 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m958.3438 1280.937l498.48822 0l0 101.03931l-498.48822 0z" fill-rule="evenodd"/><path fill="#000000" d="m978.31256 1333.6892l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm10.363586 1.578125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.094482 5.765625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1448364 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519775 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm4.0007324 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.504211 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1882324 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm11.567871 0l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm14.7751465 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.563232 4.84375l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141357 5.765625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.020874 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1292725 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm17.322021 0l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004272 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1881104 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.853394 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m1224.6273 1296.9528l175.9685 0l0 69.00781l-175.9685 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m1224.6273 1296.9528l175.9685 0l0 69.00781l-175.9685 0z" fill-rule="evenodd"/><path fill="#000000" d="m1234.4711 1319.5759l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm13.3342285 4.296875l0 -13.359375l1.765625 0l0 13.359375l-1.765625 0zm4.8394775 0l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm30.302246 -4.6875l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm10.051025 3.5q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1882324 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.494019 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm13.230835 5.0625l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0zm18.225952 -3.34375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm18.110107 -7.59375l1.765625 0l0 7.71875q0 2.015625 -0.453125 3.203125q-0.453125 1.1875 -1.640625 1.9375q-1.1875 0.734375 -3.125 0.734375q-1.875 0 -3.078125 -0.640625q-1.1875 -0.65625 -1.703125 -1.875q-0.5 -1.234375 -0.5 -3.359375l0 -7.71875l1.765625 0l0 7.71875q0 1.734375 0.3125 2.5625q0.328125 0.8125 1.109375 1.265625q0.796875 0.453125 1.9375 0.453125q1.953125 0 2.78125 -0.890625q0.828125 -0.890625 0.828125 -3.390625l0 -7.71875zm5.0042725 13.359375l0 -13.359375l1.765625 0l0 13.359375l-1.765625 0zm14.417603 -4.6875l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm13.473022 0l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875z" fill-rule="nonzero"/><path fill="#dd7e6b" d="m610.7297 966.22046l258.2047 0l0 101.03943l-258.2047 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m610.7297 966.22046l258.2047 0l0 101.03943l-258.2047 0z" fill-rule="evenodd"/><path fill="#000000" d="m697.98114 991.6717l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051636 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0zm10.375732 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1291504 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.4939575 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm7.7663574 8.53125l0 -1.1875l10.859375 0l0 1.1875l-10.859375 0zm11.891296 0l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.203857 3.59375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1882324 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.8063965 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5270996 5.1875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125zm8.171875 -3.484375l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m669.8574 998.25146l139.94922 0l0 21.45288l-139.94922 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m672.99805 1015.14044l-3.0625 -9.671875l2.484375 0l1.8125 6.34375l1.671875 -6.34375l2.46875 0l1.609375 6.34375l1.859375 -6.34375l2.515625 0l-3.109375 9.671875l-2.453125 0l-1.671875 -6.21875l-1.640625 6.21875l-2.484375 0zm12.636414 -9.671875l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm10.849121 -1.71875l-2.328125 -0.421875q0.40625 -1.40625 1.359375 -2.078125q0.953125 -0.671875 2.84375 -0.671875q1.703125 0 2.546875 0.40625q0.84375 0.40625 1.171875 1.03125q0.34375 0.625 0.34375 2.28125l-0.015625 3.0q0 1.265625 0.109375 1.875q0.125 0.609375 0.46875 1.296875l-2.53125 0q-0.109375 -0.25 -0.25 -0.75q-0.0625 -0.234375 -0.09375 -0.3125q-0.65625 0.640625 -1.40625 0.96875q-0.734375 0.3125 -1.59375 0.3125q-1.484375 0 -2.34375 -0.8125q-0.859375 -0.8125 -0.859375 -2.046875q0 -0.828125 0.390625 -1.46875q0.390625 -0.640625 1.09375 -0.96875q0.703125 -0.34375 2.03125 -0.609375q1.796875 -0.328125 2.484375 -0.625l0 -0.25q0 -0.75 -0.359375 -1.0625q-0.359375 -0.3125 -1.375 -0.3125q-0.6875 0 -1.078125 0.28125q-0.375 0.265625 -0.609375 0.9375zm3.421875 2.078125q-0.484375 0.15625 -1.5625 0.390625q-1.0625 0.21875 -1.390625 0.4375q-0.5 0.359375 -0.5 0.90625q0 0.53125 0.40625 0.9375q0.40625 0.390625 1.015625 0.390625q0.703125 0 1.328125 -0.46875q0.46875 -0.34375 0.609375 -0.84375q0.09375 -0.328125 0.09375 -1.25l0 -0.5zm3.5319824 8.328125l0 -1.65625l10.640625 0l0 1.65625l-10.640625 0zm10.985046 -6.453125l2.5625 -0.390625q0.171875 0.75 0.671875 1.140625q0.5 0.390625 1.40625 0.390625q0.984375 0 1.484375 -0.375q0.34375 -0.25 0.34375 -0.671875q0 -0.296875 -0.1875 -0.484375q-0.1875 -0.1875 -0.859375 -0.34375q-3.09375 -0.6875 -3.921875 -1.25q-1.140625 -0.78125 -1.140625 -2.171875q0 -1.265625 0.984375 -2.109375q1.0 -0.859375 3.078125 -0.859375q1.984375 0 2.953125 0.65625q0.96875 0.640625 1.328125 1.90625l-2.40625 0.4375q-0.15625 -0.5625 -0.59375 -0.859375q-0.421875 -0.296875 -1.234375 -0.296875q-1.0 0 -1.4375 0.28125q-0.296875 0.203125 -0.296875 0.515625q0 0.265625 0.25 0.46875q0.34375 0.25 2.390625 0.71875q2.046875 0.453125 2.859375 1.140625q0.796875 0.671875 0.796875 1.890625q0 1.34375 -1.109375 2.296875q-1.109375 0.953125 -3.28125 0.953125q-1.984375 0 -3.140625 -0.796875q-1.140625 -0.8125 -1.5 -2.1875zm17.641357 2.765625l0 -1.453125q-0.53125 0.78125 -1.390625 1.234375q-0.859375 0.4375 -1.8125 0.4375q-0.96875 0 -1.75 -0.421875q-0.765625 -0.4375 -1.125 -1.203125q-0.34375 -0.78125 -0.34375 -2.140625l0 -6.125l2.5625 0l0 4.4375q0 2.046875 0.140625 2.515625q0.140625 0.453125 0.515625 0.71875q0.375 0.265625 0.953125 0.265625q0.65625 0 1.171875 -0.359375q0.515625 -0.359375 0.703125 -0.890625q0.203125 -0.53125 0.203125 -2.609375l0 -4.078125l2.546875 0l0 9.671875l-2.375 0zm4.958496 -9.671875l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm8.864746 -4.671875l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm8.94281 5.0l0 -13.359375l2.5625 0l0 13.359375l-2.5625 0zm5.1833496 -10.984375l0 -2.375l2.5625 0l0 2.375l-2.5625 0zm0 10.984375l0 -9.671875l2.5625 0l0 9.671875l-2.5625 0zm13.620789 -6.8125l-2.53125 0.453125q-0.125 -0.75 -0.578125 -1.125q-0.453125 -0.390625 -1.171875 -0.390625q-0.953125 0 -1.53125 0.65625q-0.5625 0.65625 -0.5625 2.203125q0 1.734375 0.578125 2.4375q0.578125 0.703125 1.546875 0.703125q0.734375 0 1.203125 -0.40625q0.46875 -0.421875 0.65625 -1.421875l2.515625 0.421875q-0.390625 1.734375 -1.515625 2.625q-1.109375 0.875 -2.96875 0.875q-2.125 0 -3.390625 -1.328125q-1.25 -1.34375 -1.25 -3.71875q0 -2.390625 1.265625 -3.71875q1.265625 -1.34375 3.421875 -1.34375q1.765625 0 2.796875 0.765625q1.046875 0.75 1.515625 2.3125zm3.8444824 0.09375l-2.328125 -0.421875q0.40625 -1.40625 1.359375 -2.078125q0.953125 -0.671875 2.84375 -0.671875q1.703125 0 2.546875 0.40625q0.84375 0.40625 1.171875 1.03125q0.34375 0.625 0.34375 2.28125l-0.015625 3.0q0 1.265625 0.109375 1.875q0.125 0.609375 0.46875 1.296875l-2.53125 0q-0.109375 -0.25 -0.25 -0.75q-0.0625 -0.234375 -0.09375 -0.3125q-0.65625 0.640625 -1.40625 0.96875q-0.734375 0.3125 -1.59375 0.3125q-1.484375 0 -2.34375 -0.8125q-0.859375 -0.8125 -0.859375 -2.046875q0 -0.828125 0.390625 -1.46875q0.390625 -0.640625 1.09375 -0.96875q0.703125 -0.34375 2.03125 -0.609375q1.796875 -0.328125 2.484375 -0.625l0 -0.25q0 -0.75 -0.359375 -1.0625q-0.359375 -0.3125 -1.375 -0.3125q-0.6875 0 -1.078125 0.28125q-0.375 0.265625 -0.609375 0.9375zm3.421875 2.078125q-0.484375 0.15625 -1.5625 0.390625q-1.0625 0.21875 -1.390625 0.4375q-0.5 0.359375 -0.5 0.90625q0 0.53125 0.40625 0.9375q0.40625 0.390625 1.015625 0.390625q0.703125 0 1.328125 -0.46875q0.46875 -0.34375 0.609375 -0.84375q0.09375 -0.328125 0.09375 -1.25l0 -0.5zm13.844421 4.640625l-2.5625 0l0 -4.9375q0 -1.5625 -0.171875 -2.015625q-0.15625 -0.46875 -0.53125 -0.71875q-0.359375 -0.265625 -0.875 -0.265625q-0.671875 0 -1.203125 0.375q-0.53125 0.359375 -0.734375 0.96875q-0.1875 0.59375 -0.1875 2.21875l0 4.375l-2.546875 0l0 -9.671875l2.375 0l0 1.421875q1.265625 -1.640625 3.1875 -1.640625q0.84375 0 1.546875 0.3125q0.703125 0.296875 1.0625 0.78125q0.359375 0.46875 0.5 1.078125q0.140625 0.59375 0.140625 1.703125l0 6.015625zm7.036621 -9.671875l0 2.03125l-1.75 0l0 3.90625q0 1.1875 0.046875 1.390625q0.046875 0.1875 0.21875 0.3125q0.1875 0.125 0.4375 0.125q0.359375 0 1.03125 -0.25l0.21875 2.0q-0.890625 0.375 -2.015625 0.375q-0.703125 0 -1.265625 -0.234375q-0.546875 -0.234375 -0.8125 -0.59375q-0.25 -0.375 -0.34375 -1.0q-0.09375 -0.453125 -0.09375 -1.8125l0 -4.21875l-1.171875 0l0 -2.03125l1.171875 0l0 -1.921875l2.578125 -1.5l0 3.421875l1.75 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m809.80664 998.25146l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m669.8574 1016.3538l139.94922 0l0 1.6799927l-139.94922 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/third_party/wpa_supplicant/wpa_supplicant/?q%3Dwpa_supplicant&sa=D&source=editors&ust=1638577908238000&usg=AOvVaw2UhcCz4DmA_EaO4q2tEFM1" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m669.8574 997.22046l139.94922 0l0 22.400024l-139.94922 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#dd7e6b" d="m632.48425 918.68646l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l191.88428 0c1.4020386 0 2.746582 0.5569458 3.737915 1.5482788c0.99139404 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286194 -5.286194 5.286194l-191.88428 0c-2.9194946 0 -5.286194 -2.3667603 -5.286194 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m632.48425 918.68646l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l191.88428 0c1.4020386 0 2.746582 0.5569458 3.737915 1.5482788c0.99139404 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286194 -5.286194 5.286194l-191.88428 0c-2.9194946 0 -5.286194 -2.3667603 -5.286194 -5.286194z" fill-rule="evenodd"/><path fill="#000000" d="m651.04364 935.46857l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0839844 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.9628906 0l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm4.1777344 0l-1.90625 -6.21875l1.09375 0l0.984375 3.59375l0.375 1.328125q0.03125 -0.09375 0.328125 -1.28125l0.984375 -3.640625l1.078125 0l0.9375 3.609375l0.3125 1.1875l0.359375 -1.203125l1.0625 -3.59375l1.03125 0l-1.953125 6.21875l-1.09375 0l-0.984375 -3.734375l-0.25 -1.046875l-1.25 4.78125l-1.109375 0zm11.197266 0l-1.046875 0l0 -6.71875q-0.390625 0.359375 -1.015625 0.734375q-0.609375 0.359375 -1.09375 0.53125l0 -1.015625q0.875 -0.421875 1.53125 -1.0q0.671875 -0.59375 0.953125 -1.15625l0.671875 0l0 8.625zm3.2988281 0l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm4.1777344 0l-1.90625 -6.21875l1.09375 0l0.984375 3.59375l0.375 1.328125q0.03125 -0.09375 0.328125 -1.28125l0.984375 -3.640625l1.078125 0l0.9375 3.609375l0.3125 1.1875l0.359375 -1.203125l1.0625 -3.59375l1.03125 0l-1.953125 6.21875l-1.09375 0l-0.984375 -3.734375l-0.25 -1.046875l-1.25 4.78125l-1.109375 0zm7.5253906 2.390625l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm9.783203 2.3125q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm1.7207031 5.515625l0 -0.765625l7.0 0l0 0.765625l-7.0 0zm7.236328 -4.25l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm10.5 1.859375l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm2.5957031 2.390625l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm5.720703 5.46875l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm5.689453 3.078125l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm2.6972656 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm6.7285156 -2.28125l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm6.0 1.515625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.7050781 3.125l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm8.970703 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm4.7089844 0.9375l-1.046875 0l0 -6.71875q-0.390625 0.359375 -1.015625 0.734375q-0.609375 0.359375 -1.09375 0.53125l0 -1.015625q0.875 -0.421875 1.53125 -1.0q0.671875 -0.59375 0.953125 -1.15625l0.671875 0l0 8.625zm3.2988281 0l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm3.3652344 0l0 -8.59375l1.125 0l0 8.59375l-1.125 0zm3.0058594 0l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm8.970703 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm5.2871094 -1.0625l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.861328 3.703125l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm4.2617188 0l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm7.1464844 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm6.767578 0.84375l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm6.1875 0.28125l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m920.18243 920.23895l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l200.60864 0c1.4019775 0 2.746582 0.5569458 3.737915 1.5482788c0.9914551 0.991333 1.5483398 2.3359375 1.5483398 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286194 -5.286255 5.286194l-200.60864 0c-2.9194946 0 -5.286194 -2.3667603 -5.286194 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m920.18243 920.23895l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l200.60864 0c1.4019775 0 2.746582 0.5569458 3.737915 1.5482788c0.9914551 0.991333 1.5483398 2.3359375 1.5483398 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286194 -5.286255 5.286194l-200.60864 0c-2.9194946 0 -5.286194 -2.3667603 -5.286194 -5.286194z" fill-rule="evenodd"/><path fill="#000000" d="m935.7954 933.9117q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.970703 3.109375l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm3.8085938 0.515625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm6.298828 3.21875l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm3.2871094 0l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0683594 0l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm8.261719 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm10.126953 1.703125l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm9.908203 3.703125l0 -0.78125q-0.59375 0.921875 -1.734375 0.921875q-0.75 0 -1.375 -0.40625q-0.625 -0.421875 -0.96875 -1.15625q-0.34375 -0.734375 -0.34375 -1.6875q0 -0.921875 0.3125 -1.6875q0.3125 -0.765625 0.9375 -1.15625q0.625 -0.40625 1.390625 -0.40625q0.5625 0 1.0 0.234375q0.4375 0.234375 0.71875 0.609375l0 -3.078125l1.046875 0l0 8.59375l-0.984375 0zm-3.328125 -3.109375q0 1.203125 0.5 1.796875q0.5 0.578125 1.1875 0.578125q0.6875 0 1.171875 -0.5625q0.484375 -0.5625 0.484375 -1.71875q0 -1.28125 -0.5 -1.875q-0.484375 -0.59375 -1.203125 -0.59375q-0.703125 0 -1.171875 0.578125q-0.46875 0.5625 -0.46875 1.796875zm10.220703 1.109375l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.455078 1.84375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm6.421875 1.859375l0 -8.59375l1.0625 0l0 4.90625l2.484375 -2.53125l1.375 0l-2.390625 2.296875l2.625 3.921875l-1.296875 0l-2.0625 -3.1875l-0.734375 0.71875l0 2.46875l-1.0625 0zm8.296875 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm0.6464844 -2.171875q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.986328 5.5l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm6.017578 3.078125l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm3.1308594 0l0 -8.59375l1.71875 0l2.03125 6.078125q0.28125 0.859375 0.40625 1.28125q0.140625 -0.46875 0.453125 -1.375l2.0625 -5.984375l1.53125 0l0 8.59375l-1.09375 0l0 -7.1875l-2.5 7.1875l-1.03125 0l-2.484375 -7.3125l0 7.3125l-1.09375 0zm9.511719 -3.109375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm10.017578 3.109375l0 -0.78125q-0.59375 0.921875 -1.734375 0.921875q-0.75 0 -1.375 -0.40625q-0.625 -0.421875 -0.96875 -1.15625q-0.34375 -0.734375 -0.34375 -1.6875q0 -0.921875 0.3125 -1.6875q0.3125 -0.765625 0.9375 -1.15625q0.625 -0.40625 1.390625 -0.40625q0.5625 0 1.0 0.234375q0.4375 0.234375 0.71875 0.609375l0 -3.078125l1.046875 0l0 8.59375l-0.984375 0zm-3.328125 -3.109375q0 1.203125 0.5 1.796875q0.5 0.578125 1.1875 0.578125q0.6875 0 1.171875 -0.5625q0.484375 -0.5625 0.484375 -1.71875q0 -1.28125 -0.5 -1.875q-0.484375 -0.59375 -1.203125 -0.59375q-0.703125 0 -1.171875 0.578125q-0.46875 0.5625 -0.46875 1.796875zm10.220703 1.109375l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.876953 3.703125l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm10.089844 0l0 -8.59375l1.71875 0l2.03125 6.078125q0.28125 0.859375 0.40625 1.28125q0.140625 -0.46875 0.453125 -1.375l2.0625 -5.984375l1.53125 0l0 8.59375l-1.09375 0l0 -7.1875l-2.5 7.1875l-1.03125 0l-2.484375 -7.3125l0 7.3125l-1.09375 0zm13.964844 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.7050781 3.125l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm10.736328 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.5019531 3.640625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm10.251953 1.21875l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.861328 3.703125l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm7.6835938 0l-1.046875 0l0 -6.71875q-0.390625 0.359375 -1.015625 0.734375q-0.609375 0.359375 -1.09375 0.53125l0 -1.015625q0.875 -0.421875 1.53125 -1.0q0.671875 -0.59375 0.953125 -1.15625l0.671875 0l0 8.625z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m940.31494 1026.2362l175.9685 0l0 37.57483l-175.9685 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m940.31494 1026.2362l175.9685 0l0 37.57483l-175.9685 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m996.16547 1036.2672l64.26752 0l0 21.45288l-64.26752 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m997.35297 1053.1562l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1917114 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm5.6447754 0l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.891357 4.90625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm17.040771 0l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.891357 -6.5625l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1448975 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1060.433 1036.2672l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m996.16547 1054.3695l64.26752 0l0 1.6800537l-64.26752 0l0 -1.6800537z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://docs.google.com/drawings/d/1uGg3EKV0wzma3FBQm94c45M2xV0tmQcNdbtygUnOjlI/edit&sa=D&source=editors&ust=1638577908247000&usg=AOvVaw1gEjzvFhCE0y__YdgilinR" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m996.16547 1035.2362l64.26752 0l0 22.400024l-64.26752 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#8e7cc3" d="m1138.7454 1026.2362l152.25195 0l0 37.57483l-152.25195 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1138.7454 1026.2362l152.25195 0l0 37.57483l-152.25195 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1190.508 1036.2672l48.726685 0l0 21.45288l-48.726685 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1191.6956 1053.1562l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1916504 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm5.6448975 0l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm15.047485 8.609375l0 -4.734375q-0.375 0.546875 -1.0625 0.90625q-0.6875 0.34375 -1.46875 0.34375q-1.71875 0 -2.96875 -1.375q-1.234375 -1.375 -1.234375 -3.765625q0 -1.46875 0.5 -2.625q0.515625 -1.15625 1.46875 -1.75q0.96875 -0.59375 2.109375 -0.59375q1.796875 0 2.828125 1.515625l0 -1.296875l1.46875 0l0 13.375l-1.640625 0zm-5.046875 -8.5625q0 1.859375 0.78125 2.796875q0.78125 0.9375 1.875 0.9375q1.046875 0 1.796875 -0.890625q0.765625 -0.890625 0.765625 -2.703125q0 -1.9375 -0.796875 -2.90625q-0.796875 -0.96875 -1.875 -0.96875q-1.0625 0 -1.8125 0.90625q-0.734375 0.90625 -0.734375 2.828125zm9.266357 4.859375l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm15.540894 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1239.2347 1036.2672l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1190.508 1054.3695l48.726685 0l0 1.6800537l-48.726685 0l0 -1.6800537z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://docs.google.com/drawings/d/1uGg3EKV0wzma3FBQm94c45M2xV0tmQcNdbtygUnOjlI/edit&sa=D&source=editors&ust=1638577908249000&usg=AOvVaw2jAXNQ6dTte6AmOn4yceh2" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1190.508 1035.2362l48.726685 0l0 22.400024l-48.726685 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m1098.7843 229.11023l498.48828 0l0 37.5748l-498.48828 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1098.7843 229.11023l498.48828 0l0 37.5748l-498.48828 0z" fill-rule="evenodd"/><path fill="#000000" d="m1263.9747 246.86461l1.0625 -0.09375q0.078125 0.65625 0.359375 1.0625q0.28125 0.40625 0.859375 0.671875q0.59375 0.25 1.328125 0.25q0.640625 0 1.140625 -0.1875q0.5 -0.203125 0.734375 -0.53125q0.25 -0.34375 0.25 -0.734375q0 -0.40625 -0.234375 -0.703125q-0.234375 -0.3125 -0.765625 -0.515625q-0.359375 -0.140625 -1.546875 -0.421875q-1.171875 -0.28125 -1.640625 -0.53125q-0.625 -0.328125 -0.921875 -0.796875q-0.296875 -0.484375 -0.296875 -1.078125q0 -0.640625 0.359375 -1.203125q0.375 -0.578125 1.078125 -0.859375q0.71875 -0.296875 1.578125 -0.296875q0.953125 0 1.6875 0.3125q0.734375 0.296875 1.125 0.90625q0.390625 0.59375 0.421875 1.34375l-1.09375 0.078125q-0.09375 -0.8125 -0.609375 -1.21875q-0.5 -0.421875 -1.484375 -0.421875q-1.03125 0 -1.5 0.375q-0.46875 0.375 -0.46875 0.90625q0 0.46875 0.328125 0.765625q0.328125 0.296875 1.703125 0.609375q1.390625 0.3125 1.90625 0.546875q0.75 0.359375 1.109375 0.890625q0.359375 0.515625 0.359375 1.21875q0 0.6875 -0.390625 1.296875q-0.390625 0.59375 -1.125 0.9375q-0.734375 0.328125 -1.65625 0.328125q-1.171875 0 -1.96875 -0.328125q-0.78125 -0.34375 -1.234375 -1.03125q-0.4375 -0.6875 -0.453125 -1.546875zm12.503906 0.765625l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm8.173828 2.765625l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm3.3339844 0l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm1.0371094 -6.4375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.6660156 0l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm6.470703 0.515625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm5.580078 1.359375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm14.662109 0.84375q-0.515625 0.578125 -1.140625 0.875q-0.609375 0.28125 -1.328125 0.28125q-1.3125 0 -2.09375 -0.890625q-0.625 -0.71875 -0.625 -1.625q0 -0.796875 0.515625 -1.4375q0.515625 -0.640625 1.53125 -1.125q-0.578125 -0.671875 -0.78125 -1.078125q-0.1875 -0.421875 -0.1875 -0.8125q0 -0.765625 0.609375 -1.328125q0.609375 -0.578125 1.53125 -0.578125q0.875 0 1.421875 0.546875q0.5625 0.53125 0.5625 1.28125q0 1.234375 -1.609375 2.09375l1.53125 1.96875q0.265625 -0.515625 0.40625 -1.203125l1.109375 0.234375q-0.28125 1.125 -0.765625 1.859375q0.59375 0.78125 1.34375 1.3125l-0.71875 0.84375q-0.640625 -0.421875 -1.3125 -1.21875zm-2.140625 -4.46875q0.6875 -0.40625 0.875 -0.703125q0.203125 -0.3125 0.203125 -0.6875q0 -0.4375 -0.28125 -0.71875q-0.265625 -0.28125 -0.6875 -0.28125q-0.421875 0 -0.71875 0.28125q-0.28125 0.28125 -0.28125 0.671875q0 0.203125 0.109375 0.421875q0.109375 0.21875 0.3125 0.46875l0.46875 0.546875zm1.484375 3.640625l-1.9375 -2.40625q-0.859375 0.515625 -1.15625 0.953125q-0.296875 0.4375 -0.296875 0.859375q0 0.53125 0.40625 1.09375q0.421875 0.5625 1.1875 0.5625q0.46875 0 0.96875 -0.296875q0.515625 -0.296875 0.828125 -0.765625zm13.353516 -1.171875l1.125 0.296875q-0.359375 1.390625 -1.28125 2.125q-0.921875 0.734375 -2.265625 0.734375q-1.390625 0 -2.265625 -0.5625q-0.875 -0.5625 -1.328125 -1.625q-0.453125 -1.078125 -0.453125 -2.3125q0 -1.34375 0.515625 -2.34375q0.515625 -1.0 1.453125 -1.515625q0.953125 -0.515625 2.09375 -0.515625q1.28125 0 2.15625 0.65625q0.890625 0.65625 1.234375 1.84375l-1.125 0.265625q-0.296875 -0.9375 -0.875 -1.359375q-0.5625 -0.4375 -1.421875 -0.4375q-0.984375 0 -1.65625 0.484375q-0.65625 0.46875 -0.9375 1.265625q-0.265625 0.796875 -0.265625 1.65625q0 1.09375 0.3125 1.90625q0.328125 0.8125 1.0 1.21875q0.671875 0.40625 1.46875 0.40625q0.953125 0 1.609375 -0.546875q0.671875 -0.546875 0.90625 -1.640625zm2.0097656 -0.09375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.986328 3.109375l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm6.923828 0l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0839844 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.4628906 0.515625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm10.080078 3.21875l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm2.5800781 0l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm8.074219 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm5.001953 2.1875l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm1.0371094 -6.4375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.2753906 -3.109375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.986328 3.109375l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm11.6328125 0l-2.28125 -8.59375l1.171875 0l1.3125 5.640625q0.203125 0.875 0.359375 1.75q0.328125 -1.375 0.390625 -1.59375l1.625 -5.796875l1.375 0l1.234375 4.34375q0.453125 1.625 0.671875 3.046875q0.15625 -0.8125 0.421875 -1.875l1.34375 -5.515625l1.140625 0l-2.34375 8.59375l-1.109375 0l-1.796875 -6.546875q-0.234375 -0.8125 -0.28125 -1.0q-0.125 0.578125 -0.25 1.0l-1.8125 6.546875l-1.171875 0zm13.734375 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm6.845703 3.703125l-0.984375 0l0 -8.59375l1.0625 0l0 3.0625q0.671875 -0.828125 1.703125 -0.828125q0.578125 0 1.078125 0.234375q0.515625 0.21875 0.84375 0.640625q0.34375 0.421875 0.53125 1.015625q0.1875 0.59375 0.1875 1.265625q0 1.59375 -0.796875 2.46875q-0.796875 0.875 -1.890625 0.875q-1.109375 0 -1.734375 -0.921875l0 0.78125zm-0.015625 -3.15625q0 1.109375 0.3125 1.609375q0.5 0.8125 1.34375 0.8125q0.6875 0 1.1875 -0.59375q0.515625 -0.59375 0.515625 -1.796875q0 -1.21875 -0.484375 -1.796875q-0.484375 -0.578125 -1.171875 -0.578125q-0.6875 0 -1.203125 0.609375q-0.5 0.59375 -0.5 1.734375zm11.486328 -5.4375l1.140625 0l0 4.96875q0 1.296875 -0.296875 2.0625q-0.296875 0.75 -1.0625 1.234375q-0.765625 0.46875 -2.0 0.46875q-1.203125 0 -1.984375 -0.40625q-0.765625 -0.421875 -1.09375 -1.203125q-0.328125 -0.796875 -0.328125 -2.15625l0 -4.96875l1.140625 0l0 4.953125q0 1.125 0.203125 1.65625q0.21875 0.53125 0.71875 0.828125q0.515625 0.28125 1.25 0.28125q1.25 0 1.78125 -0.5625q0.53125 -0.578125 0.53125 -2.203125l0 -4.953125zm3.2285156 8.59375l0 -8.59375l1.125 0l0 8.59375l-1.125 0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m878.19977 230.4147l171.05511 0l0 37.5748l-171.05511 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m878.19977 230.4147l171.05511 0l0 37.5748l-171.05511 0z" fill-rule="evenodd"/><path fill="#000000" d="m923.26733 248.16907l1.0625 -0.09375q0.078125 0.65625 0.359375 1.0625q0.28125 0.40625 0.859375 0.671875q0.59375 0.25 1.328125 0.25q0.640625 0 1.140625 -0.1875q0.5 -0.203125 0.734375 -0.53125q0.25 -0.34375 0.25 -0.734375q0 -0.40625 -0.234375 -0.703125q-0.234375 -0.3125 -0.765625 -0.515625q-0.359375 -0.140625 -1.546875 -0.421875q-1.171875 -0.28125 -1.640625 -0.53125q-0.625 -0.328125 -0.921875 -0.796875q-0.296875 -0.484375 -0.296875 -1.078125q0 -0.640625 0.359375 -1.203125q0.375 -0.578125 1.078125 -0.859375q0.71875 -0.296875 1.578125 -0.296875q0.953125 0 1.6875 0.3125q0.734375 0.296875 1.125 0.90625q0.390625 0.59375 0.421875 1.34375l-1.09375 0.078125q-0.09375 -0.8125 -0.609375 -1.21875q-0.5 -0.421875 -1.484375 -0.421875q-1.03125 0 -1.5 0.375q-0.46875 0.375 -0.46875 0.90625q0 0.46875 0.328125 0.765625q0.328125 0.296875 1.703125 0.609375q1.390625 0.3125 1.90625 0.546875q0.75 0.359375 1.109375 0.890625q0.359375 0.515625 0.359375 1.21875q0 0.6875 -0.390625 1.296875q-0.390625 0.59375 -1.125 0.9375q-0.734375 0.328125 -1.65625 0.328125q-1.171875 0 -1.96875 -0.328125q-0.78125 -0.34375 -1.234375 -1.03125q-0.4375 -0.6875 -0.453125 -1.546875zm8.207031 5.15625l-0.125 -0.984375q0.34375 0.09375 0.609375 0.09375q0.34375 0 0.546875 -0.125q0.21875 -0.109375 0.359375 -0.3125q0.09375 -0.171875 0.328125 -0.796875q0.015625 -0.078125 0.09375 -0.25l-2.375 -6.234375l1.140625 0l1.296875 3.59375q0.25 0.6875 0.453125 1.453125q0.1875 -0.734375 0.4375 -1.421875l1.328125 -3.625l1.046875 0l-2.359375 6.328125q-0.390625 1.015625 -0.59375 1.40625q-0.28125 0.53125 -0.65625 0.765625q-0.359375 0.25 -0.859375 0.25q-0.296875 0 -0.671875 -0.140625zm5.625 -4.25l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm8.71875 0.921875l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm5.2871094 -1.0625l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.876953 3.703125l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm15.425781 0l0 -7.578125l-2.828125 0l0 -1.015625l6.8125 0l0 1.015625l-2.84375 0l0 7.578125l-1.140625 0zm4.5566406 0l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm8.074219 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.6582031 5.515625l-0.125 -0.984375q0.34375 0.09375 0.609375 0.09375q0.34375 0 0.546875 -0.125q0.21875 -0.109375 0.359375 -0.3125q0.09375 -0.171875 0.328125 -0.796875q0.015625 -0.078125 0.09375 -0.25l-2.375 -6.234375l1.140625 0l1.296875 3.59375q0.25 0.6875 0.453125 1.453125q0.1875 -0.734375 0.4375 -1.421875l1.328125 -3.625l1.046875 0l-2.359375 6.328125q-0.390625 1.015625 -0.59375 1.40625q-0.28125 0.53125 -0.65625 0.765625q-0.359375 0.25 -0.859375 0.25q-0.296875 0 -0.671875 -0.140625zm15.146484 -10.984375l1.140625 0l0 4.96875q0 1.296875 -0.296875 2.0625q-0.296875 0.75 -1.0625 1.234375q-0.765625 0.46875 -2.0 0.46875q-1.203125 0 -1.984375 -0.40625q-0.765625 -0.421875 -1.09375 -1.203125q-0.328125 -0.796875 -0.328125 -2.15625l0 -4.96875l1.140625 0l0 4.953125q0 1.125 0.203125 1.65625q0.21875 0.53125 0.71875 0.828125q0.515625 0.28125 1.25 0.28125q1.25 0 1.78125 -0.5625q0.53125 -0.578125 0.53125 -2.203125l0 -4.953125zm3.2285156 8.59375l0 -8.59375l1.125 0l0 8.59375l-1.125 0z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m1234.0027 634.3768l0 0c0 -2.9194946 2.3666992 -5.286194 5.286255 -5.286194l74.65588 0c1.4019775 0 2.746582 0.55688477 3.737915 1.5482788c0.991333 0.991333 1.5483398 2.3358765 1.5483398 3.737915l0 21.144104c0 2.9194946 -2.3666992 5.286194 -5.286255 5.286194l-74.65588 0l0 0c-2.9195557 0 -5.286255 -2.3666992 -5.286255 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1234.0027 634.3768l0 0c0 -2.9194946 2.3666992 -5.286194 5.286255 -5.286194l74.65588 0c1.4019775 0 2.746582 0.55688477 3.737915 1.5482788c0.991333 0.991333 1.5483398 2.3358765 1.5483398 3.737915l0 21.144104c0 2.9194946 -2.3666992 5.286194 -5.286255 5.286194l-74.65588 0l0 0c-2.9195557 0 -5.286255 -2.3666992 -5.286255 -5.286194z" fill-rule="evenodd"/><path fill="#000000" d="m1249.907 649.74884l0 -9.546875l1.265625 0l0 3.921875l4.953125 0l0 -3.921875l1.265625 0l0 9.546875l-1.265625 0l0 -4.5l-4.953125 0l0 4.5l-1.265625 0zm14.171997 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.4541016 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0531006 2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm2.921753 -7.796875l0.296875 -0.921875q1.03125 0.375 1.5 0.640625q-0.125 -1.1875 -0.125 -1.625l0.9375 0q-0.015625 0.640625 -0.140625 1.609375q0.65625 -0.328125 1.53125 -0.625l0.296875 0.921875q-0.828125 0.28125 -1.625 0.375q0.40625 0.34375 1.125 1.21875l-0.78125 0.5625q-0.375 -0.515625 -0.890625 -1.40625q-0.484375 0.921875 -0.84375 1.40625l-0.765625 -0.5625q0.75 -0.921875 1.078125 -1.21875q-0.84375 -0.171875 -1.59375 -0.375z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m496.78195 230.74278l171.05515 0l0 37.574814l-171.05515 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m496.78195 230.74278l171.05515 0l0 37.574814l-171.05515 0z" fill-rule="evenodd"/><path fill="#000000" d="m534.2685 251.26279l0 -8.59375l5.796875 0l0 1.015625l-4.65625 0l0 2.65625l4.03125 0l0 1.015625l-4.03125 0l0 3.90625l-1.140625 0zm11.392578 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm10.126953 1.703125l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm9.908203 3.703125l0 -0.78125q-0.59375 0.921875 -1.734375 0.921875q-0.75 0 -1.375 -0.40625q-0.625 -0.421875 -0.96875 -1.15625q-0.34375 -0.734375 -0.34375 -1.6875q0 -0.921875 0.3125 -1.6875q0.3125 -0.765625 0.9375 -1.15625q0.625 -0.40625 1.390625 -0.40625q0.5625 0 1.0 0.234375q0.4375 0.234375 0.71875 0.609375l0 -3.078125l1.046875 0l0 8.59375l-0.984375 0zm-3.328125 -3.109375q0 1.203125 0.5 1.796875q0.5 0.578125 1.1875 0.578125q0.6875 0 1.171875 -0.5625q0.484375 -0.5625 0.484375 -1.71875q0 -1.28125 -0.5 -1.875q-0.484375 -0.59375 -1.203125 -0.59375q-0.703125 0 -1.171875 0.578125q-0.46875 0.5625 -0.46875 1.796875zm6.939453 3.109375l-0.984375 0l0 -8.59375l1.0625 0l0 3.0625q0.671875 -0.828125 1.703125 -0.828125q0.578125 0 1.078125 0.234375q0.515625 0.21875 0.84375 0.640625q0.34375 0.421875 0.53125 1.015625q0.1875 0.59375 0.1875 1.265625q0 1.59375 -0.796875 2.46875q-0.796875 0.875 -1.890625 0.875q-1.109375 0 -1.734375 -0.921875l0 0.78125zm-0.015625 -3.15625q0 1.109375 0.3125 1.609375q0.5 0.8125 1.34375 0.8125q0.6875 0 1.1875 -0.59375q0.515625 -0.59375 0.515625 -1.796875q0 -1.21875 -0.484375 -1.796875q-0.484375 -0.578125 -1.171875 -0.578125q-0.6875 0 -1.203125 0.609375q-0.5 0.59375 -0.5 1.734375zm9.783203 2.390625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm6.767578 0.84375l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm1.9375 2.28125l0 -8.59375l1.0625 0l0 4.90625l2.484375 -2.53125l1.375 0l-2.390625 2.296875l2.625 3.921875l-1.296875 0l-2.0625 -3.1875l-0.734375 0.71875l0 2.46875l-1.0625 0zm9.474609 0l0 -8.59375l3.8125 0q1.15625 0 1.75 0.234375q0.59375 0.234375 0.953125 0.828125q0.359375 0.578125 0.359375 1.28125q0 0.921875 -0.59375 1.546875q-0.59375 0.625 -1.828125 0.796875q0.453125 0.21875 0.6875 0.421875q0.5 0.453125 0.9375 1.140625l1.5 2.34375l-1.4375 0l-1.125 -1.78125q-0.5 -0.78125 -0.828125 -1.1875q-0.3125 -0.40625 -0.578125 -0.5625q-0.25 -0.171875 -0.515625 -0.25q-0.1875 -0.03125 -0.625 -0.03125l-1.328125 0l0 3.8125l-1.140625 0zm1.140625 -4.796875l2.453125 0q0.765625 0 1.203125 -0.15625q0.453125 -0.171875 0.671875 -0.515625q0.234375 -0.359375 0.234375 -0.78125q0 -0.609375 -0.453125 -1.0q-0.4375 -0.390625 -1.390625 -0.390625l-2.71875 0l0 2.84375zm11.634766 2.796875l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.876953 6.09375l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm5.330078 -0.03125q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.970703 3.109375l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm6.3085938 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm0.6152344 -0.921875l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5z" fill-rule="nonzero"/><defs><linearGradient id="p.5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(13.81608296015827 0.0 0.0 13.81608296015827 0.0 0.0)" spreadMethod="pad" x1="58.502680497066756" y1="22.681664627686473" x2="48.733326564729104" y2="12.912126659763194"><stop offset="0.0" stop-color="#3c78d8"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.5)" d="m557.11255 300.8466l0 0c0 -3.4587402 2.803894 -6.2626038 6.2626343 -6.2626038l219.85272 0c1.6609497 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8342896 2.7673645 1.8342896 4.428314l0 25.049622c0 3.4587097 -2.803894 6.2625732 -6.2626343 6.2625732l-219.85272 0c-3.4587402 0 -6.2626343 -2.8038635 -6.2626343 -6.2625732z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m557.11255 300.8466l0 0c0 -3.4587402 2.803894 -6.2626038 6.2626343 -6.2626038l219.85272 0c1.6609497 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8342896 2.7673645 1.8342896 4.428314l0 25.049622c0 3.4587097 -2.803894 6.2625732 -6.2626343 6.2625732l-219.85272 0c-3.4587402 0 -6.2626343 -2.8038635 -6.2626343 -6.2625732z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m575.1465 306.15265l196.31012 0l0 15.32605l-196.31012 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m580.5371 315.68698l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0164795 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374878 0l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm2.421753 1.046875l-2.125 -6.90625l1.21875 0l1.09375 3.984375l0.421875 1.484375q0.015625 -0.109375 0.359375 -1.421875l1.09375 -4.046875l1.203125 0l1.03125 4.0l0.34375 1.328125l0.40625 -1.34375l1.171875 -3.984375l1.140625 0l-2.15625 6.90625l-1.21875 0l-1.09375 -4.140625l-0.265625 -1.171875l-1.40625 5.3125l-1.21875 0zm7.906372 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6312256 3.453125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.4696045 0l0 -9.546875l1.171875 0l0 5.453125l2.765625 -2.8125l1.515625 0l-2.640625 2.5625l2.90625 4.34375l-1.4375 0l-2.28125 -3.53125l-0.828125 0.796875l0 2.734375l-1.171875 0zm5.5703125 2.65625l0 -0.859375l7.765625 0l0 0.859375l-7.765625 0zm8.490601 -2.65625l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm11.037476 3.265625q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm2.9749756 3.46875l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm5.5392456 -1.046875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm1.1405029 1.046875l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.7406006 0l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374817 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm10.664978 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 -4.734375l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm-1.484375 10.875l0.21875 -1.0q0.359375 0.09375 0.546875 0.09375q0.359375 0 0.53125 -0.25q0.1875 -0.234375 0.1875 -1.1875l0 -7.25l1.171875 0l0 7.28125q0 1.28125 -0.328125 1.78125q-0.4375 0.65625 -1.40625 0.65625q-0.484375 0 -0.921875 -0.125zm4.0079346 -6.140625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m771.4566 306.15265l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m575.1465 319.0849l196.31012 0l0 1.2000122l-196.31012 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/services/network_health/public/mojom/network_health.mojom;l%3D9?q%3Dnetwork_health.mojom%26sq%3D%26ss%3Dchromium&sa=D&source=editors&ust=1638577908260000&usg=AOvVaw28ybHi5HGyeCAUlmf__dTZ" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m575.1465 305.41824l196.31012 0l0 16.0l-196.31012 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m1160.627 300.8479l0 0c0 -3.4587402 2.803955 -6.2626038 6.2626953 -6.2626038l219.85266 0c1.6610107 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8343506 2.7673645 1.8343506 4.428314l0 25.049622c0 3.4587097 -2.803955 6.2625732 -6.2626953 6.2625732l-219.85266 0c-3.4587402 0 -6.2626953 -2.8038635 -6.2626953 -6.2625732z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1160.627 300.8479l0 0c0 -3.4587402 2.803955 -6.2626038 6.2626953 -6.2626038l219.85266 0c1.6610107 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8343506 2.7673645 1.8343506 4.428314l0 25.049622c0 3.4587097 -2.803955 6.2625732 -6.2626953 6.2625732l-219.85266 0c-3.4587402 0 -6.2626953 -2.8038635 -6.2626953 -6.2625732z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1182.738 306.15396l188.15588 0l0 15.32605l-188.15588 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1188.1287 315.6883l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0166016 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm7.890503 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm6.8828125 0.3125l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9610596 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5079346 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.8656006 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.4923096 -0.859375q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm2.9749756 3.46875l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm3.3758545 2.65625l0 -0.859375l7.765625 0l0 0.859375l-7.765625 0zm8.021851 -4.71875l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm11.8671875 -0.15625l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm5.671753 1.046875l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.8812256 2.65625l0 -9.5625l1.078125 0l0 0.890625q0.375 -0.53125 0.84375 -0.78125q0.484375 -0.265625 1.15625 -0.265625q0.875 0 1.546875 0.453125q0.6875 0.453125 1.03125 1.28125q0.34375 0.828125 0.34375 1.828125q0 1.046875 -0.375 1.90625q-0.375 0.84375 -1.109375 1.296875q-0.71875 0.453125 -1.53125 0.453125q-0.578125 0 -1.046875 -0.25q-0.46875 -0.25 -0.765625 -0.625l0 3.375l-1.171875 0zm1.0625 -6.078125q0 1.34375 0.53125 1.984375q0.546875 0.625 1.3125 0.625q0.78125 0 1.34375 -0.65625q0.5625 -0.65625 0.5625 -2.046875q0 -1.3125 -0.546875 -1.96875q-0.546875 -0.671875 -1.296875 -0.671875q-0.75 0 -1.328125 0.703125q-0.578125 0.703125 -0.578125 2.03125zm6.6781006 3.421875l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374878 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm10.664917 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 -4.734375l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm-1.484375 10.875l0.21875 -1.0q0.359375 0.09375 0.546875 0.09375q0.359375 0 0.53125 -0.25q0.1875 -0.234375 0.1875 -1.1875l0 -7.25l1.171875 0l0 7.28125q0 1.28125 -0.328125 1.78125q-0.4375 0.65625 -1.40625 0.65625q-0.484375 0 -0.921875 -0.125zm4.0080566 -6.140625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1370.8939 306.15396l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1182.738 319.0862l188.15588 0l0 1.2000122l-188.15588 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/main:ash/services/cellular_setup/public/mojom/cellular_setup.mojom?q%3Dcellular_setup.mojom%26ss%3Dchromium&sa=D&source=editors&ust=1638577908265000&usg=AOvVaw0URa34zZn9Fxpr16lgI-Ar" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1182.738 305.41956l188.15588 0l0 16.0l-188.15588 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m687.49084 230.74278l171.05511 0l0 37.574814l-171.05511 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m687.49084 230.74278l171.05511 0l0 37.574814l-171.05511 0z" fill-rule="evenodd"/><path fill="#000000" d="m735.25964 251.26279l0 -8.59375l2.96875 0q1.0 0 1.53125 0.125q0.734375 0.171875 1.25 0.609375q0.6875 0.578125 1.015625 1.484375q0.34375 0.890625 0.34375 2.03125q0 0.984375 -0.234375 1.734375q-0.21875 0.75 -0.578125 1.25q-0.359375 0.5 -0.796875 0.78125q-0.421875 0.28125 -1.015625 0.4375q-0.59375 0.140625 -1.375 0.140625l-3.109375 0zm1.140625 -1.015625l1.828125 0q0.859375 0 1.34375 -0.15625q0.484375 -0.15625 0.765625 -0.453125q0.40625 -0.390625 0.625 -1.078125q0.234375 -0.6875 0.234375 -1.65625q0 -1.34375 -0.453125 -2.0625q-0.4375 -0.734375 -1.0625 -0.984375q-0.46875 -0.171875 -1.46875 -0.171875l-1.8125 0l0 6.5625zm7.4003906 -6.359375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm6.7285156 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.5019531 3.640625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm6.001953 3.21875l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm6.283203 -3.109375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.564453 1.25l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm8.71875 0.921875l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm1.0371094 -6.4375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm6.7285156 -2.28125l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm1.515625 0.421875l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm15.521484 -6.734375l1.140625 0l0 4.96875q0 1.296875 -0.296875 2.0625q-0.296875 0.75 -1.0625 1.234375q-0.765625 0.46875 -2.0 0.46875q-1.203125 0 -1.984375 -0.40625q-0.765625 -0.421875 -1.09375 -1.203125q-0.328125 -0.796875 -0.328125 -2.15625l0 -4.96875l1.140625 0l0 4.953125q0 1.125 0.203125 1.65625q0.21875 0.53125 0.71875 0.828125q0.515625 0.28125 1.25 0.28125q1.25 0 1.78125 -0.5625q0.53125 -0.578125 0.53125 -2.203125l0 -4.953125zm3.2285156 8.59375l0 -8.59375l1.125 0l0 8.59375l-1.125 0z" fill-rule="nonzero"/><path fill="#6d9eeb" d="m965.1916 363.38846l171.05511 0l0 93.25983l-171.05511 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m965.1916 363.38846l171.05511 0l0 93.25983l-171.05511 0z" fill-rule="evenodd"/><path fill="#000000" d="m1009.87933 383.73282l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.6171875 2.984375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 7.359375l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015564 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.54681396 -0.296875 -0.90618896 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65618896 0.765625 1.578064 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.593689 0.84375q-0.6875 0.84375 -0.6875 2.4375zm10.695251 2.84375l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm5.8515625 0l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm11.375 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm12.453125 4.953125l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.453125 1.859375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm8.40625 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm6.7890625 0.234375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5703125 4.171875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m1018.1567 406.74844l0 -11.453125l3.953125 0q1.328125 0 2.031189 0.15625q0.984375 0.234375 1.6875 0.828125q0.90625 0.765625 1.34375 1.953125q0.453125 1.1875 0.453125 2.71875q0 1.3125 -0.3125 2.328125q-0.296875 1.0 -0.78125 1.65625q-0.46875 0.65625 -1.03125 1.046875q-0.5625 0.375 -1.375 0.578125q-0.79681396 0.1875 -1.828064 0.1875l-4.140625 0zm1.515625 -1.359375l2.453125 0q1.125 0 1.765625 -0.203125q0.65618896 -0.21875 1.031189 -0.59375q0.546875 -0.546875 0.84375 -1.453125q0.296875 -0.90625 0.296875 -2.203125q0 -1.796875 -0.59375 -2.765625q-0.578125 -0.96875 -1.421875 -1.296875q-0.60931396 -0.234375 -1.968689 -0.234375l-2.40625 0l0 8.75zm15.539001 -1.3125l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2421875 1.90625l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm5.65625 1.78125l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m1005.21136 425.74844l0 -11.453125l2.28125 0l2.71875 8.109375q0.375 1.125 0.546875 1.6875q0.1875 -0.625 0.609375 -1.828125l2.734375 -7.96875l2.046875 0l0 11.453125l-1.46875 0l0 -9.59375l-3.328125 9.59375l-1.359375 0l-3.3125 -9.75l0 9.75l-1.46875 0zm18.609375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.67181396 0.25 0.98431396 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21868896 -0.4375 -0.28118896 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015015 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.3046875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.3359375 4.859375l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.6640625 1.625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm11.9609375 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625z" fill-rule="nonzero"/><path fill="#dd7e6b" d="m604.1142 1278.9318l271.43304 0l0 101.03931l-271.43304 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m604.1142 1278.9318l271.43304 0l0 101.03931l-271.43304 0z" fill-rule="evenodd"/><path fill="#000000" d="m649.79584 1336.3715l-3.53125 -13.359375l1.8125 0l2.03125 8.765625q0.328125 1.375 0.5625 2.71875q0.5 -2.140625 0.59375 -2.46875l2.546875 -9.015625l2.125 0l1.921875 6.765625q0.71875 2.515625 1.03125 4.71875q0.265625 -1.265625 0.671875 -2.890625l2.09375 -8.59375l1.78125 0l-3.671875 13.359375l-1.703125 0l-2.8125 -10.171875q-0.359375 -1.28125 -0.421875 -1.5625q-0.203125 0.90625 -0.390625 1.5625l-2.828125 10.171875l-1.8125 0zm15.077393 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.4417114 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm9.484375 0l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm14.7751465 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.563232 4.84375l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141357 5.765625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.020935 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1292114 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm17.322083 0l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004211 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1881714 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.8533325 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#d9d9d9" d="m9.328084 1118.9843l1805.9528 0l0 148.25195l-1805.9528 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m9.328084 1118.9843l1805.9528 0l0 148.25195l-1805.9528 0z" fill-rule="evenodd"/><path fill="#000000" d="m886.6997 1145.9043l0 -13.359375l1.78125 0l0 6.625l6.625 -6.625l2.390625 0l-5.59375 5.421875l5.84375 7.9375l-2.328125 0l-4.765625 -6.765625l-2.171875 2.140625l0 4.625l-1.78125 0zm18.943542 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2283325 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000671 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.094482 5.765625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0z" fill-rule="nonzero"/><path fill="#f6b26b" d="m9.333333 618.1103l322.07874 0l0 295.27563l-322.07874 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m9.333333 618.1103l322.07874 0l0 295.27563l-322.07874 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m106.35317 628.42377l128.03906 0l0 27.597656l-128.03906 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m108.10317 650.1503l0 -17.1875l5.5625 0q3.171875 0 4.125 0.265625q1.484375 0.390625 2.46875 1.6875q1.0 1.28125 1.0 3.34375q0 1.578125 -0.578125 2.65625q-0.5625 1.078125 -1.453125 1.703125q-0.890625 0.609375 -1.796875 0.796875q-1.25 0.25 -3.59375 0.25l-2.265625 0l0 6.484375l-3.46875 0zm3.46875 -14.28125l0 4.875l1.890625 0q2.0625 0 2.75 -0.265625q0.6875 -0.265625 1.078125 -0.84375q0.390625 -0.578125 0.390625 -1.328125q0 -0.9375 -0.546875 -1.546875q-0.546875 -0.609375 -1.390625 -0.765625q-0.625 -0.125 -2.5 -0.125l-1.671875 0zm14.9765625 5.625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.6718674 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.0312424 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3124924 -0.4375 3.2031174 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.8906174 0 -1.3906174 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.4062424 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.3593674 0.28125 -1.7812424 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3124924 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm12.191406 -6.46875l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921875l0 4.390625l2.25 0zm13.1328125 3.6875l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm5.7695312 -8.421875l0 6.328125q1.59375 -1.875 3.8125 -1.875q1.140625 0 2.046875 0.421875q0.921875 0.421875 1.375 1.078125q0.46875 0.65625 0.640625 1.453125q0.171875 0.796875 0.171875 2.484375l0 7.296875l-3.296875 0l0 -6.578125q0 -1.953125 -0.1875 -2.484375q-0.1875 -0.53125 -0.671875 -0.828125q-0.46875 -0.3125 -1.171875 -0.3125q-0.828125 0 -1.46875 0.40625q-0.640625 0.390625 -0.953125 1.1875q-0.296875 0.796875 -0.296875 2.375l0 6.234375l-3.28125 0l0 -17.1875l3.28125 0zm11.285156 4.734375l3.078125 0l0 1.828125q0.59375 -0.9375 1.609375 -1.515625q1.03125 -0.59375 2.265625 -0.59375q2.171875 0 3.671875 1.703125q1.515625 1.703125 1.515625 4.734375q0 3.125 -1.53125 4.859375q-1.515625 1.71875 -3.671875 1.71875q-1.03125 0 -1.875 -0.40625q-0.84375 -0.421875 -1.765625 -1.40625l0 6.265625l-3.296875 0l0 -17.1875zm3.265625 6.015625q0 2.09375 0.828125 3.109375q0.828125 1.0 2.03125 1.0q1.140625 0 1.90625 -0.921875q0.765625 -0.921875 0.765625 -3.015625q0 -1.96875 -0.796875 -2.90625q-0.78125 -0.953125 -1.9375 -0.953125q-1.203125 0 -2.0 0.9375q-0.796875 0.921875 -0.796875 2.75zm13.957031 -2.21875l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm17.800781 5.984375l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm10.550781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm5.9414062 7.296875l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m234.39223 628.42377l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m106.35317 651.7103l128.03906 0l0 2.1599731l-128.03906 0l0 -2.1599731z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/README.md&sa=D&source=editors&ust=1638577908280000&usg=AOvVaw0xtsTU7RS5l_IpLaBwIMGn" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m106.35317 627.1103l128.03906 0l0 28.799988l-128.03906 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#efefef" d="m21.837269 276.4672l225.48032 0l0 193.22833l-225.48032 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.837269 276.4672l225.48032 0l0 193.22833l-225.48032 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m100.55203 286.78064l68.05078 0l0 27.597656l-68.05078 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m117.78641 308.5072l-3.765625 0l-1.5 -3.90625l-6.875 0l-1.40625 3.90625l-3.6875 0l6.6875 -17.1875l3.671875 0l6.875 17.1875zm-6.375 -6.796875l-2.375 -6.375l-2.3125 6.375l4.6875 0zm11.347656 6.796875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm17.042969 -8.765625l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm6.2695312 6.296875l0 -4.46875l-4.5 0l0 -3.078125l4.5 0l0 -4.46875l3.0 0l0 4.46875l4.515625 0l0 3.078125l-4.515625 0l0 4.46875l-3.0 0zm14.015625 0l0 -4.46875l-4.5 0l0 -3.078125l4.5 0l0 -4.46875l3.0 0l0 4.46875l4.515625 0l0 3.078125l-4.515625 0l0 4.46875l-3.0 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m168.60281 286.78064l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m100.55203 310.0672l68.05078 0l0 2.1600037l-68.05078 0l0 -2.1600037z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/arc%2B%2B&sa=D&source=editors&ust=1638577908282000&usg=AOvVaw0QKpgc0Stl6OfekfPGHexe" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m100.55203 285.4672l68.05078 0l0 28.799988l-68.05078 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#efefef" d="m51.359577 317.66797l225.48033 0l0 193.22836l-225.48033 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m51.359577 317.66797l225.48033 0l0 193.22836l-225.48033 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m118.765755 327.9814l90.66796 0l0 27.597656l-90.66796 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m131.50012 343.39548l3.375 1.0625q-0.78125 2.8125 -2.578125 4.1875q-1.796875 1.359375 -4.5624924 1.359375q-3.421875 0 -5.625 -2.34375q-2.203125 -2.34375 -2.203125 -6.390625q0 -4.296875 2.203125 -6.65625q2.21875 -2.375 5.828125 -2.375q3.1562424 0 5.1249924 1.859375q1.171875 1.09375 1.765625 3.15625l-3.4375 0.828125q-0.3125 -1.34375 -1.28125 -2.109375q-0.953125 -0.78125 -2.3437424 -0.78125q-1.90625 0 -3.09375 1.375q-1.1875 1.375 -1.1875 4.4375q0 3.265625 1.171875 4.65625q1.171875 1.375 3.046875 1.375q1.3749924 0 2.3749924 -0.875q1.0 -0.890625 1.421875 -2.765625zm9.472656 6.3125l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.4335938 -6.40625q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm10.878906 2.671875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875zm20.222656 -8.90625l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921875l0 4.390625l2.25 0zm2.2734375 -1.6875l0 -3.046875l3.296875 0l0 3.046875l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm17.996094 0l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm3.3320312 -14.140625l0 -3.046875l3.296875 0l0 3.046875l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m209.43372 327.9814l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m118.765755 351.26797l90.66796 0l0 2.1600037l-90.66796 0l0 -2.1600037z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/crostini&sa=D&source=editors&ust=1638577908284000&usg=AOvVaw2I83KHoP3INVulvOCAyGG-" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m118.765755 326.66797l90.66796 0l0 28.800018l-90.66796 0l0 -28.800018z" fill-rule="nonzero"/></a><path fill="#dd7e6b" d="m597.50134 1156.5826l309.57477 0l0 88.188965l-309.57477 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m597.50134 1156.5826l309.57477 0l0 88.188965l-309.57477 0z" fill-rule="evenodd"/><path fill="#000000" d="m706.8266 1183.5027l-3.53125 -13.359375l1.8125 0l2.03125 8.765625q0.328125 1.375 0.5625 2.71875q0.5 -2.140625 0.59375 -2.46875l2.546875 -9.015625l2.125 0l1.921875 6.765625q0.71875 2.515625 1.03125 4.71875q0.265625 -1.265625 0.671875 -2.890625l2.09375 -8.59375l1.78125 0l-3.671875 13.359375l-1.703125 0l-2.8125 -10.171875q-0.359375 -1.28125 -0.421875 -1.5625q-0.203125 0.90625 -0.390625 1.5625l-2.828125 10.171875l-1.8125 0zm15.077454 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.4416504 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm15.59375 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm9.266357 4.828125l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm6.8323364 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.5720215 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m1024.3439 1197.4121l258.2047 0l0 54.141724l-258.2047 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m1024.3439 1197.4121l258.2047 0l0 54.141724l-258.2047 0z" fill-rule="evenodd"/><path fill="#000000" d="m1084.0692 1226.7155l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm10.363525 1.578125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.094482 5.765625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1447754 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm9.375 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm14.931519 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.56311 4.84375l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141357 5.765625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm26.989746 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm9.266357 4.828125l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm6.8323975 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.12561 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.5721436 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#f6b26b" d="m71.01837 1128.9003l202.4567 0l0 54.141724l-202.4567 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m71.01837 1128.9003l202.4567 0l0 54.141724l-202.4567 0z" fill-rule="evenodd"/><path fill="#000000" d="m141.5635 1153.3911l0 -13.359375l5.921875 0q1.78125 0 2.703125 0.359375q0.9375 0.359375 1.484375 1.28125q0.5625 0.90625 0.5625 2.015625q0 1.40625 -0.921875 2.390625q-0.921875 0.96875 -2.84375 1.234375q0.703125 0.34375 1.078125 0.671875q0.765625 0.703125 1.453125 1.765625l2.328125 3.640625l-2.21875 0l-1.765625 -2.78125q-0.78125 -1.203125 -1.28125 -1.828125q-0.5 -0.640625 -0.90625 -0.890625q-0.390625 -0.265625 -0.796875 -0.359375q-0.296875 -0.078125 -0.984375 -0.078125l-2.046875 0l0 5.9375l-1.765625 0zm1.765625 -7.453125l3.796875 0q1.21875 0 1.890625 -0.25q0.6875 -0.265625 1.046875 -0.8125q0.359375 -0.546875 0.359375 -1.1875q0 -0.953125 -0.6875 -1.5625q-0.6875 -0.609375 -2.1875 -0.609375l-4.21875 0l0 4.421875zm10.863571 2.609375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.625717 4.84375l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm7.625717 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051788 -10.0l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.144821 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.063217 0.796875l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625z" fill-rule="nonzero"/><path fill="#000000" d="m112.83266 1162.9874l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5546875 3.1875l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm10.6953125 2.84375l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm6.7890625 0.234375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm4.8984375 4.171875l-1.3125 0l0 -11.453125l1.40625 0l0 4.078125q0.890625 -1.109375 2.28125 -1.109375q0.765625 0 1.4375 0.3125q0.6875 0.296875 1.125 0.859375q0.453125 0.5625 0.703125 1.359375q0.25 0.78125 0.25 1.671875q0 2.140625 -1.0625 3.3125q-1.046875 1.15625 -2.53125 1.15625q-1.46875 0 -2.296875 -1.234375l0 1.046875zm-0.015625 -4.21875q0 1.5 0.40625 2.15625q0.65625 1.09375 1.796875 1.09375q0.921875 0 1.59375 -0.796875q0.671875 -0.8125 0.671875 -2.390625q0 -1.625 -0.65625 -2.390625q-0.640625 -0.78125 -1.546875 -0.78125q-0.921875 0 -1.59375 0.796875q-0.671875 0.796875 -0.671875 2.3125zm7.5859375 4.21875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.2578125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.9453125 2.6875l3.328125 -11.859375l1.125 0l-3.3125 11.859375l-1.140625 0zm9.953125 -0.203125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm4.1171875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5234375 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm6.6484375 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1328.8635 88.38316l202.45667 0l0 59.685043l-202.45667 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1328.8635 88.38316l202.45667 0l0 59.685043l-202.45667 0z" fill-rule="evenodd"/><path fill="#000000" d="m1368.1232 109.055664l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm10.484375 -0.46875q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm7.1796875 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm15.4296875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm11.015625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm8.2265625 -1.75l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0zm8.15625 -3.6875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1450.1075 98.25879l42.671875 0l0 18.398438l-42.671875 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m1451.1075 115.94629l-0.15625 -1.328125q0.453125 0.125 0.796875 0.125q0.46875 0 0.75 -0.15625q0.28125 -0.15625 0.46875 -0.4375q0.125 -0.203125 0.421875 -1.046875q0.046875 -0.109375 0.125 -0.34375l-3.140625 -8.3125l1.515625 0l1.71875 4.796875q0.34375 0.921875 0.609375 1.921875q0.234375 -0.96875 0.578125 -1.890625l1.765625 -4.828125l1.40625 0l-3.15625 8.4375q-0.5 1.375 -0.78125 1.890625q-0.375 0.6875 -0.859375 1.015625q-0.484375 0.328125 -1.15625 0.328125q-0.40625 0 -0.90625 -0.171875zm7.5 -5.6875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.625 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1492.7794 98.25879l4.4453125 0l0 18.398438l-4.4453125 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m1450.1075 113.783165l42.671875 0l0 1.4400024l-42.671875 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1399.4161 117.25879l61.351562 0l0 18.398438l-61.351562 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m1400.1349 128.05566l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm16.6875 1.015625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm7.640625 0l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9609375 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm8.265625 0.375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m1460.7677 117.25879l0 0l0 18.398438l0 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m1399.4161 132.78316l61.351562 0l0 1.4400024l-61.351562 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/2196359393073&sa=D&source=editors&ust=1638577908298000&usg=AOvVaw1FPXhPS5m-Kwoz-RQElkN_" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1450.1075 97.38316l47.117188 0l0 19.199997l-47.117188 0l0 -19.199997z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/2196359393073&sa=D&source=editors&ust=1638577908299000&usg=AOvVaw3di9lJXxv75lDFQVgdiKED" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1399.4161 116.38316l61.351562 0l0 19.199997l-61.351562 0l0 -19.199997z" fill-rule="nonzero"/></a><path fill="#6d9eeb" d="m103.63911 88.3832l202.4567 0l0 59.71653l-202.4567 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m103.63911 88.3832l202.4567 0l0 59.71653l-202.4567 0z" fill-rule="evenodd"/><path fill="#000000" d="m117.18386 112.7432l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.4062576 0l0 11.453125l-1.4062576 0zm8.992195 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m184.41043 98.25883l109.375 0l0 18.398438l-109.375 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m185.62918 112.7432l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm17.070312 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0zm12.6640625 0l0 -11.453125l1.515625 0l0 4.703125l5.953125 0l0 -4.703125l1.515625 0l0 11.453125l-1.515625 0l0 -5.40625l-5.953125 0l0 5.40625l-1.515625 0zm17.007812 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2421875 3.921875q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5703125 4.171875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm6.6484375 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m293.78543 98.25883l4.4453125 0l0 18.398438l-4.4453125 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m184.41043 113.7832l109.375 0l0 1.4400024l-109.375 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m149.72293 117.25883l110.28906 0l0 18.398445l-110.28906 0l0 -18.398445z" fill-rule="nonzero"/><path fill="#000099" d="m157.3323 130.38383q-0.703125 0.78125 -1.53125 1.171875q-0.8125 0.390625 -1.765625 0.390625q-1.75 0 -2.78125 -1.203125q-0.84375 -0.96875 -0.84375 -2.15625q0 -1.0625076 0.6875 -1.9218826q0.6875 -0.859375 2.046875 -1.5q-0.78125 -0.890625 -1.046875 -1.4375q-0.25 -0.5625 -0.25 -1.078125q0 -1.03125 0.8125 -1.796875q0.8125 -0.765625 2.03125 -0.765625q1.171875 0 1.921875 0.71875q0.75 0.71875 0.75 1.734375q0 1.625 -2.171875 2.78125l2.0625 2.625q0.34375 -0.6875 0.546875 -1.59375l1.453125 0.3125q-0.375 1.5000076 -1.015625 2.4687576q0.796875 1.046875 1.796875 1.75l-0.953125 1.125q-0.84375 -0.546875 -1.75 -1.625zm-2.859375 -5.9687576q0.90625 -0.53125 1.171875 -0.9375q0.28125 -0.40625 0.28125 -0.90625q0 -0.578125 -0.375 -0.953125q-0.375 -0.375 -0.921875 -0.375q-0.578125 0 -0.953125 0.375q-0.375 0.359375 -0.375 0.890625q0 0.265625 0.125 0.5625q0.140625 0.296875 0.421875 0.625l0.625 0.71875zm1.96875 4.8593826l-2.578125 -3.1875076q-1.140625 0.671875 -1.546875 1.265625q-0.390625 0.578125 -0.390625 1.1406326q0 0.703125 0.546875 1.453125q0.5625 0.75 1.578125 0.75q0.640625 0 1.3125 -0.390625q0.671875 -0.40625 1.078125 -1.03125zm17.804688 -1.5468826l1.515625 0.37500763q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375076 -0.609375 -3.0781326q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625076q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.1718826zm2.6796875 -0.140625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.5937576 -0.484375 2.5156326q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.2343826zm1.453125 0q0 1.5937576 0.6875 2.3906326q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375076q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.1562576l0 -8.296883l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.1093826l-1.40625 0l0 -5.0468826q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.5312576l-1.40625 0zm9.2265625 0l0 -7.2031326l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.2031326l-1.40625 0zm4.1171875 -9.843758l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm3.2890625 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.9687576q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.1718826q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.9843826q0 1.6250076 0.640625 2.3750076q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.3437576q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.4296875 4.2968826l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.1406326l1.40625 0l0 4.5937576q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.6250076l0 -4.4375l1.40625 0l0 8.296883l-1.25 0zm3.4453125 0l0 -8.296883l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.3437576l-1.40625 0zm10.75 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.5156326 0.71875 -0.8125076q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.8750076q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.1406326q-0.765625 0.3125 -2.296875 0.5312576q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.5156326zm6.6640625 2.9062576l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.7656326l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.8437576q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578133l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm3.0234375 -4.1562576q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.5937576 -0.484375 2.5156326q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.2343826zm1.453125 0q0 1.5937576 0.6875 2.3906326q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375076q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.1562576l0 -8.296883l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.1093826l-1.40625 0l0 -5.0468826q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.5312576l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m260.012 117.25883l0 0l0 18.398445l0 0l0 -18.398445z" fill-rule="nonzero"/><path fill="#000099" d="m149.72293 132.7832l110.28906 0l0 1.4400024l-110.28906 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1276489334661&sa=D&source=editors&ust=1638577908304000&usg=AOvVaw3CQEuqYuDzyQl981I5Lpea" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m184.41043 97.3832l113.82031 0l0 19.199997l-113.82031 0l0 -19.199997z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1276489334661&sa=D&source=editors&ust=1638577908304000&usg=AOvVaw3CQEuqYuDzyQl981I5Lpea" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m149.72293 116.3832l110.28906 0l0 19.200005l-110.28906 0l0 -19.200005z" fill-rule="nonzero"/></a><path fill="#8e7cc3" d="m577.72833 88.39895l202.45673 0l0 59.685036l-202.45673 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m577.72833 88.39895l202.45673 0l0 59.685036l-202.45673 0z" fill-rule="evenodd"/><path fill="#000000" d="m621.06213 112.75895l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m683.8434 98.274574l54.242188 0l0 18.398438l-54.242188 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m693.24963 108.743324l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.8828125 1.34375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8046875 4.953125l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4296875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m738.0856 98.274574l0 0l0 18.398438l0 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m683.8434 113.79895l54.242188 0l0 1.4400024l-54.242188 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/2023123091425&sa=D&source=editors&ust=1638577908306000&usg=AOvVaw1B90wrwL6E-cNU_NeS7ZZt" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m683.8434 97.39895l54.242188 0l0 19.200005l-54.242188 0l0 -19.200005z" fill-rule="nonzero"/></a><path fill="#dd7e6b" d="m814.77295 88.39772l202.45673 0l0 59.685043l-202.45673 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m814.77295 88.39772l202.45673 0l0 59.685043l-202.45673 0z" fill-rule="evenodd"/><path fill="#000000" d="m867.01306 112.75772l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m934.2396 98.273346l31.984375 0l0 18.398438l-31.984375 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m937.474 112.75772l-3.03125 -11.453125l1.546875 0l1.75 7.5q0.28125 1.1875 0.484375 2.34375q0.4375 -1.828125 0.515625 -2.109375l2.171875 -7.734375l1.828125 0l1.640625 5.796875q0.625 2.15625 0.890625 4.046875q0.21875 -1.078125 0.578125 -2.484375l1.796875 -7.359375l1.515625 0l-3.140625 11.453125l-1.453125 0l-2.421875 -8.734375q-0.296875 -1.09375 -0.359375 -1.34375q-0.171875 0.796875 -0.328125 1.34375l-2.4375 8.734375l-1.546875 0zm12.9296875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.8046875 0l0 -11.453125l7.734375 0l0 1.34375l-6.21875 0l0 3.546875l5.375 0l0 1.359375l-5.375 0l0 5.203125l-1.515625 0zm9.5234375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m966.224 98.273346l0 0l0 18.398438l0 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m934.2396 113.79772l31.984375 0l0 1.4400024l-31.984375 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1289555489305&sa=D&source=editors&ust=1638577908311000&usg=AOvVaw2R2RLBoNRt8I4DHkmJ1RXI" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m934.2396 97.39772l31.984375 0l0 19.199997l-31.984375 0l0 -19.199997z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m340.68372 88.39772l202.45673 0l0 59.685043l-202.45673 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m340.68372 88.39772l202.45673 0l0 59.685043l-202.45673 0z" fill-rule="evenodd"/><path fill="#000000" d="m368.90036 112.75772l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m436.12692 98.273346l80.03122 0l0 18.398438l-80.03122 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m437.34567 112.75772l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm17.070312 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0zm8.0 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5546875 0l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.6328125 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.9687195 0 1.4999695 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.2968445 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.4687195 0 2.4218445 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.1093445 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.9687195 0 1.6249695 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.6249695 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m516.15814 98.273346l0 0l0 18.398438l0 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m436.12692 113.79772l80.03122 0l0 1.4400024l-80.03122 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1312179520755&sa=D&source=editors&ust=1638577908313000&usg=AOvVaw2XNWv69vMsQ5ecM0WJA1bT" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m436.12692 97.39772l80.03122 0l0 19.199997l-80.03122 0l0 -19.199997z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m443.3176 1015.5171l128.40945 0l0 37.57483l-128.40945 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m443.3176 1015.5171l128.40945 0l0 37.57483l-128.40945 0z" fill-rule="evenodd"/><path fill="#000000" d="m472.3561 1036.3807q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297577 8.546875l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.516357 1.671875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141327 5.765625l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm13.063202 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 3.703125l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.891357 4.78125l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0z" fill-rule="nonzero"/><path fill="#6d9eeb" d="m340.91208 728.53687l0 0c0 -4.1400146 3.3561707 -7.496155 7.496216 -7.496155l63.117798 0c1.9881287 0 3.894806 0.7897339 5.3006287 2.1955566c1.4058228 1.4058228 2.1955872 3.3125 2.1955872 5.300598l0 29.984009c0 4.1400146 -3.3561707 7.496216 -7.496216 7.496216l-63.117798 0c-4.140045 0 -7.496216 -3.3562012 -7.496216 -7.496216z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m340.91208 728.53687l0 0c0 -4.1400146 3.3561707 -7.496155 7.496216 -7.496155l63.117798 0c1.9881287 0 3.894806 0.7897339 5.3006287 2.1955566c1.4058228 1.4058228 2.1955872 3.3125 2.1955872 5.300598l0 29.984009c0 4.1400146 -3.3561707 7.496216 -7.496216 7.496216l-63.117798 0c-4.140045 0 -7.496216 -3.3562012 -7.496216 -7.496216z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m357.6342 730.1856l44.666016 0l0 13.798828l-44.666016 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m358.68106 741.0489l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0527344 0l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm2.6972656 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.6660156 0l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm10.246094 0l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0527344 0l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm6.7597656 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.7050781 3.125l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm10.292969 0l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m402.3002 730.1856l0 0l0 13.798828l0 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m357.6342 741.82886l44.666016 0l0 1.0800171l-44.666016 0l0 -1.0800171z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m356.28653 744.1856l47.36133 0l0 13.798828l-47.36133 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m357.17715 755.0489l0 -8.59375l1.71875 0l2.03125 6.078125q0.28125 0.859375 0.40625 1.28125q0.140625 -0.46875 0.453125 -1.375l2.0625 -5.984375l1.53125 0l0 8.59375l-1.09375 0l0 -7.1875l-2.5 7.1875l-1.03125 0l-2.484375 -7.3125l0 7.3125l-1.09375 0zm13.964844 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.7050781 3.125l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm10.736328 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.5019531 3.640625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm10.251953 1.21875l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.861328 3.703125l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m403.64786 744.1856l0 0l0 13.798828l0 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m356.28653 755.82886l47.36133 0l0 1.0800171l-47.36133 0l0 -1.0800171z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/doc/manager-api.txt?q%3Dmanager-api.txt%26sq%3Dpackage:chromeos_public&sa=D&source=editors&ust=1638577908318000&usg=AOvVaw3ha3kAeFKoB6MsRUbQVgoe" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m357.6342 729.5289l44.666016 0l0 14.400024l-44.666016 0l0 -14.400024z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/doc/manager-api.txt?q%3Dmanager-api.txt%26sq%3Dpackage:chromeos_public&sa=D&source=editors&ust=1638577908318000&usg=AOvVaw3ha3kAeFKoB6MsRUbQVgoe" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m356.28653 743.5289l47.36133 0l0 14.400024l-47.36133 0l0 -14.400024z" fill-rule="nonzero"/></a><path fill="#000000" fill-opacity="0.0" d="m0.0026238845 -0.0131233595l1931.8425 0l0 70.89764l-1931.8425 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m0.0026238845 -0.0131233595l1931.8425 0l0 70.89764l-1931.8425 0z" fill-rule="evenodd"/><path fill="#000000" d="m627.89264 25.714378l3.375 1.0625q-0.78125 2.8125 -2.578125 4.1875q-1.796875 1.359375 -4.5625 1.359375q-3.421875 0 -5.625 -2.34375q-2.203125 -2.34375 -2.203125 -6.390625q0 -4.296875 2.203125 -6.65625q2.21875 -2.375001 5.828125 -2.375001q3.15625 0 5.125 1.859376q1.171875 1.09375 1.765625 3.15625l-3.4375 0.828125q-0.3125 -1.34375 -1.28125 -2.109375q-0.953125 -0.78125 -2.34375 -0.78125q-1.90625 0 -3.09375 1.375q-1.1875 1.375 -1.1875 4.4375q0 3.265625 1.171875 4.65625q1.171875 1.375 3.046875 1.375q1.375 0 2.375 -0.875q1.0 -0.890625 1.421875 -2.765625zm9.597656 -10.875001l0 6.328126q1.59375 -1.875 3.8125 -1.875q1.140625 0 2.046875 0.421875q0.921875 0.421875 1.375 1.078125q0.46875 0.65625 0.640625 1.453125q0.171875 0.796875 0.171875 2.484375l0 7.296875l-3.296875 0l0 -6.578125q0 -1.953125 -0.1875 -2.484375q-0.1875 -0.53125 -0.671875 -0.828125q-0.46875 -0.3125 -1.171875 -0.3125q-0.828125 0 -1.46875 0.40625q-0.640625 0.390625 -0.953125 1.1875q-0.296875 0.796875 -0.296875 2.375l0 6.234375l-3.28125 0l0 -17.1875l3.28125 0zm14.535156 17.1875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.4335938 -6.40625q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm11.800781 -6.234375l3.03125 0l0 1.703125q1.625 -1.984375 3.875 -1.984375q1.203125 0 2.078125 0.5q0.875 0.484375 1.4375 1.484375q0.828125 -1.0 1.765625 -1.484375q0.953125 -0.5 2.03125 -0.5q1.375 0 2.3125 0.5625q0.953125 0.5625 1.421875 1.640625q0.34375 0.796875 0.34375 2.578125l0 7.953125l-3.296875 0l0 -7.109375q0 -1.859375 -0.328125 -2.390625q-0.46875 -0.703125 -1.40625 -0.703125q-0.703125 0 -1.3125 0.421875q-0.609375 0.421875 -0.875 1.234375q-0.265625 0.8125 -0.265625 2.5625l0 5.984375l-3.296875 0l0 -6.828125q0 -1.8125 -0.171875 -2.328125q-0.171875 -0.53125 -0.546875 -0.78125q-0.375 -0.265625 -1.0 -0.265625q-0.765625 0 -1.375 0.40625q-0.609375 0.40625 -0.875 1.1875q-0.265625 0.765625 -0.265625 2.5625l0 6.046875l-3.28125 0l0 -12.453125zm28.792969 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm11.9375 -1.1875q0 -2.625 0.78125 -4.40625q0.59375 -1.3125 1.59375 -2.359375q1.015625 -1.046876 2.234375 -1.546876q1.59375 -0.671875 3.703125 -0.671875q3.796875 0 6.0625 2.359376q2.28125 2.34375 2.28125 6.546875q0 4.15625 -2.265625 6.515625q-2.25 2.34375 -6.03125 2.34375q-3.84375 0 -6.109375 -2.34375q-2.25 -2.34375 -2.25 -6.4375zm3.578125 -0.125q0 2.921875 1.34375 4.4375q1.34375 1.5 3.421875 1.5q2.078125 0 3.40625 -1.484375q1.328125 -1.5 1.328125 -4.5q0 -2.953125 -1.296875 -4.40625q-1.296875 -1.453125 -3.4375 -1.453125q-2.140625 0 -3.453125 1.484375q-1.3125 1.46875 -1.3125 4.421875zm14.917969 3.015625l3.375 -0.328125q0.296875 1.703125 1.21875 2.5q0.9375 0.796875 2.53125 0.796875q1.671875 0 2.515625 -0.703125q0.859375 -0.71875 0.859375 -1.671875q0 -0.609375 -0.359375 -1.03125q-0.359375 -0.421875 -1.25 -0.75q-0.609375 -0.203125 -2.78125 -0.75q-2.78125 -0.6875 -3.90625 -1.6875q-1.59375 -1.421875 -1.59375 -3.46875q0 -1.3125 0.75 -2.453125q0.75 -1.140626 2.140625 -1.734376q1.40625 -0.59375 3.390625 -0.59375q3.234375 0 4.859375 1.421875q1.640625 1.406251 1.71875 3.781251l-3.46875 0.140625q-0.21875 -1.3125 -0.953125 -1.890625q-0.734375 -0.59375 -2.203125 -0.59375q-1.5 0 -2.359375 0.625q-0.546875 0.40625 -0.546875 1.0625q0 0.609375 0.515625 1.046875q0.65625 0.546875 3.1875 1.15625q2.53125 0.59375 3.734375 1.234375q1.21875 0.640625 1.90625 1.75q0.6875 1.09375 0.6875 2.734375q0 1.46875 -0.828125 2.765625q-0.8125 1.28125 -2.3125 1.921875q-1.5 0.625 -3.75 0.625q-3.25 0 -5.0 -1.5q-1.75 -1.515625 -2.078125 -4.40625zm34.535156 -0.71875l3.375 1.0625q-0.78125 2.8125 -2.578125 4.1875q-1.796875 1.359375 -4.5625 1.359375q-3.421875 0 -5.625 -2.34375q-2.203125 -2.34375 -2.203125 -6.390625q0 -4.296875 2.203125 -6.65625q2.21875 -2.375001 5.828125 -2.375001q3.15625 0 5.125 1.859376q1.171875 1.09375 1.765625 3.15625l-3.4375 0.828125q-0.3125 -1.34375 -1.28125 -2.109375q-0.953125 -0.78125 -2.34375 -0.78125q-1.90625 0 -3.09375 1.375q-1.1875 1.375 -1.1875 4.4375q0 3.265625 1.171875 4.65625q1.171875 1.375 3.046875 1.375q1.375 0 2.375 -0.875q1.0 -0.890625 1.421875 -2.765625zm5.5664062 -0.09375q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm23.363281 6.21875l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm14.660156 0l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm10.550781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm16.800781 -1.46875l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm8.207031 -3.6875l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921876l0 4.390626l2.25 0zm2.2734375 -1.6875l0 -3.046876l3.296875 0l0 3.046876l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm10.089844 0l-5.015625 -12.453125l3.46875 0l2.34375 6.359375l0.671875 2.125q0.265625 -0.8125 0.34375 -1.078125q0.15625 -0.515625 0.34375 -1.046875l2.375 -6.359375l3.390625 0l-4.953125 12.453125l-2.96875 0zm9.925781 -14.140625l0 -3.046876l3.296875 0l0 3.046876l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm12.386719 -12.453125l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921876l0 4.390626l2.25 0zm0.7265625 0l3.5 0l2.96875 8.84375l2.90625 -8.84375l3.421875 0l-4.40625 11.984375l-0.78125 2.171875q-0.4375 1.09375 -0.828125 1.65625q-0.390625 0.578125 -0.90625 0.9375q-0.5 0.359375 -1.25 0.546875q-0.734375 0.203125 -1.671875 0.203125q-0.953125 0 -1.875 -0.1875l-0.28125 -2.578125q0.765625 0.140625 1.390625 0.140625q1.140625 0 1.6875 -0.671875q0.5625 -0.671875 0.859375 -1.71875l-4.734375 -12.484375zm21.6875 12.453125l0 -17.046875l3.46875 0l0 14.156251l8.625 0l0 2.890625l-12.09375 0zm17.003906 -8.65625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm4.9257812 -6.46875l3.5 0l2.96875 8.84375l2.90625 -8.84375l3.421875 0l-4.40625 11.984375l-0.78125 2.171875q-0.4375 1.09375 -0.828125 1.65625q-0.390625 0.578125 -0.90625 0.9375q-0.5 0.359375 -1.25 0.546875q-0.734375 0.203125 -1.671875 0.203125q-0.953125 0 -1.875 -0.1875l-0.28125 -2.578125q0.765625 0.140625 1.390625 0.140625q1.140625 0 1.6875 -0.671875q0.5625 -0.671875 0.859375 -1.71875l-4.734375 -12.484375zm22.113281 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm9.097656 7.296875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.0273438 -3.546875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875zm26.640625 8.59375l-2.265625 0q-1.796875 -2.703125 -2.734375 -5.625q-0.9375 -2.921875 -0.9375 -5.640625q0 -3.390625 1.171875 -6.421875q1.0 -2.625 2.546875 -4.828126l2.25 0q-1.609375 3.546876 -2.21875 6.046876q-0.59375 2.484375 -0.59375 5.265625q0 1.921875 0.359375 3.9375q0.359375 2.015625 0.984375 3.84375q0.40625 1.1875 1.4375 3.421875z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m996.59186 10.300315l312.1054 0l0 27.597656l-312.1054 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m998.01373 32.855003l3.765625 0.453125q0.09375 0.65625 0.421875 0.90625q0.46875 0.34375 1.484375 0.34375q1.28125 0 1.9375 -0.390625q0.421875 -0.25 0.65625 -0.828125q0.140625 -0.40625 0.140625 -1.515625l0 -1.8125q-1.46875 2.015625 -3.71875 2.015625q-2.515625 0 -3.96875 -2.125q-1.15625 -1.671875 -1.15625 -4.171875q0 -3.125 1.5 -4.78125q1.515625 -1.65625 3.75 -1.65625q2.3125 0 3.8125 2.03125l0 -1.75l3.078125 0l0 11.171875q0 2.203125 -0.359375 3.296875q-0.359375 1.09375 -1.015625 1.703125q-0.65625 0.625 -1.765625 0.96875q-1.09375 0.359375 -2.765625 0.359375q-3.15625 0 -4.484375 -1.078125q-1.328125 -1.078125 -1.328125 -2.75q0 -0.15625 0.015625 -0.390625zm2.9375 -7.3125q0 1.984375 0.765625 2.90625q0.765625 0.921875 1.890625 0.921875q1.21875 0 2.046875 -0.9375q0.828125 -0.953125 0.828125 -2.8125q0 -1.921875 -0.796875 -2.859375q-0.796875 -0.9375 -2.015625 -0.9375q-1.1875 0 -1.953125 0.921875q-0.765625 0.90625 -0.765625 2.796875zm11.269531 0.078125q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.812439 1.828125 1.812439 4.625q0 2.828125 -1.828064 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm10.285095 6.515625l4.25 -17.765625l2.46875 0l-4.296875 17.765625l-2.421875 0zm19.277344 -9.0625l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm5.6445312 8.765625l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.4335938 -6.40625q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm10.878906 2.671875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875zm14.144531 -1.03125l0 -3.296875l6.46875 0l0 3.296875l-6.46875 0zm19.210938 -4.1875l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm1.7382812 2.359375q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm23.363281 6.21875l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm14.660156 0l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm10.550781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm16.800781 -1.46875l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm8.207031 -3.6875l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921876l0 4.390626l2.25 0zm2.2734375 -1.6875l0 -3.046876l3.296875 0l0 3.046876l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm10.089844 0l-5.015625 -12.453125l3.46875 0l2.34375 6.359375l0.671875 2.125q0.265625 -0.8125 0.34375 -1.078125q0.15625 -0.515625 0.34375 -1.046875l2.375 -6.359375l3.390625 0l-4.953125 12.453125l-2.96875 0zm9.925781 -14.140625l0 -3.046876l3.296875 0l0 3.046876l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm12.386719 -12.453125l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921876l0 4.390626l2.25 0zm0.7265625 0l3.5 0l2.96875 8.84375l2.90625 -8.84375l3.421875 0l-4.40625 11.984375l-0.78125 2.171875q-0.4375 1.09375 -0.828125 1.65625q-0.390625 0.578125 -0.90625 0.9375q-0.5 0.359375 -1.25 0.546875q-0.734375 0.203125 -1.671875 0.203125q-0.953125 0 -1.875 -0.1875l-0.28125 -2.578125q0.765625 0.140625 1.390625 0.140625q1.140625 0 1.6875 -0.671875q0.5625 -0.671875 0.859375 -1.71875l-4.734375 -12.484375zm14.535156 7.875l0 -3.296875l6.46875 0l0 3.296875l-6.46875 0zm8.3515625 4.578125l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm9.136719 -8.65625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm4.9257812 -6.46875l3.5 0l2.96875 8.84375l2.90625 -8.84375l3.421875 0l-4.40625 11.984375l-0.78125 2.171875q-0.4375 1.09375 -0.828125 1.65625q-0.390625 0.578125 -0.90625 0.9375q-0.5 0.359375 -1.25 0.546875q-0.734375 0.203125 -1.671875 0.203125q-0.953125 0 -1.875 -0.1875l-0.28125 -2.578125q0.765625 0.140625 1.390625 0.140625q1.140625 0 1.6875 -0.671875q0.5625 -0.671875 0.859375 -1.71875l-4.734375 -12.484375zm22.113281 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm9.097656 7.296875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.0273438 -3.546875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875z" fill-rule="nonzero"/><path fill="#000000" d="m1309.5098 37.073753q0.96875 -2.078125 1.359375 -3.203125q0.40625 -1.109375 0.75 -2.5625q0.34375 -1.453125 0.5 -2.75q0.171875 -1.3125 0.171875 -2.6875q0 -2.78125 -0.609375 -5.265625q-0.59375 -2.5 -2.203125 -6.046876l2.25 0q1.765625 2.515626 2.734375 5.343751q0.984375 2.8125 0.984375 5.71875q0 2.453125 -0.765625 5.25q-0.890625 3.15625 -2.90625 6.203125l-2.265625 0z" fill-rule="nonzero"/><path fill="#000099" d="m996.59186 33.586876l312.1054 0l0 2.1599998l-312.1054 0l0 -2.1599998z" fill-rule="nonzero"/><path fill="#000000" d="m118.89459 52.65188q0 -4.265625 2.296875 -6.6875q2.296875 -2.421875 5.9375 -2.421875q2.375 0 4.28125 1.140625q1.921875 1.125 2.921875 3.171875q1.0 2.03125 1.0 4.609375q0 2.609375 -1.0625 4.671875q-1.046875 2.0625 -2.984375 3.125q-1.9375 1.0625 -4.171875 1.0625q-2.421875 0 -4.34375 -1.171875q-1.90625 -1.171875 -2.890625 -3.203125q-0.984375 -2.03125 -0.984375 -4.296875zm2.34375 0.046875q0 3.09375 1.671875 4.890625q1.671875 1.78125 4.1875 1.78125q2.578125 0 4.234375 -1.796875q1.65625 -1.8125 1.65625 -5.125q0 -2.09375 -0.71875 -3.65625q-0.703125 -1.578125 -2.078125 -2.4375q-1.359375 -0.859375 -3.046875 -0.859375q-2.421875 0 -4.171875 1.65625q-1.734375 1.65625 -1.734375 5.546875zm24.902344 8.328125l0 -1.828125q-1.453125 2.109375 -3.9375 2.109375q-1.109375 0 -2.0625 -0.421875q-0.953125 -0.421875 -1.421875 -1.0625q-0.453125 -0.640625 -0.640625 -1.5625q-0.140625 -0.625 -0.140625 -1.96875l0 -7.71875l2.109375 0l0 6.90625q0 1.65625 0.140625 2.234375q0.1875 0.828125 0.828125 1.3125q0.65625 0.46875 1.609375 0.46875q0.9375 0 1.765625 -0.484375q0.84375 -0.5 1.1875 -1.328125q0.34375 -0.84375 0.34375 -2.4375l0 -6.671875l2.109375 0l0 12.453125l-1.890625 0zm9.800781 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm2.0117188 1.890625l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm5.3945312 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm21.878906 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm17.640625 1.203125q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm12.472656 6.21875l0 -10.8125l-1.875 0l0 -1.640625l1.875 0l0 -1.3125q0 -1.265625 0.21875 -1.875q0.296875 -0.8125 1.0625 -1.3125q0.78125 -0.515625 2.15625 -0.515625q0.890625 0 1.96875 0.203125l-0.3125 1.84375q-0.65625 -0.125 -1.25 -0.125q-0.953125 0 -1.359375 0.421875q-0.390625 0.40625 -0.390625 1.53125l0 1.140625l2.421875 0l0 1.640625l-2.421875 0l0 10.8125l-2.09375 0zm12.8203125 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm21.878906 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm16.363281 5.53125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm4.3554688 1.890625l-3.796875 -12.453125l2.171875 0l1.984375 7.1875l0.734375 2.671875q0.046875 -0.203125 0.640625 -2.5625l1.984375 -7.296875l2.171875 0l1.859375 7.21875l0.625 2.390625l0.71875 -2.40625l2.125 -7.203125l2.046875 0l-3.890625 12.453125l-2.1875 0l-1.984375 -7.453125l-0.46875 -2.125l-2.53125 9.578125l-2.203125 0zm14.253906 -6.21875q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.941406 6.21875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm8.0234375 0l0 -17.1875l2.109375 0l0 9.796875l5.0 -5.0625l2.71875 0l-4.75 4.625l5.234375 7.828125l-2.59375 0l-4.125 -6.359375l-1.484375 1.421875l0 4.9375l-2.109375 0zm12.0 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm12.972656 1.03125l2.046875 0.3125q0.125 0.9375 0.71875 1.375q0.78125 0.59375 2.140625 0.59375q1.46875 0 2.265625 -0.59375q0.796875 -0.578125 1.078125 -1.640625q0.15625 -0.640625 0.140625 -2.703125q-1.375 1.625 -3.4375 1.625q-2.5625 0 -3.96875 -1.84375q-1.40625 -1.859375 -1.40625 -4.453125q0 -1.78125 0.640625 -3.28125q0.640625 -1.515625 1.859375 -2.328125q1.234375 -0.828125 2.890625 -0.828125q2.203125 0 3.625 1.78125l0 -1.5l1.953125 0l0 10.765625q0 2.90625 -0.59375 4.109375q-0.59375 1.21875 -1.875 1.921875q-1.28125 0.703125 -3.15625 0.703125q-2.234375 0 -3.609375 -1.0q-1.359375 -1.0 -1.3125 -3.015625zm1.734375 -7.484375q0 2.453125 0.96875 3.578125q0.984375 1.125 2.453125 1.125q1.453125 0 2.4375 -1.109375q0.984375 -1.125 0.984375 -3.515625q0 -2.28125 -1.015625 -3.4375q-1.015625 -1.171875 -2.453125 -1.171875q-1.40625 0 -2.390625 1.140625q-0.984375 1.140625 -0.984375 3.390625zm18.609375 6.453125l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm13.503906 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3007812 11.046875l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm20.625 -8.8125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm11.738281 7.421875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm7.1640625 -3.71875l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm18.730469 -2.5q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm32.546875 -6.03125l2.28125 0.578125q-0.71875 2.796875 -2.578125 4.28125q-1.859375 1.46875 -4.546875 1.46875q-2.765625 0 -4.515625 -1.125q-1.734375 -1.140625 -2.640625 -3.28125q-0.90625 -2.15625 -0.90625 -4.609375q0 -2.6875 1.015625 -4.6875q1.03125 -2.0 2.921875 -3.03125q1.890625 -1.03125 4.171875 -1.03125q2.578125 0 4.328125 1.3125q1.765625 1.3125 2.453125 3.6875l-2.234375 0.53125q-0.609375 -1.875 -1.75 -2.734375q-1.125 -0.859375 -2.84375 -0.859375q-1.984375 0 -3.3125 0.953125q-1.328125 0.953125 -1.875 2.546875q-0.53125 1.59375 -0.53125 3.296875q0 2.1875 0.625 3.828125q0.640625 1.640625 1.984375 2.453125q1.359375 0.796875 2.921875 0.796875q1.921875 0 3.234375 -1.09375q1.328125 -1.109375 1.796875 -3.28125zm4.8007812 6.03125l0 -17.1875l2.109375 0l0 6.171875q1.484375 -1.71875 3.734375 -1.71875q1.375 0 2.390625 0.546875q1.03125 0.546875 1.46875 1.515625q0.4375 0.953125 0.4375 2.78125l0 7.890625l-2.109375 0l0 -7.890625q0 -1.578125 -0.6875 -2.296875q-0.6875 -0.71875 -1.9375 -0.71875q-0.9375 0 -1.765625 0.484375q-0.828125 0.484375 -1.1875 1.3125q-0.34375 0.828125 -0.34375 2.296875l0 6.8125l-2.109375 0zm13.332031 0l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm7.2265625 -6.21875q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0zm28.523438 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm18.0 -0.953125q0 -4.265625 2.296875 -6.6875q2.296875 -2.421875 5.9375 -2.421875q2.375 0 4.28125 1.140625q1.921875 1.125 2.921875 3.171875q1.0 2.03125 1.0 4.609375q0 2.609375 -1.0625 4.671875q-1.046875 2.0625 -2.984375 3.125q-1.9375 1.0625 -4.171875 1.0625q-2.421875 0 -4.34375 -1.171875q-1.90625 -1.171875 -2.890625 -3.203125q-0.984375 -2.03125 -0.984375 -4.296875zm2.34375 0.046875q0 3.09375 1.671875 4.890625q1.671875 1.78125 4.1875 1.78125q2.578125 0 4.234375 -1.796875q1.65625 -1.8125 1.65625 -5.125q0 -2.09375 -0.71875 -3.65625q-0.703125 -1.578125 -2.078125 -2.4375q-1.359375 -0.859375 -3.046875 -0.859375q-2.421875 0 -4.171875 1.65625q-1.734375 1.65625 -1.734375 5.546875zm16.246094 2.8125l2.140625 -0.1875q0.15625 1.28125 0.703125 2.109375q0.5625 0.828125 1.734375 1.34375q1.171875 0.5 2.640625 0.5q1.296875 0 2.296875 -0.375q1.0 -0.390625 1.484375 -1.0625q0.484375 -0.6875 0.484375 -1.484375q0 -0.796875 -0.46875 -1.40625q-0.46875 -0.609375 -1.546875 -1.015625q-0.6875 -0.265625 -3.0625 -0.828125q-2.359375 -0.578125 -3.3125 -1.078125q-1.234375 -0.640625 -1.84375 -1.59375q-0.59375 -0.96875 -0.59375 -2.140625q0 -1.3125 0.734375 -2.4375q0.75 -1.125 2.15625 -1.703125q1.421875 -0.59375 3.15625 -0.59375q1.90625 0 3.359375 0.609375q1.46875 0.609375 2.25 1.8125q0.796875 1.1875 0.84375 2.703125l-2.171875 0.171875q-0.171875 -1.640625 -1.1875 -2.46875q-1.015625 -0.828125 -3.0 -0.828125q-2.0625 0 -3.015625 0.765625q-0.9375 0.75 -0.9375 1.8125q0 0.921875 0.671875 1.515625q0.65625 0.609375 3.421875 1.234375q2.78125 0.625 3.8125 1.09375q1.5 0.6875 2.203125 1.75q0.71875 1.0625 0.71875 2.4375q0 1.375 -0.78125 2.59375q-0.78125 1.203125 -2.25 1.890625q-1.46875 0.671875 -3.3125 0.671875q-2.328125 0 -3.90625 -0.671875q-1.578125 -0.6875 -2.484375 -2.046875q-0.890625 -1.375 -0.9375 -3.09375zm17.070312 5.515625l0 -2.40625l2.390625 0l0 2.40625q0 1.328125 -0.46875 2.140625q-0.46875 0.8125 -1.484375 1.265625l-0.578125 -0.90625q0.65625 -0.296875 0.96875 -0.875q0.328125 -0.5625 0.359375 -1.625l-1.1875 0zm20.898438 -4.5625l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm3.09375 -1.65625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.910156 6.21875l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm4.5976562 -6.21875q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.941406 6.21875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm22.800781 -4.5625l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm3.09375 -1.65625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm20.035156 6.21875l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375zm20.472656 2.203125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm19.832031 7.421875l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375zm20.5625 6.21875l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.332031 11.109375l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm26.886719 -6.328125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3945312 11.015625l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.425781 10.921875l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.410156 6.15625l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm7.2265625 -6.21875q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm10.550781 6.21875l4.546875 -6.46875l-4.203125 -5.984375l2.640625 0l1.90625 2.921875q0.546875 0.828125 0.875 1.390625q0.515625 -0.765625 0.9375 -1.359375l2.109375 -2.953125l2.515625 0l-4.296875 5.859375l4.625 6.59375l-2.59375 0l-2.546875 -3.875l-0.6875 -1.03125l-3.265625 4.90625l-2.5625 0zm13.421875 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0zm28.117188 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm10.003906 4.359375l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.589844 -2.125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm23.03125 5.53125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.589844 -2.125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm19.878906 5.890625q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3945312 6.25l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0zm26.644531 0l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm16.539062 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm10.910156 3.703125l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.84375 8.484375l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm10.644531 -0.0625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.124939 0 2.062439 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.87493896 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm12.503845 -3.71875l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.859375 -11.03125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm7.2695312 0l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.441406 -8.4375l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.2695312 0l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm5.3945312 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm9.925781 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm1.9648438 6.6875l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm17.183594 -4.5l4.984375 -17.765625l1.6875 0l-4.96875 17.765625l-1.703125 0zm14.9140625 4.46875l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.410156 6.15625l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm8.0234375 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0zm28.117188 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3789062 6.25l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm7.9140625 4.796875l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm18.761719 -0.03125l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm10.644531 -0.0625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.972656 -8.53125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm17.957031 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm7.9453125 -4.328125q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm12.472656 6.21875l0 -10.8125l-1.875 0l0 -1.640625l1.875 0l0 -1.3125q0 -1.265625 0.21875 -1.875q0.296875 -0.8125 1.0625 -1.3125q0.78125 -0.515625 2.15625 -0.515625q0.890625 0 1.96875 0.203125l-0.3125 1.84375q-0.65625 -0.125 -1.25 -0.125q-0.953125 0 -1.359375 0.421875q-0.390625 0.40625 -0.390625 1.53125l0 1.140625l2.421875 0l0 1.640625l-2.421875 0l0 10.8125l-2.09375 0zm20.945312 -4.5625l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm3.09375 -1.65625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm17.957031 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.183594 0.359375q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm13.519531 1.6875l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm8.484375 2.671875l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm2.6679688 1.890625l0 -2.40625l2.390625 0l0 2.40625l-2.390625 0zm12.2265625 -5.515625l2.140625 -0.1875q0.15625 1.28125 0.703125 2.109375q0.5625 0.828125 1.734375 1.34375q1.171875 0.5 2.640625 0.5q1.296875 0 2.296875 -0.375q1.0 -0.390625 1.484375 -1.0625q0.484375 -0.6875 0.484375 -1.484375q0 -0.796875 -0.46875 -1.40625q-0.46875 -0.609375 -1.546875 -1.015625q-0.6875 -0.265625 -3.0625 -0.828125q-2.359375 -0.578125 -3.3125 -1.078125q-1.234375 -0.640625 -1.84375 -1.59375q-0.59375 -0.96875 -0.59375 -2.140625q0 -1.3125 0.734375 -2.4375q0.75 -1.125 2.15625 -1.703125q1.421875 -0.59375 3.15625 -0.59375q1.90625 0 3.359375 0.609375q1.46875 0.609375 2.25 1.8125q0.796875 1.1875 0.84375 2.703125l-2.171875 0.171875q-0.171875 -1.640625 -1.1875 -2.46875q-1.015625 -0.828125 -3.0 -0.828125q-2.0625 0 -3.015625 0.765625q-0.9375 0.75 -0.9375 1.8125q0 0.921875 0.671875 1.515625q0.65625 0.609375 3.421875 1.234375q2.78125 0.625 3.8125 1.09375q1.5 0.6875 2.203125 1.75q0.71875 1.0625 0.71875 2.4375q0 1.375 -0.78125 2.59375q-0.78125 1.203125 -2.25 1.890625q-1.46875 0.671875 -3.3125 0.671875q-2.328125 0 -3.90625 -0.671875q-1.578125 -0.6875 -2.484375 -2.046875q-0.890625 -1.375 -0.9375 -3.09375zm16.507812 10.28125l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.378906 6.15625l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm5.3945312 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm9.925781 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.6796875 1.890625l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm10.644531 0.09375q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm10.550781 6.21875l4.546875 -6.46875l-4.203125 -5.984375l2.640625 0l1.90625 2.921875q0.546875 0.828125 0.875 1.390625q0.515625 -0.765625 0.9375 -1.359375l2.109375 -2.953125l2.515625 0l-4.296875 5.859375l4.625 6.59375l-2.59375 0l-2.546875 -3.875l-0.6875 -1.03125l-3.265625 4.90625l-2.5625 0zm21.9375 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm10.910156 3.703125l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm19.527344 -11.03125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm21.425781 0l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375zm11.957031 -8.53125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm13.441406 -4.5625l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm12.0 3.03125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm10.003906 4.359375l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.589844 -2.125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm17.578125 3.703125l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.84375 3.71875l0 -17.1875l2.109375 0l0 6.171875q1.484375 -1.71875 3.734375 -1.71875q1.375 0 2.390625 0.546875q1.03125 0.546875 1.46875 1.515625q0.4375 0.953125 0.4375 2.78125l0 7.890625l-2.109375 0l0 -7.890625q0 -1.578125 -0.6875 -2.296875q-0.6875 -0.71875 -1.9375 -0.71875q-0.9375 0 -1.765625 0.484375q-0.828125 0.484375 -1.1875 1.3125q-0.34375 0.828125 -0.34375 2.296875l0 6.8125l-2.109375 0zm21.472656 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3789062 6.25l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm16.539062 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm19.832031 7.421875l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375zm18.59375 6.21875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm16.539062 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm10.910156 3.703125l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.84375 8.484375l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm10.644531 -0.0625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm12.503906 -3.71875l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.859375 -11.03125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm7.2695312 0l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.441406 -8.4375l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.2695312 0l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm5.3945312 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm9.925781 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm1.9648438 6.6875l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm10.921875 -4.796875l0 -2.40625l2.390625 0l0 2.40625l-2.390625 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/cros-connectivity-layers&sa=D&source=editors&ust=1638577908338000&usg=AOvVaw10WcK-TOlAntBY-aoFINqD" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m996.59186 8.986878l312.1054 0l0 28.8l-312.1054 0l0 -28.8z" fill-rule="nonzero"/></a><path fill="#efefef" d="m95.30708 364.93045l225.48033 0l0 193.22836l-225.48033 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m95.30708 364.93045l225.48033 0l0 193.22836l-225.48033 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m158.67615 375.2439l98.74219 0l0 27.597656l-98.74219 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m160.42615 396.97046l0 -17.1875l5.5625 0q3.171875 0 4.125 0.265625q1.484375 0.390625 2.46875 1.6875q1.0 1.28125 1.0 3.34375q0 1.578125 -0.578125 2.65625q-0.5625 1.078125 -1.453125 1.703125q-0.890625 0.609375 -1.796875 0.796875q-1.25 0.25 -3.59375 0.25l-2.265625 0l0 6.484375l-3.46875 0zm3.46875 -14.28125l0 4.875l1.890625 0q2.0625 0 2.75 -0.265625q0.6875 -0.265625 1.078125 -0.84375q0.390625 -0.578125 0.390625 -1.328125q0 -0.9375 -0.546875 -1.546875q-0.546875 -0.609375 -1.390625 -0.765625q-0.625 -0.125 -2.5 -0.125l-1.671875 0zm14.9765625 5.625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm9.628906 5.984375l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm8.652344 -8.65625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm6.4726562 5.984375l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm6.6679688 0l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm13.886719 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm5.9414062 7.296875l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm5.5117188 -3.546875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m257.41833 375.2439l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m158.67615 398.53046l98.74219 0l0 2.1600037l-98.74219 0l0 -2.1600037z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/parallels&sa=D&source=editors&ust=1638577908342000&usg=AOvVaw148vfJn_nrvHzymr64ovGQ" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m158.67615 373.93045l98.74219 0l0 28.799988l-98.74219 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m21.83727 674.395l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.83727 674.395l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m57.467297 686.9142l64.2675 0l0 21.45288l-64.2675 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m58.998547 703.8032l0 -13.359375l9.015629 0l0 1.578125l-7.250004 0l0 4.140625l6.265629 0l0 1.578125l-6.265629 0l0 6.0625l-1.765625 0zm11.09911 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.129196 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.853302 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm10.922592 5.765625l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004196 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.156967 4.859375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.144821 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m121.7348 686.9142l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m57.467297 705.01654l64.2675 0l0 1.6799927l-64.2675 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/firewall.h&sa=D&source=editors&ust=1638577908344000&usg=AOvVaw2PHaKWNBVZQprhZlBvgEYV" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m57.467297 685.8832l64.2675 0l0 22.400024l-64.2675 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m179.40369 674.395l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m179.40369 674.395l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m209.85042 686.9142l74.63411 0l0 21.45288l-74.63411 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m211.2723 703.8032l0 -13.359375l1.8125 0l7.015625 10.484375l0 -10.484375l1.6875 0l0 13.359375l-1.8125 0l-7.015625 -10.5l0 10.5l-1.6875 0zm13.488571 0l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28125l-2.8125 0l0 10.203125zm11.707321 1.578125l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.459198 7.0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.6189117 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.203857 4.84375l3.53125 -5.03125l-3.265625 -4.640625l2.046875 0l1.484375 2.265625q0.421875 0.640625 0.671875 1.078125q0.40625 -0.59375 0.734375 -1.0625l1.640625 -2.28125l1.953125 0l-3.34375 4.546875l3.59375 5.125l-2.015625 0l-1.984375 -3.0l-0.515625 -0.8125l-2.546875 3.8125l-1.984375 0zm10.34375 3.71875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m284.48453 686.9142l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m209.85042 705.01654l74.63411 0l0 1.6799927l-74.63411 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/ndproxy.h&sa=D&source=editors&ust=1638577908346000&usg=AOvVaw1UgsvT1ZsJPSAu_A6eqAH5" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m209.85042 685.8832l74.63411 0l0 22.400024l-74.63411 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#6d9eeb" d="m775.35956 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m775.35956 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m788.8585 795.5769l73.63208 0l0 21.45288l-73.63208 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m790.24915 812.46594l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm21.697021 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.2038574 4.859375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm16.688232 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm3.8913574 5.65625l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625zm15.953796 1.90625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m862.4906 795.5769l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m788.8585 813.67926l73.63208 0l0 1.6799927l-73.63208 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/manager.h&sa=D&source=editors&ust=1638577908348000&usg=AOvVaw2-GEVnopsJQSi2fuFmH9G1" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m788.8585 794.54596l73.63208 0l0 22.399963l-73.63208 0l0 -22.399963z" fill-rule="nonzero"/></a><defs><linearGradient id="p.6" gradientUnits="userSpaceOnUse" gradientTransform="matrix(10.461344931474438 0.0 0.0 10.461344931474438 0.0 0.0)" spreadMethod="pad" x1="75.66739098562421" y1="77.00218558523139" x2="68.27017360807059" y2="69.60482708070391"><stop offset="0.0" stop-color="#dd7e6b"/><stop offset="0.5" stop-color="#dd7e6b"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.6)" d="m663.8819 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m663.8819 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m695.5497 795.5769l37.29431 0l0 21.45288l-37.29431 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m699.3153 812.46594l-3.53125 -13.359375l1.8125 0l2.03125 8.765625q0.328125 1.375 0.5625 2.71875q0.5 -2.140625 0.59375 -2.46875l2.546875 -9.015625l2.125 0l1.921875 6.765625q0.71875 2.515625 1.03125 4.71875q0.265625 -1.265625 0.671875 -2.890625l2.09375 -8.59375l1.78125 0l-3.671875 13.359375l-1.703125 0l-2.8125 -10.171875q-0.359375 -1.28125 -0.421875 -1.5625q-0.203125 0.90625 -0.390625 1.5625l-2.828125 10.171875l-1.8125 0zm15.077454 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.4416504 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m732.844 795.5769l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m695.5497 813.67926l37.29431 0l0 1.6799927l-37.29431 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/wifi/wifi.h&sa=D&source=editors&ust=1638577908354000&usg=AOvVaw3A97TOcedFMCbtI2HLRy1F" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m695.5497 794.54596l37.29431 0l0 22.399963l-37.29431 0l0 -22.399963z" fill-rule="nonzero"/></a><defs><linearGradient id="p.7" gradientUnits="userSpaceOnUse" gradientTransform="matrix(10.461347703443927 0.0 0.0 10.461347703443927 0.0 0.0)" spreadMethod="pad" x1="107.83553121986976" y1="77.00216518176951" x2="100.43830796199" y2="69.60480863733865"><stop offset="0.0" stop-color="#8e7cc3"/><stop offset="0.5" stop-color="#8e7cc3"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.7)" d="m1000.4042 778.47504l100.630005 0l0 54.141785l-100.630005 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m1000.4042 778.47504l100.630005 0l0 54.141785l-100.630005 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1019.0955 795.5769l63.247253 0l0 21.45288l-63.247253 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1030.0643 807.77844l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515686 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484436 -0.8125 3.250061 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578186 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046936 0.625 2.265686 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm10.363525 1.578125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.094482 5.765625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1447754 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519897 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm4.0007324 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.50415 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1882324 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1082.3428 795.5769l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1019.0955 813.67926l63.247253 0l0 1.6799927l-63.247253 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/cellular/cellular.h&sa=D&source=editors&ust=1638577908356000&usg=AOvVaw1vTwDcu1mpEOqtIHxz2r9g" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1019.0955 794.54596l63.247253 0l0 22.399963l-63.247253 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#6d9eeb" d="m889.57086 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m889.57086 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m904.623 795.5769l70.525696 0l0 21.45288l-70.525696 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m906.09174 812.46594l0 -13.359375l9.65625 0l0 1.578125l-7.875 0l0 4.09375l7.375 0l0 1.5625l-7.375 0l0 4.546875l8.1875 0l0 1.578125l-9.96875 0zm15.7872925 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051636 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m975.1487 795.5769l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m904.623 813.67926l70.525696 0l0 1.6799927l-70.525696 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/ethernet/ethernet.h&sa=D&source=editors&ust=1638577908358000&usg=AOvVaw3biFSa9mbkEwor6Bzumzgu" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m904.623 794.54596l70.525696 0l0 22.399963l-70.525696 0l0 -22.399963z" fill-rule="nonzero"/></a><defs><linearGradient id="p.8" gradientUnits="userSpaceOnUse" gradientTransform="matrix(10.461347703443927 0.0 0.0 10.461347703443927 0.0 0.0)" spreadMethod="pad" x1="54.50410098866407" y1="76.91786535838355" x2="47.10687773078431" y2="69.52050881395267"><stop offset="0.0" stop-color="#f6b26b"/><stop offset="0.5" stop-color="#f6b26b"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.8)" d="m442.48557 777.5932l100.62991 0l0 54.141724l-100.62991 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m442.48557 777.5932l100.62991 0l0 54.141724l-100.62991 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m473.62048 783.695l38.360077 0l0 21.45288l-38.360077 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m478.87048 800.58405l-5.171875 -13.359375l1.921875 0l3.46875 9.703125q0.421875 1.171875 0.703125 2.1875q0.3125 -1.09375 0.71875 -2.1875l3.609375 -9.703125l1.796875 0l-5.234375 13.359375l-1.8125 0zm8.631073 0l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.662323 7.0l0 -13.359375l1.8125 0l7.015625 10.484375l0 -10.484375l1.6875 0l0 13.359375l-1.8125 0l-7.015625 -10.5l0 10.5l-1.6875 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m511.98056 783.695l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m473.62048 801.79736l38.360077 0l0 1.6799927l-38.360077 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m461.69614 805.695l62.20877 0l0 21.45288l-62.20877 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m462.5399 818.2872l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm19.459198 1.1875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.915802 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457306 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m523.9049 805.695l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m461.69614 823.79736l62.20877 0l0 1.6799927l-62.20877 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/vpn/vpn_service.h&sa=D&source=editors&ust=1638577908363000&usg=AOvVaw2zg2aHxdX1UdzAnDjKObQ7" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m473.62048 782.66406l38.360077 0l0 22.399963l-38.360077 0l0 -22.399963z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/vpn/vpn_service.h&sa=D&source=editors&ust=1638577908363000&usg=AOvVaw2zg2aHxdX1UdzAnDjKObQ7" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m461.69614 804.66406l62.20877 0l0 22.399963l-62.20877 0l0 -22.399963z" fill-rule="nonzero"/></a><defs><linearGradient id="p.9" gradientUnits="userSpaceOnUse" gradientTransform="matrix(10.461347703443927 0.0 0.0 10.461347703443927 0.0 0.0)" spreadMethod="pad" x1="65.32182956639483" y1="76.91786535838355" x2="57.92460630851507" y2="69.52050881395267"><stop offset="0.0" stop-color="#f6b26b"/><stop offset="0.5" stop-color="#f6b26b"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.9)" d="m555.65356 777.5932l100.62988 0l0 54.141724l-100.62988 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m555.65356 777.5932l100.62988 0l0 54.141724l-100.62988 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m570.191 794.695l71.55505 0l0 21.45288l-71.55505 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m571.92535 811.58405l0 -13.359375l1.765625 0l0 13.359375l-1.765625 0zm4.8864136 0l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm20.209167 2.3125l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.1292114 -0.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297607 4.84375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.766357 0l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.7926636 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm3.8323364 0.796875l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m641.74603 794.695l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m570.191 812.79736l71.55505 0l0 1.6799927l-71.55505 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/ipconfig.h&sa=D&source=editors&ust=1638577908365000&usg=AOvVaw3IXATGun4oVNE2J1C9srPL" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m570.191 793.66406l71.55505 0l0 22.399963l-71.55505 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#b6d7a8" d="m85.13386 1028.1326l197.66931 0l0 79.149536l-197.66931 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m85.13386 1028.1326l197.66931 0l0 79.149536l-197.66931 0z" fill-rule="evenodd"/><path fill="#000000" d="m143.72734 1058.7556l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.844467 4.78125l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.504196 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.9958038 1.46875l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.183304 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281967 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm23.697052 -1.578125l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm0.9851074 1.8125l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m123.308365 1060.1636l121.32028 0l0 21.45288l-121.32028 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m123.745865 1074.2869l2.5625 -0.390625q0.171875 0.75 0.671875 1.140625q0.5 0.390625 1.40625 0.390625q0.984375 0 1.484375 -0.375q0.34375 -0.25 0.34375 -0.671875q0 -0.296875 -0.1875 -0.484375q-0.1875 -0.1875 -0.859375 -0.34375q-3.09375 -0.6875 -3.921875 -1.25q-1.140625 -0.78125 -1.140625 -2.171875q0 -1.265625 0.984375 -2.109375q1.0 -0.859375 3.078125 -0.859375q1.984375 0 2.953125 0.65625q0.96875 0.640625 1.328125 1.90625l-2.40625 0.4375q-0.15625 -0.5625 -0.59375 -0.859375q-0.421875 -0.296875 -1.234375 -0.296875q-1.0 0 -1.4375 0.28125q-0.296875 0.203125 -0.296875 0.515625q0 0.265625 0.25 0.46875q0.34375 0.25 2.390625 0.71875q2.046875 0.453125 2.859375 1.140625q0.796875 0.671875 0.796875 1.890625q0 1.34375 -1.109375 2.296875q-1.109375 0.953125 -3.28125 0.953125q-1.984375 0 -3.140625 -0.796875q-1.140625 -0.8125 -1.5 -2.1875zm10.063217 -6.90625l2.71875 0l2.328125 6.859375l2.25 -6.859375l2.65625 0l-3.421875 9.3125l-0.609375 1.6875q-0.328125 0.84375 -0.640625 1.28125q-0.3125 0.453125 -0.703125 0.71875q-0.390625 0.28125 -0.96875 0.4375q-0.578125 0.15625 -1.3125 0.15625q-0.734375 0 -1.453125 -0.15625l-0.21875 -2.0q0.59375 0.125 1.078125 0.125q0.890625 0 1.3125 -0.53125q0.4375 -0.515625 0.671875 -1.328125l-3.6875 -9.703125zm10.688217 6.90625l2.5625 -0.390625q0.171875 0.75 0.671875 1.140625q0.5 0.390625 1.40625 0.390625q0.984375 0 1.484375 -0.375q0.34375 -0.25 0.34375 -0.671875q0 -0.296875 -0.1875 -0.484375q-0.1875 -0.1875 -0.859375 -0.34375q-3.09375 -0.6875 -3.921875 -1.25q-1.140625 -0.78125 -1.140625 -2.171875q0 -1.265625 0.984375 -2.109375q1.0 -0.859375 3.078125 -0.859375q1.984375 0 2.953125 0.65625q0.96875 0.640625 1.328125 1.90625l-2.40625 0.4375q-0.15625 -0.5625 -0.59375 -0.859375q-0.421875 -0.296875 -1.234375 -0.296875q-1.0 0 -1.4375 0.28125q-0.296875 0.203125 -0.296875 0.515625q0 0.265625 0.25 0.46875q0.34375 0.25 2.390625 0.71875q2.046875 0.453125 2.859375 1.140625q0.796875 0.671875 0.796875 1.890625q0 1.34375 -1.109375 2.296875q-1.109375 0.953125 -3.28125 0.953125q-1.984375 0 -3.140625 -0.796875q-1.140625 -0.8125 -1.5 -2.1875zm15.719467 -6.90625l0 2.03125l-1.75 0l0 3.90625q0 1.1875 0.046875 1.390625q0.046875 0.1875 0.21875 0.3125q0.1875 0.125 0.4375 0.125q0.359375 0 1.03125 -0.25l0.21875 2.0q-0.890625 0.375 -2.015625 0.375q-0.703125 0 -1.265625 -0.234375q-0.546875 -0.234375 -0.8125 -0.59375q-0.25 -0.375 -0.34375 -1.0q-0.09375 -0.453125 -0.09375 -1.8125l0 -4.21875l-1.171875 0l0 -2.03125l1.171875 0l0 -1.921875l2.578125 -1.5l0 3.421875l1.75 0zm7.368927 6.59375l2.546875 0.421875q-0.484375 1.40625 -1.546875 2.140625q-1.0625 0.734375 -2.65625 0.734375q-2.515625 0 -3.734375 -1.65625q-0.953125 -1.3125 -0.953125 -3.328125q0 -2.40625 1.25 -3.765625q1.265625 -1.359375 3.1875 -1.359375q2.15625 0 3.40625 1.421875q1.25 1.421875 1.1875 4.375l-6.40625 0q0.03125 1.140625 0.609375 1.78125q0.59375 0.625 1.484375 0.625q0.59375 0 1.0 -0.328125q0.421875 -0.328125 0.625 -1.0625zm0.15625 -2.59375q-0.03125 -1.109375 -0.578125 -1.6875q-0.546875 -0.578125 -1.328125 -0.578125q-0.84375 0 -1.390625 0.609375q-0.546875 0.609375 -0.53125 1.65625l3.828125 0zm4.422592 -4.0l2.359375 0l0 1.3125q1.265625 -1.53125 3.015625 -1.53125q0.9375 0 1.609375 0.390625q0.6875 0.375 1.125 1.140625q0.640625 -0.765625 1.375 -1.140625q0.75 -0.390625 1.578125 -0.390625q1.0625 0 1.796875 0.4375q0.75 0.421875 1.109375 1.265625q0.265625 0.625 0.265625 2.0l0 6.1875l-2.5625 0l0 -5.53125q0 -1.4375 -0.265625 -1.859375q-0.34375 -0.546875 -1.09375 -0.546875q-0.53125 0 -1.015625 0.328125q-0.46875 0.328125 -0.671875 0.96875q-0.203125 0.625 -0.203125 2.0l0 4.640625l-2.5625 0l0 -5.296875q0 -1.421875 -0.140625 -1.828125q-0.140625 -0.40625 -0.421875 -0.609375q-0.28125 -0.203125 -0.78125 -0.203125q-0.59375 0 -1.0625 0.328125q-0.46875 0.3125 -0.6875 0.921875q-0.203125 0.59375 -0.203125 1.984375l0 4.703125l-2.5625 0l0 -9.671875zm16.494644 6.109375l0 -2.5625l5.03125 0l0 2.5625l-5.03125 0zm6.431427 -6.109375l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm11.395981 5.0l-2.5625 0l0 -9.671875l2.375 0l0 1.375q0.609375 -0.984375 1.09375 -1.28125q0.484375 -0.3125 1.109375 -0.3125q0.875 0 1.6875 0.484375l-0.796875 2.234375q-0.640625 -0.421875 -1.203125 -0.421875q-0.53125 0 -0.90625 0.296875q-0.375 0.296875 -0.59375 1.078125q-0.203125 0.765625 -0.203125 3.234375l0 2.984375zm4.2134094 -4.96875q0 -1.28125 0.625 -2.46875q0.625 -1.203125 1.78125 -1.828125q1.15625 -0.625 2.578125 -0.625q2.1875 0 3.59375 1.421875q1.40625 1.421875 1.40625 3.609375q0 2.1875 -1.421875 3.640625q-1.421875 1.4375 -3.5625 1.4375q-1.328125 0 -2.546875 -0.59375q-1.203125 -0.609375 -1.828125 -1.765625q-0.625 -1.171875 -0.625 -2.828125zm2.625 0.125q0 1.453125 0.671875 2.21875q0.6875 0.75 1.6875 0.75q1.0 0 1.671875 -0.75q0.6875 -0.765625 0.6875 -2.234375q0 -1.421875 -0.6875 -2.1875q-0.671875 -0.765625 -1.671875 -0.765625q-1.0 0 -1.6875 0.765625q-0.671875 0.765625 -0.671875 2.203125zm8.130341 4.84375l3.484375 -4.984375l-3.34375 -4.6875l3.125 0l1.71875 2.65625l1.796875 -2.65625l3.015625 0l-3.28125 4.578125l3.578125 5.09375l-3.140625 0l-1.96875 -3.0l-1.984375 3.0l-3.0 0zm10.391357 -9.671875l2.71875 0l2.328125 6.859375l2.25 -6.859375l2.65625 0l-3.421875 9.3125l-0.609375 1.6875q-0.328125 0.84375 -0.640625 1.28125q-0.3125 0.453125 -0.703125 0.71875q-0.390625 0.28125 -0.96875 0.4375q-0.578125 0.15625 -1.3125 0.15625q-0.734375 0 -1.453125 -0.15625l-0.21875 -2.0q0.59375 0.125 1.078125 0.125q0.890625 0 1.3125 -0.53125q0.4375 -0.515625 0.671875 -1.328125l-3.6875 -9.703125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m244.62865 1060.1636l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m123.308365 1078.2659l121.32028 0l0 1.6800537l-121.32028 0l0 -1.6800537z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://cs/chromeos_public/src/platform2/system-proxy/&sa=D&source=editors&ust=1638577908370000&usg=AOvVaw1HYYmp8XSa68x_8Z7y_ow5" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m123.308365 1059.1326l121.32028 0l0 22.400024l-121.32028 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m395.38846 285.48294l148.85037 0l0 37.5748l-148.85037 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m395.38846 285.48294l148.85037 0l0 37.5748l-148.85037 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m411.28503 295.21735l117.05719 0l0 15.32605l-117.05719 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m416.67566 304.75168l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm1.7109375 -0.921875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm11.1024475 2.65625l0 -9.5625l1.078125 0l0 0.890625q0.375 -0.53125 0.84375 -0.78125q0.484375 -0.265625 1.15625 -0.265625q0.875 0 1.546875 0.453125q0.6875 0.453125 1.03125 1.28125q0.34375 0.828125 0.34375 1.828125q0 1.046875 -0.375 1.90625q-0.375 0.84375 -1.109375 1.296875q-0.71875 0.453125 -1.53125 0.453125q-0.578125 0 -1.046875 -0.25q-0.46875 -0.25 -0.765625 -0.625l0 3.375l-1.171875 0zm1.0625 -6.078125q0 1.34375 0.53125 1.984375q0.546875 0.625 1.3125 0.625q0.78125 0 1.34375 -0.65625q0.5625 -0.65625 0.5625 -2.046875q0 -1.3125 -0.546875 -1.96875q-0.546875 -0.671875 -1.296875 -0.671875q-0.75 0 -1.328125 0.703125q-0.578125 0.703125 -0.578125 2.03125zm5.9124756 -0.03125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5218506 4.125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm9.974976 -1.046875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.6717224 -1.015625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm6.2578125 2.21875l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm9.093628 -1.015625q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm2.9749756 3.46875l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm8.9696045 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm1.2734375 2.6875l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm4.578003 -0.15625l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m528.3422 295.21735l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m411.28503 308.1496l117.05725 0l0 1.2000122l-117.05725 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:components/arc/net/&sa=D&source=editors&ust=1638577908373000&usg=AOvVaw3lw2gV5L-Q06nkyJFODoJn" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m411.28503 294.48294l117.05725 0l0 16.0l-117.05725 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#dd7e6b" d="m629.29395 1198.9606l115.37012 0l0 31.716553l-115.37012 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m629.29395 1198.9606l115.37012 0l0 31.716553l-115.37012 0z" fill-rule="evenodd"/><path fill="#000000" d="m645.8408 1218.192l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm3.40625 3.546875l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.4802246 0.796875l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625zm11.391296 -2.21875q-1.015625 -0.375 -1.515625 -1.0625q-0.484375 -0.703125 -0.484375 -1.671875q0 -1.453125 1.046875 -2.4375q1.046875 -1.0 2.78125 -1.0q1.75 0 2.8125 1.015625q1.078125 1.015625 1.078125 2.46875q0 0.9375 -0.5 1.625q-0.484375 0.6875 -1.46875 1.0625q1.21875 0.390625 1.859375 1.28125q0.65625 0.890625 0.65625 2.140625q0 1.703125 -1.21875 2.875q-1.21875 1.171875 -3.1875 1.171875q-1.984375 0 -3.203125 -1.171875q-1.203125 -1.171875 -1.203125 -2.921875q0 -1.3125 0.65625 -2.1875q0.671875 -0.875 1.890625 -1.1875zm-0.328125 -2.78125q0 0.9375 0.609375 1.546875q0.609375 0.59375 1.59375 0.59375q0.9375 0 1.546875 -0.59375q0.609375 -0.59375 0.609375 -1.453125q0 -0.90625 -0.625 -1.515625q-0.625 -0.625 -1.5625 -0.625q-0.9375 0 -1.5625 0.609375q-0.609375 0.59375 -0.609375 1.4375zm-0.53125 6.15625q0 0.703125 0.328125 1.359375q0.34375 0.65625 1.0 1.015625q0.65625 0.359375 1.40625 0.359375q1.171875 0 1.9375 -0.75q0.765625 -0.75 0.765625 -1.921875q0 -1.1875 -0.796875 -1.953125q-0.78125 -0.78125 -1.953125 -0.78125q-1.15625 0 -1.921875 0.765625q-0.765625 0.765625 -0.765625 1.90625zm8.719482 -2.734375q0 -2.359375 0.484375 -3.796875q0.484375 -1.453125 1.4375 -2.234375q0.96875 -0.78125 2.421875 -0.78125q1.078125 0 1.890625 0.4375q0.8125 0.421875 1.328125 1.25q0.53125 0.8125 0.828125 1.984375q0.3125 1.15625 0.3125 3.140625q0 2.359375 -0.484375 3.8125q-0.484375 1.4375 -1.453125 2.234375q-0.953125 0.78125 -2.421875 0.78125q-1.921875 0 -3.03125 -1.390625q-1.3125 -1.671875 -1.3125 -5.4375zm1.671875 0q0 3.296875 0.765625 4.390625q0.78125 1.078125 1.90625 1.078125q1.140625 0 1.90625 -1.09375q0.765625 -1.09375 0.765625 -4.375q0 -3.296875 -0.765625 -4.375q-0.765625 -1.078125 -1.921875 -1.078125q-1.125 0 -1.796875 0.953125q-0.859375 1.21875 -0.859375 4.5zm17.313232 5.015625l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm7.9382324 1.578125l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625zm8.990295 0l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625z" fill-rule="nonzero"/><path fill="#dd7e6b" d="m762.1312 1198.9895l115.37012 0l0 31.716553l-115.37012 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m762.1312 1198.9895l115.37012 0l0 31.716553l-115.37012 0z" fill-rule="evenodd"/><path fill="#000000" d="m772.3656 1221.7678l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.853333 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm10.516296 1.3125l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm5.078125 -3.6875q-1.015625 -0.375 -1.515625 -1.0625q-0.484375 -0.703125 -0.484375 -1.671875q0 -1.453125 1.046875 -2.4375q1.046875 -1.0 2.78125 -1.0q1.75 0 2.8125 1.015625q1.078125 1.015625 1.078125 2.46875q0 0.9375 -0.5 1.625q-0.484375 0.6875 -1.46875 1.0625q1.21875 0.390625 1.859375 1.28125q0.65625 0.890625 0.65625 2.140625q0 1.703125 -1.21875 2.875q-1.21875 1.171875 -3.1875 1.171875q-1.984375 0 -3.203125 -1.171875q-1.203125 -1.171875 -1.203125 -2.921875q0 -1.3125 0.65625 -2.1875q0.671875 -0.875 1.890625 -1.1875zm-0.328125 -2.78125q0 0.9375 0.609375 1.546875q0.609375 0.59375 1.59375 0.59375q0.9375 0 1.546875 -0.59375q0.609375 -0.59375 0.609375 -1.453125q0 -0.90625 -0.625 -1.515625q-0.625 -0.625 -1.5625 -0.625q-0.9375 0 -1.5625 0.609375q-0.609375 0.59375 -0.609375 1.4375zm-0.53125 6.15625q0 0.703125 0.328125 1.359375q0.34375 0.65625 1.0 1.015625q0.65625 0.359375 1.40625 0.359375q1.171875 0 1.9375 -0.75q0.765625 -0.75 0.765625 -1.921875q0 -1.1875 -0.796875 -1.953125q-0.78125 -0.78125 -1.953125 -0.78125q-1.15625 0 -1.921875 0.765625q-0.765625 0.765625 -0.765625 1.90625zm8.719482 -2.734375q0 -2.359375 0.484375 -3.796875q0.484375 -1.453125 1.4375 -2.234375q0.96875 -0.78125 2.421875 -0.78125q1.078125 0 1.890625 0.4375q0.8125 0.421875 1.328125 1.25q0.53125 0.8125 0.828125 1.984375q0.3125 1.15625 0.3125 3.140625q0 2.359375 -0.484375 3.8125q-0.484375 1.4375 -1.453125 2.234375q-0.953125 0.78125 -2.421875 0.78125q-1.921875 0 -3.03125 -1.390625q-1.3125 -1.671875 -1.3125 -5.4375zm1.671875 0q0 3.296875 0.765625 4.390625q0.78125 1.078125 1.90625 1.078125q1.140625 0 1.90625 -1.09375q0.765625 -1.09375 0.765625 -4.375q0 -3.296875 -0.765625 -4.375q-0.765625 -1.078125 -1.921875 -1.078125q-1.125 0 -1.796875 0.953125q-0.859375 1.21875 -0.859375 4.5zm17.313232 5.015625l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm7.9382324 1.578125l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625zm8.990295 0l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625z" fill-rule="nonzero"/><path fill="#d9d9d9" d="m797.91864 1082.5487l0 0c0 -2.9195557 -2.3666992 -5.286255 -5.286194 -5.286255l-117.837036 0c-1.4020386 0 -2.746582 0.55700684 -3.737915 1.5483398c-0.99139404 0.991333 -1.5482788 2.3359375 -1.5482788 3.737915l0 21.144043c0 2.9195557 2.3666992 5.286255 5.286194 5.286255l117.837036 0c2.9194946 0 5.286194 -2.3666992 5.286194 -5.286255z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m797.91864 1082.5487l0 0c0 -2.9195557 -2.3666992 -5.286255 -5.286194 -5.286255l-117.837036 0c-1.4020386 0 -2.746582 0.55700684 -3.737915 1.5483398c-0.99139404 0.991333 -1.5482788 2.3359375 -1.5482788 3.737915l0 21.144043c0 2.9195557 2.3666992 5.286255 5.286194 5.286255l117.837036 0c2.9194946 0 5.286194 -2.3666992 5.286194 -5.286255z" fill-rule="evenodd"/><path fill="#000000" d="m681.2918 1100.0408l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.328857 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm6.2542114 -7.234375q-1.015625 -0.375 -1.515625 -1.0625q-0.484375 -0.703125 -0.484375 -1.671875q0 -1.453125 1.046875 -2.4375q1.046875 -1.0 2.78125 -1.0q1.75 0 2.8125 1.015625q1.078125 1.015625 1.078125 2.46875q0 0.9375 -0.5 1.625q-0.484375 0.6875 -1.46875 1.0625q1.21875 0.390625 1.859375 1.28125q0.65625 0.890625 0.65625 2.140625q0 1.703125 -1.21875 2.875q-1.21875 1.171875 -3.1875 1.171875q-1.984375 0 -3.203125 -1.171875q-1.203125 -1.171875 -1.203125 -2.921875q0 -1.3125 0.65625 -2.1875q0.671875 -0.875 1.890625 -1.1875zm-0.328125 -2.78125q0 0.9375 0.609375 1.546875q0.609375 0.59375 1.59375 0.59375q0.9375 0 1.546875 -0.59375q0.609375 -0.59375 0.609375 -1.453125q0 -0.90625 -0.625 -1.515625q-0.625 -0.625 -1.5625 -0.625q-0.9375 0 -1.5625 0.609375q-0.609375 0.59375 -0.609375 1.4375zm-0.53125 6.15625q0 0.703125 0.328125 1.359375q0.34375 0.65625 1.0 1.015625q0.65625 0.359375 1.40625 0.359375q1.171875 0 1.9375 -0.75q0.765625 -0.75 0.765625 -1.921875q0 -1.1875 -0.796875 -1.953125q-0.78125 -0.78125 -1.953125 -0.78125q-1.15625 0 -1.921875 0.765625q-0.765625 0.765625 -0.765625 1.90625zm8.719482 -2.734375q0 -2.359375 0.484375 -3.796875q0.484375 -1.453125 1.4375 -2.234375q0.96875 -0.78125 2.421875 -0.78125q1.078125 0 1.890625 0.4375q0.8125 0.421875 1.328125 1.25q0.53125 0.8125 0.828125 1.984375q0.3125 1.15625 0.3125 3.140625q0 2.359375 -0.484375 3.8125q-0.484375 1.4375 -1.453125 2.234375q-0.953125 0.78125 -2.421875 0.78125q-1.921875 0 -3.03125 -1.390625q-1.3125 -1.671875 -1.3125 -5.4375zm1.671875 0q0 3.296875 0.765625 4.390625q0.78125 1.078125 1.90625 1.078125q1.140625 0 1.90625 -1.09375q0.765625 -1.09375 0.765625 -4.375q0 -3.296875 -0.765625 -4.375q-0.765625 -1.078125 -1.921875 -1.078125q-1.125 0 -1.796875 0.953125q-0.859375 1.21875 -0.859375 4.5zm17.313171 5.015625l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm7.9382324 1.578125l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625zm8.990295 0l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625z" fill-rule="nonzero"/><defs><linearGradient id="p.10" gradientUnits="userSpaceOnUse" gradientTransform="matrix(11.918226986797135 0.0 0.0 11.918226986797135 0.0 0.0)" spreadMethod="pad" x1="68.35226382061998" y1="72.74442591275768" x2="59.92488040065302" y2="64.31689108923511"><stop offset="0.0" stop-color="#dd7e6b"/><stop offset="0.5" stop-color="#dd7e6b"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.10)" d="m632.54333 848.19684l163.30707 0l0 37.57483l-163.30707 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m632.54333 848.19684l163.30707 0l0 37.57483l-163.30707 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m654.5752 857.01526l119.24335 0l0 21.45282l-119.24335 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m656.0127 873.90424l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm9.8654175 2.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281982 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.8064575 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.9176636 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1569824 4.859375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.3947754 0l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28125l-2.8125 0l0 10.203125zm18.129211 -1.53125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm8.230164 -1.640625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm15.453857 2.21875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm6.59375 2.078125l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.9957886 -3.375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281982 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m773.81854 857.01526l0 0l0 21.45282l0 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m654.5752 875.11755l119.243286 0l0 1.6800537l-119.243286 0l0 -1.6800537z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/portal_detector.h?q%3Dportal%26sq%3Dpackage:chromeos_public&sa=D&source=editors&ust=1638577908382000&usg=AOvVaw3bS8kQbkxq0I9hP8Z4-PB1" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m654.5752 855.98425l119.243286 0l0 22.400024l-119.243286 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#d9d9d9" d="m470.15485 1082.6628l0 0c0 -2.9194336 2.3667297 -5.286255 5.286194 -5.286255l98.71893 0c1.4020386 0 2.746582 0.55700684 3.737915 1.5483398c0.99139404 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286133 -5.286194 5.286133l-98.71893 0c-2.919464 0 -5.286194 -2.3666992 -5.286194 -5.286133z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m470.15485 1082.6628l0 0c0 -2.9194336 2.3667297 -5.286255 5.286194 -5.286255l98.71893 0c1.4020386 0 2.746582 0.55700684 3.737915 1.5483398c0.99139404 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286133 -5.286194 5.286133l-98.71893 0c-2.919464 0 -5.286194 -2.3666992 -5.286194 -5.286133z" fill-rule="evenodd"/><path fill="#000000" d="m499.0708 1100.1549l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.1250305 0 -3.3750305 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.2656555 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.2187805 0q0.09375 1.59375 0.90625 2.453125q0.8125305 0.84375 2.0156555 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.3906555 -2.65625l5.4062805 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.9062805 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719452 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5583496 1.46875l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1916504 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1448364 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.375732 0l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0z" fill-rule="nonzero"/><path fill="#f6b26b" d="m21.83727 731.7635l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.83727 731.7635l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m52.79868 733.28265l73.60474 0l0 21.45288l-73.60474 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m54.189304 750.1717l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.2031288 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.8750038 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm21.71268 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm4.000717 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm7.769821 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051788 -10.0l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457321 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.328125 2.359375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm3.5475922 1.96875l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm13.5625 1.421875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m126.40342 733.28265l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m52.79868 751.385l73.60474 0l0 1.6799927l-73.60474 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m47.096134 755.28265l85.00983 0l0 21.45288l-85.00983 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m48.627384 772.1717l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm10.489731 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0000038 0 3.2656288 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.3281288 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.2187538 0 2.0312538 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.0312538 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281971 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.009552 0l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004196 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.188217 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.493927 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906967 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.4687424 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.6249924 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m132.10596 755.28265l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m47.096134 773.385l85.00983 0l0 1.6799927l-85.00983 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/multicast_forwarder.h?q%3Dmulticast%26ss%3Dpiper%252FGoogle%252Fchromeos_public:src%252Fplatform2%252Fpatchpanel%252F&sa=D&source=editors&ust=1638577908387000&usg=AOvVaw3KmT_wONhySwXI6hSr8WwW" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m52.79868 732.25165l73.60474 0l0 22.400024l-73.60474 0l0 -22.400024z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/multicast_forwarder.h?q%3Dmulticast%26ss%3Dpiper%252FGoogle%252Fchromeos_public:src%252Fplatform2%252Fpatchpanel%252F&sa=D&source=editors&ust=1638577908387000&usg=AOvVaw3KmT_wONhySwXI6hSr8WwW" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m47.096134 754.25165l85.00983 0l0 22.400024l-85.00983 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m179.40369 731.7644l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m179.40369 731.7644l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m204.14331 744.2836l86.04831 0l0 21.45282l-86.04831 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m204.11206 761.1726l5.125 -13.359375l1.90625 0l5.46875 13.359375l-2.015625 0l-1.546875 -4.046875l-5.59375 0l-1.46875 4.046875l-1.875 0zm3.859375 -5.484375l4.53125 0l-1.40625 -3.703125q-0.625 -1.6875 -0.9375 -2.765625q-0.265625 1.28125 -0.71875 2.546875l-1.46875 3.921875zm10.052948 5.484375l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28125l-2.8125 0l0 10.203125zm11.629196 1.578125l0 -13.359375l5.015625 0q1.53125 0 2.453125 0.40625q0.921875 0.40625 1.4375 1.25q0.53125 0.84375 0.53125 1.765625q0 0.859375 -0.46875 1.625q-0.453125 0.75 -1.390625 1.203125q1.203125 0.359375 1.859375 1.21875q0.65625 0.859375 0.65625 2.015625q0 0.9375 -0.40625 1.75q-0.390625 0.796875 -0.984375 1.234375q-0.578125 0.4375 -1.453125 0.671875q-0.875 0.21875 -2.15625 0.21875l-5.09375 0zm1.78125 -7.75l2.875 0q1.1875 0 1.6875 -0.140625q0.671875 -0.203125 1.015625 -0.671875q0.34375 -0.46875 0.34375 -1.171875q0 -0.65625 -0.328125 -1.15625q-0.3125 -0.515625 -0.90625 -0.703125q-0.59375 -0.1875 -2.03125 -0.1875l-2.65625 0l0 4.03125zm0 6.171875l3.3125 0q0.859375 0 1.203125 -0.0625q0.609375 -0.109375 1.015625 -0.359375q0.421875 -0.265625 0.6875 -0.75q0.265625 -0.484375 0.265625 -1.125q0 -0.75 -0.390625 -1.296875q-0.375 -0.546875 -1.0625 -0.765625q-0.671875 -0.234375 -1.953125 -0.234375l-3.078125 0l0 4.59375zm10.740448 1.578125l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.459213 7.0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.618927 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.203827 4.84375l3.53125 -5.03125l-3.265625 -4.640625l2.046875 0l1.484375 2.265625q0.421875 0.640625 0.671875 1.078125q0.40625 -0.59375 0.734375 -1.0625l1.640625 -2.28125l1.953125 0l-3.34375 4.546875l3.59375 5.125l-2.015625 0l-1.984375 -3.0l-0.515625 -0.8125l-2.546875 3.8125l-1.984375 0zm10.34375 3.71875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m290.19162 744.2836l0 0l0 21.45282l0 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m204.14331 762.3859l86.04831 0l0 1.6799927l-86.04831 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/adb_proxy.h;l%3D28&sa=D&source=editors&ust=1638577908389000&usg=AOvVaw0gVT2WOXF8koo6WRO5yC4V" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m204.14331 743.2526l86.04831 0l0 22.399963l-86.04831 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m21.83727 789.13324l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.83727 789.13324l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m51.751087 790.65247l75.69992 0l0 21.45282l-75.69992 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m62.719837 802.85394l1.7656288 0.453125q-0.5625038 2.171875 -2.0000038 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.9062538 2.875l-1.7343788 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.1292 -0.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.625717 4.84375l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm4.047592 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm13.953842 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm8.230179 -1.640625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.572052 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m127.45101 790.65247l0 0l0 21.45282l0 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m51.751087 808.75476l75.69992 0l0 1.6799927l-75.69992 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m58.49667 812.65247l62.20876 0l0 21.45282l-62.20876 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m59.34042 825.24457l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625038 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.8281288 -0.453125 -2.5625038 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.4531288 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.6093788 0 -2.3437538 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.6562538 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125038 0 -3.0468788 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm19.459202 1.1875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.915802 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457321 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m120.70543 812.65247l0 0l0 21.45282l0 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m58.49667 830.75476l62.20876 0l0 1.6799927l-62.20876 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/counters_service.h&sa=D&source=editors&ust=1638577908391000&usg=AOvVaw0YAbPUSZ8IkHfxKvVtjF2X" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m51.751087 789.62146l75.69992 0l0 22.399963l-75.69992 0l0 -22.399963z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/counters_service.h&sa=D&source=editors&ust=1638577908391000&usg=AOvVaw0YAbPUSZ8IkHfxKvVtjF2X" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m58.49667 811.62146l62.20876 0l0 22.399963l-62.20876 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m179.40369 789.13513l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m179.40369 789.13513l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m215.0155 790.6543l64.303925 0l0 21.45288l-64.303925 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m216.48425 807.54333l0 -13.359375l5.921875 0q1.78125 0 2.703125 0.359375q0.9375 0.359375 1.484375 1.28125q0.5625 0.90625 0.5625 2.015625q0 1.40625 -0.921875 2.390625q-0.921875 0.96875 -2.84375 1.234375q0.703125 0.34375 1.078125 0.671875q0.765625 0.703125 1.453125 1.765625l2.328125 3.640625l-2.21875 0l-1.765625 -2.78125q-0.78125 -1.203125 -1.28125 -1.828125q-0.5 -0.640625 -0.90625 -0.890625q-0.390625 -0.265625 -0.796875 -0.359375q-0.296875 -0.078125 -0.984375 -0.078125l-2.046875 0l0 5.9375l-1.765625 0zm1.765625 -7.453125l3.796875 0q1.21875 0 1.890625 -0.25q0.6875 -0.265625 1.046875 -0.8125q0.359375 -0.546875 0.359375 -1.1875q0 -0.953125 -0.6875 -1.5625q-0.6875 -0.609375 -2.1875 -0.609375l-4.21875 0l0 4.421875zm10.863571 2.609375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.625717 4.84375l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm7.625717 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051788 -10.0l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.144806 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.063232 0.796875l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m279.31943 790.6543l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m215.0155 808.75665l64.303925 0l0 1.6799927l-64.303925 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m216.0631 812.6543l62.208755 0l0 21.45288l-62.208755 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m216.90685 825.24646l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm19.459198 1.1875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.915802 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457306 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m278.27185 812.6543l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m216.0631 830.75665l62.208755 0l0 1.6799927l-62.208755 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/routing_service.h&sa=D&source=editors&ust=1638577908396000&usg=AOvVaw3mNpdQWHUGqgQAz3RILJEc" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m215.0155 789.62335l64.303925 0l0 22.399963l-64.303925 0l0 -22.399963z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/routing_service.h&sa=D&source=editors&ust=1638577908396000&usg=AOvVaw3mNpdQWHUGqgQAz3RILJEc" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m216.0631 811.62335l62.208755 0l0 22.399963l-62.208755 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#d9d9d9" d="m346.93045 1082.6642l0 0c0 -2.9195557 2.3666992 -5.286255 5.286194 -5.286255l98.71893 0c1.402008 0 2.7465515 0.55700684 3.737915 1.5483398c0.9913635 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286133 -5.286194 5.286133l-98.71893 0c-2.9194946 0 -5.286194 -2.3666992 -5.286194 -5.286133z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m346.93045 1082.6642l0 0c0 -2.9195557 2.3666992 -5.286255 5.286194 -5.286255l98.71893 0c1.402008 0 2.7465515 0.55700684 3.737915 1.5483398c0.9913635 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286133 -5.286194 5.286133l-98.71893 0c-2.9194946 0 -5.286194 -2.3666992 -5.286194 -5.286133z" fill-rule="evenodd"/><path fill="#000000" d="m370.13275 1100.1562l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.806427 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051941 1.46875l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000702 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5582886 1.46875l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1917114 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.144806 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.375732 0l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0z" fill-rule="nonzero"/><path fill="#d9d9d9" d="m300.44504 1148.4199l202.36221 0l0 37.57483l-202.36221 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m300.44504 1148.4199l202.36221 0l0 37.57483l-202.36221 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m335.78268 1157.2383l131.68689 0l0 21.45288l-131.68689 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m337.25143 1174.1273l0 -13.359375l9.65625 0l0 1.578125l-7.875 0l0 4.09375l7.375 0l0 1.5625l-7.375 0l0 4.546875l8.1875 0l0 1.578125l-9.96875 0zm15.787323 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051941 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0zm17.000702 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000702 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm13.054108 1.46875l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm9.266327 4.828125l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm6.8323364 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125702 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.572052 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m467.46957 1157.2383l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m335.78268 1175.3407l131.68689 0l0 1.6799316l-131.68689 0l0 -1.6799316z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/cros-ethernet-status&sa=D&source=editors&ust=1638577908401000&usg=AOvVaw2fX3wgsR5SJmGKFQewWcOA" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m335.78268 1156.2074l131.68689 0l0 22.399902l-131.68689 0l0 -22.399902z" fill-rule="nonzero"/></a><path fill="#d9d9d9" d="m300.34647 1200.2257l202.36218 0l0 37.57483l-202.36218 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m300.34647 1200.2257l202.36218 0l0 37.57483l-202.36218 0z" fill-rule="evenodd"/><path fill="#000000" d="m350.24847 1225.9331l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.677948 7.0l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.677948 7.0l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm21.586517 7.0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm11.828827 5.765625l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457336 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm8.485107 2.875l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#f6b26b" d="m442.48557 929.6273l148.85037 0l0 37.574768l-148.85037 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m442.48557 929.6273l148.85037 0l0 37.574768l-148.85037 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m459.8671 938.4457l114.08731 0l0 21.45288l-114.08731 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m463.78897 955.3347l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 3.703125l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.891327 4.78125l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm8.860107 3.703125l0 -1.1875l10.859375 0l0 1.1875l-10.859375 0zm11.891327 -3.703125l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.4531555 0 2.2187805 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.42190552 -0.265625 -0.9844055 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.853302 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.2038574 4.859375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm16.688232 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm3.8912964 5.65625l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625zm15.953857 1.90625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m573.9544 938.4457l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m459.8671 956.54803l114.08731 0l0 1.6799927l-114.08731 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/vpn-manager/&sa=D&source=editors&ust=1638577908405000&usg=AOvVaw29nBVuUvKpGgtY8klmLoQL" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m459.8671 937.4147l114.08731 0l0 22.400024l-114.08731 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m21.83727 846.50336l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.83727 846.50336l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m31.00421 859.0225l117.19368 0l0 21.45288l-117.19368 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m30.97296 875.9115l5.124998 -13.359375l1.90625 0l5.46875 13.359375l-2.015625 0l-1.546875 -4.046875l-5.59375 0l-1.46875 4.046875l-1.8749981 0zm3.859373 -5.484375l4.53125 0l-1.40625 -3.703125q-0.625 -1.6875 -0.9375 -2.765625q-0.265625 1.28125 -0.71875 2.546875l-1.46875 3.921875zm10.084198 5.484375l0 -13.359375l5.921875 0q1.78125 0 2.703125 0.359375q0.9375 0.359375 1.484375 1.28125q0.5625 0.90625 0.5625 2.015625q0 1.40625 -0.921875 2.390625q-0.921875 0.96875 -2.84375 1.234375q0.703125 0.34375 1.078125 0.671875q0.765625 0.703125 1.453125 1.765625l2.328125 3.640625l-2.21875 0l-1.765625 -2.78125q-0.78125 -1.203125 -1.28125 -1.828125q-0.5 -0.640625 -0.90625 -0.890625q-0.390625 -0.265625 -0.796875 -0.359375q-0.296875 -0.078125 -0.984375 -0.078125l-2.046875 0l0 5.9375l-1.765625 0zm1.765625 -7.453125l3.796875 0q1.21875 0 1.890625 -0.25q0.6875 -0.265625 1.046875 -0.8125q0.359375 -0.546875 0.359375 -1.1875q0 -0.953125 -0.6875 -1.5625q-0.6875 -0.609375 -2.1875 -0.609375l-4.21875 0l0 4.421875zm21.207325 2.765625l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.1562538 0 -3.5156288 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.2500038 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.5468788 0 -2.5781288 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.4843788 0 2.5156288 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm15.1875 4.6875l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.594467 3.640625q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.917679 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.203842 8.5625l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.203842 3.59375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051788 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m148.19789 859.0225l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m31.00421 877.1249l117.19368 0l0 1.6799927l-117.19368 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/arc_service.cc&sa=D&source=editors&ust=1638577908407000&usg=AOvVaw17_FBoPhwjcPMyT4rj__nw" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m31.00421 857.9915l117.19368 0l0 22.400024l-117.19368 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m179.4042 846.50336l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m179.4042 846.50336l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m217.11119 848.0225l60.11357 0l0 21.45288l-60.11357 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m224.65807 861.3646l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm3.0 3.546875l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.618927 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.641342 1.953125l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm12.671875 2.890625l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m277.22476 848.0225l5.183319 0l0 21.45288l-5.183319 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m217.11119 866.1249l60.11357 0l0 1.6799927l-60.11357 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m210.85753 870.0225l72.620895 0l0 21.45288l-72.620895 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m218.35753 886.9115l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.594467 3.640625q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.917679 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.203842 8.5625l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4374847 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53123474 1.1875 -1.5468597 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.203842 3.59375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781952 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051941 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m283.47842 870.0225l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m210.85753 888.1249l72.620895 0l0 1.6799927l-72.620895 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/crostini_service.cc&sa=D&source=editors&ust=1638577908412000&usg=AOvVaw368D12PAiv9TC2m5vGYbiK" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m217.11119 846.9915l65.29689 0l0 22.400024l-65.29689 0l0 -22.400024z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/crostini_service.cc&sa=D&source=editors&ust=1638577908412000&usg=AOvVaw368D12PAiv9TC2m5vGYbiK" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m210.85753 868.9915l72.620895 0l0 22.400024l-72.620895 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m85.13386 932.13257l197.66931 0l0 79.1496l-197.66931 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m85.13386 932.13257l197.66931 0l0 79.1496l-197.66931 0z" fill-rule="evenodd"/><path fill="#000000" d="m143.72734 962.7557l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.844467 4.78125l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.504196 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.9958038 1.46875l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.183304 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281967 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm23.697052 -1.578125l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm0.9851074 1.8125l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m138.8765 964.1635l90.18404 0l0 21.45288l-90.18404 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m149.09525 981.05255l-2.390625 0l0 -1.421875q-0.59375 0.828125 -1.40625 1.234375q-0.796875 0.40625 -1.609375 0.40625q-1.671875 0 -2.859375 -1.34375q-1.1875 -1.34375 -1.1875 -3.75q0 -2.453125 1.15625 -3.734375q1.15625 -1.28125 2.921875 -1.28125q1.625 0 2.8125 1.34375l0 -4.8125l2.5625 0l0 13.359375zm-6.84375 -5.046875q0 1.546875 0.4375 2.234375q0.609375 1.015625 1.71875 1.015625q0.890625 0 1.5 -0.75q0.625 -0.765625 0.625 -2.25q0 -1.671875 -0.609375 -2.40625q-0.59375 -0.734375 -1.53125 -0.734375q-0.90625 0 -1.53125 0.734375q-0.609375 0.71875 -0.609375 2.15625zm18.161606 5.046875l-2.5625 0l0 -4.9375q0 -1.5625 -0.171875 -2.015625q-0.15625 -0.46875 -0.53125 -0.71875q-0.359375 -0.265625 -0.875 -0.265625q-0.671875 0 -1.203125 0.375q-0.53125 0.359375 -0.734375 0.96875q-0.1875 0.59375 -0.1875 2.21875l0 4.375l-2.546875 0l0 -9.671875l2.375 0l0 1.421875q1.265625 -1.640625 3.1875 -1.640625q0.84375 0 1.546875 0.3125q0.703125 0.296875 1.0625 0.78125q0.359375 0.46875 0.5 1.078125q0.140625 0.59375 0.140625 1.703125l0 6.015625zm1.6928558 -2.765625l2.5625 -0.390625q0.171875 0.75 0.671875 1.140625q0.5 0.390625 1.40625 0.390625q0.984375 0 1.484375 -0.375q0.34375 -0.25 0.34375 -0.671875q0 -0.296875 -0.1875 -0.484375q-0.1875 -0.1875 -0.859375 -0.34375q-3.09375 -0.6875 -3.921875 -1.25q-1.140625 -0.78125 -1.140625 -2.171875q0 -1.265625 0.984375 -2.109375q1.0 -0.859375 3.078125 -0.859375q1.984375 0 2.953125 0.65625q0.96875 0.640625 1.328125 1.90625l-2.40625 0.4375q-0.15625 -0.5625 -0.59375 -0.859375q-0.421875 -0.296875 -1.234375 -0.296875q-1.0 0 -1.4375 0.28125q-0.296875 0.203125 -0.296875 0.515625q0 0.265625 0.25 0.46875q0.34375 0.25 2.390625 0.71875q2.046875 0.453125 2.859375 1.140625q0.796875 0.671875 0.796875 1.890625q0 1.34375 -1.109375 2.296875q-1.109375 0.953125 -3.28125 0.953125q-1.984375 0 -3.140625 -0.796875q-1.140625 -0.8125 -1.5 -2.1875zm10.985092 -0.796875l0 -2.5625l5.03125 0l0 2.5625l-5.03125 0zm6.431427 -6.109375l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm11.395981 5.0l-2.5625 0l0 -9.671875l2.375 0l0 1.375q0.609375 -0.984375 1.09375 -1.28125q0.484375 -0.3125 1.109375 -0.3125q0.875 0 1.6875 0.484375l-0.796875 2.234375q-0.640625 -0.421875 -1.203125 -0.421875q-0.53125 0 -0.90625 0.296875q-0.375 0.296875 -0.59375 1.078125q-0.203125 0.765625 -0.203125 3.234375l0 2.984375zm4.213394 -4.96875q0 -1.28125 0.625 -2.46875q0.625 -1.203125 1.78125 -1.828125q1.15625 -0.625 2.578125 -0.625q2.1875 0 3.59375 1.421875q1.40625 1.421875 1.40625 3.609375q0 2.1875 -1.421875 3.640625q-1.421875 1.4375 -3.5625 1.4375q-1.328125 0 -2.546875 -0.59375q-1.203125 -0.609375 -1.828125 -1.765625q-0.625 -1.171875 -0.625 -2.828125zm2.625 0.125q0 1.453125 0.671875 2.21875q0.6875 0.75 1.6875 0.75q1.0 0 1.671875 -0.75q0.6875 -0.765625 0.6875 -2.234375q0 -1.421875 -0.6875 -2.1875q-0.671875 -0.765625 -1.671875 -0.765625q-1.0 0 -1.6875 0.765625q-0.671875 0.765625 -0.671875 2.203125zm8.130356 4.84375l3.484375 -4.984375l-3.34375 -4.6875l3.125 0l1.7187653 2.65625l1.796875 -2.65625l3.015625 0l-3.28125 4.578125l3.578125 5.09375l-3.140625 0l-1.96875 -3.0l-1.9843903 3.0l-3.0 0zm10.391342 -9.671875l2.71875 0l2.328125 6.859375l2.25 -6.859375l2.65625 0l-3.421875 9.3125l-0.609375 1.6875q-0.328125 0.84375 -0.640625 1.28125q-0.3125 0.453125 -0.703125 0.71875q-0.390625 0.28125 -0.96875 0.4375q-0.578125 0.15625 -1.3125 0.15625q-0.734375 0 -1.453125 -0.15625l-0.21875 -2.0q0.59375 0.125 1.078125 0.125q0.890625 0 1.3125 -0.53125q0.4375 -0.515625 0.671875 -1.328125l-3.6875 -9.703125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m229.06053 964.1635l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m138.8765 982.26587l90.18402 0l0 1.6799927l-90.18402 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://cs/chromeos_public/src/platform2/dns-proxy/&sa=D&source=editors&ust=1638577908415000&usg=AOvVaw05VCZTJoPTgaCYwBYFBZj2" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m138.8765 963.13257l90.18402 0l0 22.399963l-90.18402 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#4a4aff" d="m1051.8176 88.39772l202.45667 0l0 59.685043l-202.45667 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1051.8176 88.39772l202.45667 0l0 59.685043l-202.45667 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1086.2451 112.75772l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0zm8.609375 0l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0z" fill-rule="nonzero"/><defs><linearGradient id="p.11" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.676676705825558 0.0 0.0 14.676676705825558 0.0 0.0)" spreadMethod="pad" x1="118.92581205697938" y1="33.811077392713536" x2="108.54792943839362" y2="23.433004764225224"><stop offset="0.0" stop-color="#4a4aff"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.11)" d="m1480.3806 456.65878l225.48022 0l0 79.14963l-225.48022 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1480.3806 456.65878l225.48022 0l0 79.14963l-225.48022 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1526.8021 466.3932l132.6372 0l0 15.32605l-132.6372 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1532.1615 478.4588l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm11.365601 1.234375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm8.443726 4.125l-2.625 -6.90625l1.234375 0l1.484375 4.140625q0.234375 0.65625 0.4375 1.390625q0.15625 -0.546875 0.4375 -1.3125l1.53125 -4.21875l1.21875 0l-2.625 6.90625l-1.09375 0zm4.7578125 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm7.4611816 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm6.8828125 0.3125l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm5.6468506 4.28125l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm5.656128 -0.15625l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5079346 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.7030029 -2.40625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.2093506 0q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm9.209351 2.40625l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm1.1405029 1.046875l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm6.5374756 0.15625l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm5.656006 -0.15625l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5080566 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm5.9124756 4.125l0 -0.953125l4.390625 -5.046875q-0.75 0.03125 -1.3125 0.03125l-2.828125 0l0 -0.9375l5.65625 0l0 0.765625l-3.75 4.390625l-0.71875 0.796875q0.796875 -0.0625 1.484375 -0.0625l3.1875 0l0 1.015625l-6.109375 0z" fill-rule="nonzero"/><path fill="#000099" d="m1526.8021 479.32547l132.6372 0l0 1.1999817l-132.6372 0l0 -1.1999817z" fill-rule="nonzero"/><path fill="#ffffff" d="m1512.4567 497.0188l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm7.8046875 0l4.40625 -11.453125l1.640625 0l4.6875 11.453125l-1.734375 0l-1.328125 -3.46875l-4.796875 0l-1.25 3.46875l-1.625 0zm3.3125 -4.703125l3.890625 0l-1.203125 -3.171875q-0.546875 -1.453125 -0.8125 -2.375q-0.21875 1.09375 -0.609375 2.1875l-1.265625 3.359375zm13.828125 4.703125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm13.3671875 3.109375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 7.359375l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm10.6953125 2.84375l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.453125 0l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.0859375 4.953125l0 -1.140625l5.28125 -6.0625q-0.890625 0.046875 -1.578125 0.046875l-3.390625 0l0 -1.140625l6.78125 0l0 0.921875l-4.484375 5.265625l-0.875 0.96875q0.953125 -0.078125 1.78125 -0.078125l3.828125 0l0 1.21875l-7.34375 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m1516.0231 516.0188l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm9.0703125 0l0 -11.453125l3.953125 0q1.328125 0 2.03125 0.15625q0.984375 0.234375 1.6875 0.828125q0.90625 0.765625 1.34375 1.953125q0.453125 1.1875 0.453125 2.71875q0 1.3125 -0.3125 2.328125q-0.296875 1.0 -0.78125 1.65625q-0.46875 0.65625 -1.03125 1.046875q-0.5625 0.375 -1.375 0.578125q-0.796875 0.1875 -1.828125 0.1875l-4.140625 0zm1.515625 -1.359375l2.453125 0q1.125 0 1.765625 -0.203125q0.65625 -0.21875 1.03125 -0.59375q0.546875 -0.546875 0.84375 -1.453125q0.296875 -0.90625 0.296875 -2.203125q0 -1.796875 -0.59375 -2.765625q-0.578125 -0.96875 -1.421875 -1.296875q-0.609375 -0.234375 -1.96875 -0.234375l-2.40625 0l0 8.75zm15.5390625 -1.3125l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.1328125 4.953125l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9609375 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm8.265625 0.375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.9453125 4.953125l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.0859375 4.953125l0 -1.140625l5.28125 -6.0625q-0.890625 0.046875 -1.578125 0.046875l-3.390625 0l0 -1.140625l6.78125 0l0 0.921875l-4.484375 5.265625l-0.875 0.96875q0.953125 -0.078125 1.78125 -0.078125l3.828125 0l0 1.21875l-7.34375 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:device/bluetooth/bluez&sa=D&source=editors&ust=1638577908425000&usg=AOvVaw1FheNV4kZMYC4PNgKTxSYP" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1526.8021 465.65878l132.6372 0l0 16.0l-132.6372 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#4a4aff" d="m1525.0105 634.3768l0 0c0 -2.9194946 2.3666992 -5.286194 5.286255 -5.286194l125.64807 0c1.4019775 0 2.74646 0.55688477 3.737915 1.5482788c0.991333 0.991333 1.5482178 2.3358765 1.5482178 3.737915l0 21.144104c0 2.9194946 -2.3666992 5.286194 -5.286133 5.286194l-125.64807 0c-2.9195557 0 -5.286255 -2.3666992 -5.286255 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1525.0105 634.3768l0 0c0 -2.9194946 2.3666992 -5.286194 5.286255 -5.286194l125.64807 0c1.4019775 0 2.74646 0.55688477 3.737915 1.5482788c0.991333 0.991333 1.5482178 2.3358765 1.5482178 3.737915l0 21.144104c0 2.9194946 -2.3666992 5.286194 -5.286133 5.286194l-125.64807 0c-2.9195557 0 -5.286255 -2.3666992 -5.286255 -5.286194z" fill-rule="evenodd"/><path fill="#ffffff" d="m1574.6976 649.74884l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5080566 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm5.9124756 4.125l0 -0.953125l4.390625 -5.046875q-0.75 0.03125 -1.3125 0.03125l-2.828125 0l0 -0.9375l5.65625 0l0 0.765625l-3.75 4.390625l-0.71875 0.796875q0.796875 -0.0625 1.484375 -0.0625l3.1875 0l0 1.015625l-6.109375 0zm7.6015625 0l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm2.921753 -7.796875l0.296875 -0.921875q1.03125 0.375 1.5 0.640625q-0.125 -1.1875 -0.125 -1.625l0.9375 0q-0.015625 0.640625 -0.140625 1.609375q0.65625 -0.328125 1.53125 -0.625l0.296875 0.921875q-0.828125 0.28125 -1.625 0.375q0.40625 0.34375 1.125 1.21875l-0.78125 0.5625q-0.375 -0.515625 -0.890625 -1.40625q-0.484375 0.921875 -0.84375 1.40625l-0.765625 -0.5625q0.75 -0.921875 1.078125 -1.21875q-0.84375 -0.171875 -1.59375 -0.375z" fill-rule="nonzero"/><defs><linearGradient id="p.12" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.004211477023244 0.0 0.0 14.004211477023244 0.0 0.0)" spreadMethod="pad" x1="123.80396466675418" y1="41.32674835506461" x2="113.9015840124829" y2="31.424183209047992"><stop offset="0.0" stop-color="#4a4aff"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.12)" d="m1478.9108 556.2598l232.37793 0l0 44.97638l-232.37793 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1478.9108 556.2598l232.37793 0l0 44.97638l-232.37793 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1489.8933 565.99426l129.67603 0l0 15.32605l-129.67603 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1495.2527 578.0598l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm11.365601 1.234375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm8.443726 4.125l-2.625 -6.90625l1.234375 0l1.484375 4.140625q0.234375 0.65625 0.4375 1.390625q0.15625 -0.546875 0.4375 -1.3125l1.53125 -4.21875l1.21875 0l-2.625 6.90625l-1.09375 0zm4.7578125 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm7.4611816 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm6.8828125 0.3125l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm5.6468506 4.28125l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm5.656006 -0.15625l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5080566 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.7030029 -2.40625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.2093506 0q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm9.209351 2.40625l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm1.1403809 1.046875l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm6.5374756 0.15625l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm9.062378 -0.15625l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm7.7093506 3.453125l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm10.865601 3.5l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625z" fill-rule="nonzero"/><path fill="#000000" d="m1624.3036 578.0598l0 -9.546875l3.28125 0q1.109375 0 1.703125 0.140625q0.8125 0.1875 1.390625 0.6875q0.765625 0.640625 1.140625 1.640625q0.375 0.984375 0.375 2.25q0 1.09375 -0.265625 1.9375q-0.25 0.828125 -0.65625 1.390625q-0.390625 0.546875 -0.859375 0.859375q-0.46875 0.3125 -1.140625 0.484375q-0.65625 0.15625 -1.53125 0.15625l-3.4375 0zm1.265625 -1.125l2.03125 0q0.9375 0 1.46875 -0.171875q0.546875 -0.1875 0.875 -0.5q0.4375 -0.453125 0.6875 -1.203125q0.25 -0.765625 0.25 -1.84375q0 -1.5 -0.5 -2.296875q-0.484375 -0.8125 -1.1875 -1.078125q-0.5 -0.203125 -1.625 -0.203125l-2.0 0l0 7.296875zm8.296997 1.125l0 -9.546875l3.59375 0q1.09375 0 1.75 0.296875q0.65625 0.28125 1.03125 0.890625q0.375 0.609375 0.375 1.265625q0 0.609375 -0.34375 1.15625q-0.328125 0.53125 -0.984375 0.859375q0.859375 0.25 1.328125 0.875q0.46875 0.609375 0.46875 1.4375q0 0.671875 -0.296875 1.25q-0.28125 0.578125 -0.703125 0.890625q-0.40625 0.3125 -1.03125 0.46875q-0.625 0.15625 -1.546875 0.15625l-3.640625 0zm1.265625 -5.53125l2.0625 0q0.84375 0 1.203125 -0.109375q0.484375 -0.140625 0.71875 -0.46875q0.25 -0.34375 0.25 -0.84375q0 -0.46875 -0.234375 -0.828125q-0.21875 -0.359375 -0.640625 -0.5q-0.421875 -0.140625 -1.453125 -0.140625l-1.90625 0l0 2.890625zm0 4.40625l2.375 0q0.609375 0 0.859375 -0.046875q0.4375 -0.078125 0.734375 -0.25q0.296875 -0.1875 0.484375 -0.53125q0.1875 -0.359375 0.1875 -0.8125q0 -0.53125 -0.28125 -0.921875q-0.265625 -0.40625 -0.75 -0.5625q-0.484375 -0.15625 -1.40625 -0.15625l-2.203125 0l0 3.28125zm12.0616455 1.125l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm17.78894 -1.28125l1.265625 0.3125q-0.390625 1.5625 -1.421875 2.375q-1.03125 0.8125 -2.53125 0.8125q-1.53125 0 -2.5 -0.625q-0.96875 -0.625 -1.484375 -1.8125q-0.5 -1.1875 -0.5 -2.5625q0 -1.484375 0.5625 -2.59375q0.578125 -1.109375 1.625 -1.6875q1.0625 -0.578125 2.328125 -0.578125q1.421875 0 2.390625 0.734375q0.984375 0.71875 1.375 2.046875l-1.25 0.296875q-0.328125 -1.046875 -0.96875 -1.515625q-0.625 -0.484375 -1.578125 -0.484375q-1.09375 0 -1.84375 0.53125q-0.734375 0.53125 -1.03125 1.421875q-0.296875 0.875 -0.296875 1.828125q0 1.21875 0.34375 2.125q0.359375 0.90625 1.109375 1.359375q0.75 0.4375 1.625 0.4375q1.0625 0 1.796875 -0.609375q0.734375 -0.609375 0.984375 -1.8125zm2.656372 3.34375l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9924316 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm7.6798096 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5218506 4.125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm9.974976 -1.046875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.6717529 -1.015625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625z" fill-rule="nonzero"/><path fill="#000099" d="m1489.8933 578.9265l129.67603 0l0 1.2000122l-129.67603 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:device/bluetooth/dbus&sa=D&source=editors&ust=1638577908431000&usg=AOvVaw34LLFqKMJX0U3fwON_IxNW" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1489.8933 565.2598l129.67603 0l0 16.0l-129.67603 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m1445.042 301.05774l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1445.042 301.05774l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path fill="#000000" d="m1470.2968 325.41776l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm21.03125 -11.453125l1.515625 0l0 6.609375q0 1.734375 -0.390625 2.75q-0.390625 1.015625 -1.40625 1.65625q-1.015625 0.640625 -2.671875 0.640625q-1.609375 0 -2.640625 -0.5625q-1.015625 -0.5625 -1.453125 -1.609375q-0.4375 -1.046875 -0.4375 -2.875l0 -6.609375l1.515625 0l0 6.609375q0 1.484375 0.265625 2.203125q0.28125 0.703125 0.953125 1.09375q0.6875 0.375 1.65625 0.375q1.671875 0 2.375 -0.75q0.71875 -0.765625 0.71875 -2.921875l0 -6.609375zm4.3046875 11.453125l0 -11.453125l1.515625 0l0 11.453125l-1.515625 0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1600.1207 301.05774l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1600.1207 301.05774l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path fill="#000000" d="m1635.5981 325.41776l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m1636.7192 341.74588l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm6.8984375 4.953125l3.03125 -4.3125l-2.8125 -3.984375l1.765625 0l1.265625 1.9375q0.359375 0.5625 0.578125 0.9375q0.34375 -0.515625 0.640625 -0.921875l1.390625 -1.953125l1.6875 0l-2.875 3.90625l3.09375 4.390625l-1.734375 0l-1.703125 -2.578125l-0.453125 -0.703125l-2.171875 3.28125l-1.703125 0zm12.0 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 -7.359375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0z" fill-rule="nonzero"/><path fill="#b6d7a8" d="m1557.0092 88.39895l202.45667 0l0 59.685036l-202.45667 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1557.0092 88.39895l202.45667 0l0 59.685036l-202.45667 0z" fill-rule="evenodd"/><path fill="#000000" d="m1573.3743 109.07145l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm10.484375 -0.46875q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm7.1796875 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm15.4296875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm11.015625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm8.2265625 -1.75l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0zm16.84375 -4.015625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm2.6796875 -0.140625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.328125 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm10.75 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.59375 -6.796875l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9609375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5703125 4.171875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm15.4375 -5.015625l-7.59375 3.25l0 -1.40625l6.015625 -2.484375l-6.015625 -2.46875l0 -1.40625l7.59375 3.203125l0 1.3125z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1597.3196 117.274574l121.83594 0l0 18.398445l-121.83594 0l0 -18.398445z" fill-rule="nonzero"/><path fill="#000099" d="m1606.7258 127.743324l1.515625 0.37500763q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375076 -0.609375 -3.0781326q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625076q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.1718826zm2.6796875 -0.140625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.5937576 -0.484375 2.5156326q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.2343826zm1.453125 0q0 1.5937576 0.6875 2.3906326q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375076q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.1562576l0 -8.296883l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.3437576l-1.40625 0zm11.015625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.1406326q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.3750076 0.765625 2.1093826q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.2812576l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm20.625 0.9375l1.515625 0.37500763q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375076 -0.609375 -3.0781326q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625076q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.1718826zm8.6171875 2.9843826q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.5156326 0.71875 -0.8125076q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.8750076q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.1406326q-0.765625 0.3125 -2.296875 0.5312576q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.5156326zm3.6015625 7.3593826l0 -11.484383l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.2812576 -0.46875 2.2968826q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.2968826q0 1.6093826 0.640625 2.3750076q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.4531326q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm13.0390625 3.0781326q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.5156326 0.71875 -0.8125076q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.8750076q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.1406326q-0.765625 0.3125 -2.296875 0.5312576q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.5156326zm4.8984375 4.1718826l-1.3125 0l0 -11.453133l1.40625 0l0 4.078125q0.890625 -1.109375 2.28125 -1.109375q0.765625 0 1.4375 0.3125q0.6875 0.296875 1.125 0.859375q0.453125 0.5625 0.703125 1.359375q0.25 0.78125 0.25 1.671875q0 2.1406326 -1.0625 3.3125076q-1.046875 1.15625 -2.53125 1.15625q-1.46875 0 -2.296875 -1.234375l0 1.046875zm-0.015625 -4.2187576q0 1.5000076 0.40625 2.1562576q0.65625 1.09375 1.796875 1.09375q0.921875 0 1.59375 -0.796875q0.671875 -0.8125 0.671875 -2.3906326q0 -1.625 -0.65625 -2.390625q-0.640625 -0.78125 -1.546875 -0.78125q-0.921875 0 -1.59375 0.796875q-0.671875 0.796875 -0.671875 2.3125zm7.6171875 -5.625l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm3.5234375 0l0 -11.453133l1.40625 0l0 11.453133l-1.40625 0zm3.5859375 -9.843758l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm6.6171875 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.7656326l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.8437576q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578133l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm9.2265625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.1406326q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.3750076 0.765625 2.1093826q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.2812576l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.4687576l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.39063263 -2.15625 -0.6718826q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.7343826q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m1719.1555 117.274574l0 0l0 18.398445l0 0l0 -18.398445z" fill-rule="nonzero"/><path fill="#000099" d="m1597.3196 132.79895l121.83594 0l0 1.4400024l-121.83594 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1412950271243&sa=D&source=editors&ust=1638577908440000&usg=AOvVaw02UIGcrLQ6SEg9u4plFokz" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1597.3196 116.39895l121.83594 0l0 19.200005l-121.83594 0l0 -19.200005z" fill-rule="nonzero"/></a><path fill="#b6d7a8" d="m405.87665 349.05774l163.30707 0l0 131.18109l-163.30707 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m405.87665 349.05774l163.30707 0l0 131.18109l-163.30707 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m421.74112 358.93338l35.554688 0l0 18.398438l-35.554688 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m422.44424 367.7615q0 -1.75 0.515625 -2.9375q0.390625 -0.875 1.0625 -1.5625q0.6875 -0.703125 1.484375 -1.046875q1.078125 -0.453125 2.46875 -0.453125q2.53125 0 4.046875 1.578125q1.53125 1.5625 1.53125 4.359375q0 2.78125 -1.515625 4.359375q-1.5 1.5625 -4.03125 1.5625q-2.546875 0 -4.0625 -1.5625q-1.5 -1.5625 -1.5 -4.296875zm2.375 -0.078125q0 1.9375 0.890625 2.953125q0.90625 1.0 2.296875 1.0q1.375 0 2.265625 -1.0q0.890625 -1.0 0.890625 -2.984375q0 -1.96875 -0.875 -2.9375q-0.859375 -0.96875 -2.28125 -0.96875q-1.4375 0 -2.3125 0.984375q-0.875 0.96875 -0.875 2.953125zm10.5546875 5.734375l0 -11.453125l2.25 0l4.6875 7.640625l0 -7.640625l2.15625 0l0 11.453125l-2.328125 0l-4.609375 -7.46875l0 7.46875l-2.15625 0zm18.867188 -4.21875l2.234375 0.71875q-0.515625 1.875 -1.71875 2.796875q-1.1875 0.90625 -3.03125 0.90625q-2.28125 0 -3.75 -1.5625q-1.46875 -1.5625 -1.46875 -4.265625q0 -2.859375 1.46875 -4.4375q1.484375 -1.59375 3.890625 -1.59375q2.09375 0 3.40625 1.25q0.78125 0.734375 1.171875 2.109375l-2.28125 0.546875q-0.203125 -0.890625 -0.859375 -1.40625q-0.640625 -0.515625 -1.5625 -0.515625q-1.265625 0 -2.0625 0.921875q-0.796875 0.90625 -0.796875 2.953125q0 2.171875 0.78125 3.09375q0.78125 0.921875 2.03125 0.921875q0.921875 0 1.578125 -0.578125q0.671875 -0.59375 0.96875 -1.859375z" fill-rule="nonzero"/><path fill="#000000" d="m462.913 373.41776l0 -11.453125l3.703125 0q2.109375 0 2.75 0.171875q0.984375 0.25 1.640625 1.125q0.671875 0.859375 0.671875 2.21875q0 1.0625 -0.390625 1.78125q-0.375 0.71875 -0.96875 1.125q-0.578125 0.40625 -1.1875 0.546875q-0.828125 0.15625 -2.40625 0.15625l-1.5 0l0 4.328125l-2.3125 0zm2.3125 -9.515625l0 3.25l1.265625 0q1.359375 0 1.8125 -0.171875q0.46875 -0.1875 0.734375 -0.5625q0.265625 -0.390625 0.265625 -0.90625q0 -0.625 -0.375 -1.03125q-0.359375 -0.40625 -0.921875 -0.5q-0.421875 -0.078125 -1.671875 -0.078125l-1.109375 0zm7.828125 5.25q0 -1.09375 0.53125 -2.109375q0.546875 -1.03125 1.53125 -1.5625q1.0 -0.546875 2.21875 -0.546875q1.875 0 3.078125 1.21875q1.203125 1.21875 1.203125 3.09375q0 1.875 -1.21875 3.125q-1.203125 1.234375 -3.046875 1.234375q-1.140625 0 -2.1875 -0.515625q-1.03125 -0.515625 -1.578125 -1.515625q-0.53125 -1.0 -0.53125 -2.421875zm2.25 0.109375q0 1.234375 0.578125 1.890625q0.59375 0.65625 1.453125 0.65625q0.859375 0 1.4375 -0.65625q0.59375 -0.65625 0.59375 -1.90625q0 -1.21875 -0.59375 -1.875q-0.578125 -0.65625 -1.4375 -0.65625q-0.859375 0 -1.453125 0.65625q-0.578125 0.65625 -0.578125 1.890625zm8.0390625 4.15625l0 -11.453125l2.1875 0l0 11.453125l-2.1875 0zm4.4453125 -9.421875l0 -2.03125l2.1875 0l0 2.03125l-2.1875 0zm0 9.421875l0 -8.296875l2.1875 0l0 8.296875l-2.1875 0zm11.6796875 -5.84375l-2.171875 0.390625q-0.109375 -0.65625 -0.5 -0.984375q-0.375 -0.328125 -1.0 -0.328125q-0.8125 0 -1.3125 0.578125q-0.484375 0.5625 -0.484375 1.890625q0 1.46875 0.5 2.078125q0.5 0.609375 1.328125 0.609375q0.625 0 1.015625 -0.34375q0.40625 -0.359375 0.578125 -1.234375l2.15625 0.375q-0.34375 1.484375 -1.296875 2.25q-0.953125 0.75 -2.546875 0.75q-1.828125 0 -2.90625 -1.140625q-1.078125 -1.15625 -1.078125 -3.1875q0 -2.0625 1.078125 -3.203125q1.09375 -1.140625 2.9375 -1.140625q1.515625 0 2.40625 0.65625q0.90625 0.640625 1.296875 1.984375zm0.6171875 -2.453125l2.34375 0l1.984375 5.890625l1.9375 -5.890625l2.265625 0l-2.921875 7.984375l-0.53125 1.453125q-0.28125 0.71875 -0.546875 1.09375q-0.265625 0.390625 -0.609375 0.625q-0.328125 0.25 -0.828125 0.375q-0.5 0.140625 -1.125 0.140625q-0.625 0 -1.234375 -0.140625l-0.203125 -1.71875q0.515625 0.109375 0.9375 0.109375q0.765625 0 1.125 -0.453125q0.375 -0.453125 0.5625 -1.140625l-3.15625 -8.328125zm21.734406 4.078125l2.234375 0.71875q-0.515625 1.875 -1.71875 2.796875q-1.1875 0.90625 -3.03125 0.90625q-2.28125 0 -3.75 -1.5625q-1.46875 -1.5625 -1.46875 -4.265625q0 -2.859375 1.46875 -4.4375q1.484375 -1.59375 3.890625 -1.59375q2.09375 0 3.40625 1.25q0.78125 0.734375 1.171875 2.109375l-2.28125 0.546875q-0.203125 -0.890625 -0.859375 -1.40625q-0.640625 -0.515625 -1.5625 -0.515625q-1.265625 0 -2.0625 0.921875q-0.796875 0.90625 -0.796875 2.953125q0 2.171875 0.78125 3.09375q0.78125 0.921875 2.03125 0.921875q0.921875 0 1.578125 -0.578125q0.671875 -0.59375 0.96875 -1.859375zm3.6953125 -0.046875q0 -1.09375 0.53125 -2.109375q0.546875 -1.03125 1.53125 -1.5625q1.0 -0.546875 2.21875 -0.546875q1.875 0 3.078125 1.21875q1.203064 1.21875 1.203064 3.09375q0 1.875 -1.218689 3.125q-1.203125 1.234375 -3.046875 1.234375q-1.140625 0 -2.1875 -0.515625q-1.03125 -0.515625 -1.578125 -1.515625q-0.53125 -1.0 -0.53125 -2.421875zm2.25 0.109375q0 1.234375 0.578125 1.890625q0.59375 0.65625 1.453125 0.65625q0.859375 0 1.4375 -0.65625q0.59375 -0.65625 0.59375 -1.90625q0 -1.21875 -0.59375 -1.875q-0.578125 -0.65625 -1.4375 -0.65625q-0.859375 0 -1.453125 0.65625q-0.578125 0.65625 -0.578125 1.890625zm15.648376 4.15625l-2.046875 0l0 -1.21875q-0.5 0.703125 -1.203125 1.0625q-0.6875 0.34375 -1.390625 0.34375q-1.421875 0 -2.453125 -1.15625q-1.015625 -1.15625 -1.015625 -3.21875q0 -2.109375 0.984375 -3.203125q1.0 -1.09375 2.515625 -1.09375q1.390625 0 2.40625 1.15625l0 -4.125l2.203125 0l0 11.453125zm-5.859375 -4.328125q0 1.328125 0.359375 1.921875q0.53125 0.859375 1.484375 0.859375q0.765625 0 1.296875 -0.640625q0.53125 -0.65625 0.53125 -1.9375q0 -1.421875 -0.515625 -2.046875q-0.515625 -0.640625 -1.328125 -0.640625q-0.78125 0 -1.3125 0.625q-0.515625 0.625 -0.515625 1.859375zm12.8203125 1.6875l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0z" fill-rule="nonzero"/><path fill="#000099" d="m421.74112 374.45773l35.554688 0l0 1.4400024l-35.554688 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#000000" d="m430.95206 411.41776l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.453125 1.859375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9453125 4.15625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5859375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9609375 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.59375 -6.796875l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm9.2265625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm18.414062 1.453125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 7.359375l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.6328125 7.296875l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625305 0 1.8750305 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.8281555 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375305 0 1.6094055 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625305 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.601593 4.109375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5859375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm9.2265625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.210876 4.953125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.82806396 -0.546875 -1.296814 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.249939 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm8.3203125 4.140625l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0z" fill-rule="nonzero"/><path fill="#000000" d="m441.07315 430.41776l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm11.109375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5703125 4.171875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5859375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9296875 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm13.3671875 3.109375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2109375 4.953125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm8.3203125 4.140625l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm13.9375305 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.1094055 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.7187805 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.3750305 -0.1875q0.1875 -0.875 0.6094055 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.273376 0l0 -1.046875q-0.78125 1.234375 -2.312439 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59368896 0.3125 0.95306396 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.437439 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.562439 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65618896 -0.796875 -1.624939 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875z" fill-rule="nonzero"/><path fill="#000000" d="m453.90128 452.60526l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm13.0390625 3.078125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.0390625 1.6875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.0 0l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm14.234375 -0.1875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2109375 4.953125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm15.4687805 2.875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.7656555 0 -1.1875305 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.4062805 0l0 1.09375l-1.4062805 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.17190552 0.09375 0.48440552 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375z" fill-rule="nonzero"/><path fill="#000000" d="m429.6122 468.41776l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm17.070312 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0zm8.21875 0l0 -11.453125l1.515625 0l0 4.703125l5.953125 0l0 -4.703125l1.515625 0l0 11.453125l-1.515625 0l0 -5.40625l-5.953125 0l0 5.40625l-1.515625 0zm16.742188 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.6406555 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.9062805 0 -1.5625305 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.273468 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm7.9296875 4.140625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.257751 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359314 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.656189 0 2.703064 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.187439 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78118896 0 1.328064 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609314 -2.28125l4.624939 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734314 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8202515 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8515625 0l0 -1.609375l1.609375 0l0 1.609375l-1.609375 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:components/onc/docs/onc_spec.md?q%3Donc_spec.md%26ss%3Dchromium&sa=D&source=editors&ust=1638577908448000&usg=AOvVaw2gP4DCQLjPpnEUVaYfcomF" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m421.74112 358.05774l35.554688 0l0 19.200012l-35.554688 0l0 -19.200012z" fill-rule="nonzero"/></a><path fill="#b6d7a8" d="m404.81628 492.5643l163.30707 0l0 54.141754l-163.30707 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m404.81628 492.5643l163.30707 0l0 54.141754l-163.30707 0z" fill-rule="evenodd"/><path fill="#000000" d="m423.3878 512.70557l2.234375 0.71875q-0.515625 1.875 -1.71875 2.796875q-1.1875 0.90625 -3.03125 0.90625q-2.28125 0 -3.75 -1.5625q-1.46875 -1.5625 -1.46875 -4.265625q0 -2.859375 1.46875 -4.4375q1.484375 -1.59375 3.890625 -1.59375q2.09375 0 3.40625 1.25q0.78125 0.734375 1.171875 2.109375l-2.28125 0.546875q-0.203125 -0.890625 -0.859375 -1.40625q-0.640625 -0.515625 -1.5625 -0.515625q-1.265625 0 -2.0625 0.921875q-0.796875 0.90625 -0.796875 2.953125q0 2.171875 0.78125 3.09375q0.78125 0.921875 2.03125 0.921875q0.921875 0 1.578125 -0.578125q0.671875 -0.59375 0.96875 -1.859375zm9.0078125 1.578125l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm6.0703125 4.859375l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625zm7.9296875 -8.296875l0 1.75l-1.5 0l0 3.34375q0 1.015625 0.046875 1.1875q0.046875 0.15625 0.1875 0.265625q0.15625 0.109375 0.375 0.109375q0.3125 0 0.890625 -0.203125l0.1875 1.703125q-0.765625 0.328125 -1.734375 0.328125q-0.59375 0 -1.078125 -0.203125q-0.46875 -0.203125 -0.703125 -0.515625q-0.21875 -0.3125 -0.296875 -0.859375q-0.078125 -0.375 -0.078125 -1.546875l0 -3.609375l-1.0 0l0 -1.75l1.0 0l0 -1.65625l2.203125 -1.28125l0 2.9375l1.5 0zm1.53125 -1.125l0 -2.03125l2.1875 0l0 2.03125l-2.1875 0zm0 9.421875l0 -8.296875l2.1875 0l0 8.296875l-2.1875 0zm3.4765625 -8.296875l1.21875 0l0 -0.625q0 -1.046875 0.21875 -1.5625q0.234375 -0.515625 0.828125 -0.84375q0.59375 -0.328125 1.515625 -0.328125q0.9375 0 1.828125 0.28125l-0.296875 1.53125q-0.515625 -0.125 -1.0 -0.125q-0.484375 0 -0.6875 0.234375q-0.203125 0.21875 -0.203125 0.84375l0 0.59375l1.640625 0l0 1.71875l-1.640625 0l0 6.578125l-2.203125 0l0 -6.578125l-1.21875 0l0 -1.71875zm6.296875 -1.125l0 -2.03125l2.1875 0l0 2.03125l-2.1875 0zm0 9.421875l0 -8.296875l2.1875 0l0 8.296875l-2.1875 0zm11.6796875 -5.84375l-2.171875 0.390625q-0.109375 -0.65625 -0.5 -0.984375q-0.375 -0.328125 -1.0 -0.328125q-0.8125 0 -1.3125 0.578125q-0.484375 0.5625 -0.484375 1.890625q0 1.46875 0.5 2.078125q0.5 0.609375 1.328125 0.609375q0.625 0 1.015625 -0.34375q0.40625 -0.359375 0.578125 -1.234375l2.15625 0.375q-0.34375 1.484375 -1.296875 2.25q-0.953125 0.75 -2.546875 0.75q-1.828125 0 -2.90625 -1.140625q-1.078125 -1.15625 -1.078125 -3.1875q0 -2.0625 1.078125 -3.203125q1.09375 -1.140625 2.9375 -1.140625q1.515625 0 2.40625 0.65625q0.90625 0.640625 1.296875 1.984375zm3.3046875 0.078125l-2.0 -0.359375q0.34375 -1.203125 1.15625 -1.78125q0.828125 -0.578125 2.4375 -0.578125q1.46875 0 2.1875 0.34375q0.71875 0.34375 1.015625 0.890625q0.296875 0.53125 0.296875 1.953125l-0.03125 2.5625q0 1.09375 0.109375 1.625q0.109375 0.515625 0.390625 1.109375l-2.171875 0q-0.078125 -0.21875 -0.203125 -0.65625q-0.0625 -0.1875 -0.078125 -0.25q-0.5625 0.546875 -1.203125 0.828125q-0.640625 0.265625 -1.375 0.265625q-1.28125 0 -2.015625 -0.6875q-0.734375 -0.703125 -0.734375 -1.765625q0 -0.703125 0.328125 -1.25q0.34375 -0.5625 0.9375 -0.84375q0.609375 -0.296875 1.75 -0.515625q1.546875 -0.296875 2.140625 -0.546875l0 -0.21875q0 -0.625 -0.3125 -0.890625q-0.3125 -0.28125 -1.1875 -0.28125q-0.578125 0 -0.90625 0.234375q-0.328125 0.234375 -0.53125 0.8125zm2.9375 1.78125q-0.421875 0.140625 -1.34375 0.34375q-0.90625 0.1875 -1.1875 0.375q-0.4375 0.296875 -0.4375 0.765625q0 0.46875 0.34375 0.8125q0.34375 0.328125 0.875 0.328125q0.59375 0 1.140625 -0.390625q0.390625 -0.296875 0.515625 -0.734375q0.09375 -0.28125 0.09375 -1.0625l0 -0.4375zm8.1171875 -4.3125l0 1.75l-1.5 0l0 3.34375q0 1.015625 0.046875 1.1875q0.046875 0.15625 0.1875 0.265625q0.15625 0.109375 0.375 0.109375q0.3125 0 0.890625 -0.203125l0.1875 1.703125q-0.765625 0.328125 -1.734375 0.328125q-0.59375 0 -1.078125 -0.203125q-0.46875 -0.203125 -0.703125 -0.515625q-0.21875 -0.3125 -0.296875 -0.859375q-0.078125 -0.375 -0.078125 -1.546875l0 -3.609375l-1.0 0l0 -1.75l1.0 0l0 -1.65625l2.203125 -1.28125l0 2.9375l1.5 0zm6.328125 5.65625l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm3.9921875 4.859375l0 -11.453125l3.703125 0q2.109375 0 2.75 0.171875q0.984375 0.25 1.640625 1.125q0.671875 0.859375 0.671875 2.21875q0 1.0625 -0.390625 1.78125q-0.375 0.71875 -0.96875 1.125q-0.578125 0.40625 -1.1875 0.546875q-0.828125 0.15625 -2.40625 0.15625l-1.5 0l0 4.328125l-2.3125 0zm2.3125 -9.515625l0 3.25l1.265625 0q1.359375 0 1.8125 -0.171875q0.46875 -0.1875 0.734375 -0.5625q0.265625 -0.390625 0.265625 -0.90625q0 -0.625 -0.375 -1.03125q-0.359375 -0.40625 -0.921875 -0.5q-0.421875 -0.078125 -1.671875 -0.078125l-1.109375 0zm10.4375 9.515625l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625zm3.6171875 -4.265625q0 -1.09375 0.53125 -2.109375q0.546875 -1.03125 1.5312195 -1.5625q1.0 -0.546875 2.21875 -0.546875q1.875 0 3.078125 1.21875q1.203125 1.21875 1.203125 3.09375q0 1.875 -1.21875 3.125q-1.203125 1.234375 -3.046875 1.234375q-1.140625 0 -2.1875 -0.515625q-1.0312195 -0.515625 -1.5780945 -1.515625q-0.53125 -1.0 -0.53125 -2.421875zm2.2499695 0.109375q0 1.234375 0.578125 1.890625q0.59375 0.65625 1.453125 0.65625q0.859375 0 1.4375 -0.65625q0.59375 -0.65625 0.59375 -1.90625q0 -1.21875 -0.59375 -1.875q-0.578125 -0.65625 -1.4375 -0.65625q-0.859375 0 -1.453125 0.65625q-0.578125 0.65625 -0.578125 1.890625zm10.3203125 4.15625l-3.34375 -8.296875l2.296875 0l1.5625 4.234375l0.453125 1.40625q0.1875 -0.53125 0.234375 -0.703125q0.109375 -0.359375 0.234375 -0.703125l1.578125 -4.234375l2.25 0l-3.296875 8.296875l-1.96875 0zm6.6171875 -9.421875l0 -2.03125l2.1875 0l0 2.03125l-2.1875 0zm0 9.421875l0 -8.296875l2.1875 0l0 8.296875l-2.1875 0zm12.0546875 0l-2.046875 0l0 -1.21875q-0.5 0.703125 -1.203125 1.0625q-0.6875 0.34375 -1.390625 0.34375q-1.421875 0 -2.453125 -1.15625q-1.015625 -1.15625 -1.015625 -3.21875q0 -2.109375 0.984375 -3.203125q1.0 -1.09375 2.515625 -1.09375q1.390625 0 2.40625 1.15625l0 -4.125l2.203125 0l0 11.453125zm-5.859375 -4.328125q0 1.328125 0.359375 1.921875q0.53125 0.859375 1.484375 0.859375q0.765625 0 1.296875 -0.640625q0.53125 -0.65625 0.53125 -1.9375q0 -1.421875 -0.515625 -2.046875q-0.515625 -0.640625 -1.328125 -0.640625q-0.78125 0 -1.3125 0.625q-0.515625 0.625 -0.515625 1.859375zm12.8203125 1.6875l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm6.0703125 4.859375l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1472.627 404.8479l0 0c0 -3.4587402 2.803955 -6.2626038 6.2626953 -6.2626038l219.85266 0c1.6610107 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8343506 2.7673645 1.8343506 4.428314l0 25.049622c0 3.4587097 -2.803955 6.2625732 -6.2626953 6.2625732l-219.85266 0c-3.4587402 0 -6.2626953 -2.8038635 -6.2626953 -6.2625732z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1472.627 404.8479l0 0c0 -3.4587402 2.803955 -6.2626038 6.2626953 -6.2626038l219.85266 0c1.6610107 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8343506 2.7673645 1.8343506 4.428314l0 25.049622c0 3.4587097 -2.803955 6.2625732 -6.2626953 6.2625732l-219.85266 0c-3.4587402 0 -6.2626953 -2.8038635 -6.2626953 -6.2625732z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1486.9481 410.15396l203.73572 0l0 15.32605l-203.73572 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1492.3387 419.6883l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0164795 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm4.453003 0l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5080566 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.70288086 -2.40625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.2093506 0q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm9.209351 2.40625l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm1.1405029 1.046875l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm6.3343506 2.65625l0 -0.859375l7.765625 0l0 0.859375l-7.765625 0zm13.006226 -5.1875l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm1.7109375 -0.921875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm7.6937256 0l0 -6.0l-1.03125 0l0 -0.90625l1.03125 0l0 -0.734375q0 -0.703125 0.125 -1.046875q0.171875 -0.453125 0.59375 -0.734375q0.421875 -0.28125 1.203125 -0.28125q0.484375 0 1.09375 0.109375l-0.1875 1.03125q-0.359375 -0.0625 -0.6875 -0.0625q-0.53125 0 -0.75 0.234375q-0.21875 0.21875 -0.21875 0.84375l0 0.640625l1.34375 0l0 0.90625l-1.34375 0l0 6.0l-1.171875 0zm3.437378 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.7266846 0.578125l1.140625 0.15625q0.078125 0.53125 0.40625 0.78125q0.4375 0.3125 1.1875 0.3125q0.8125 0 1.25 -0.328125q0.453125 -0.3125 0.609375 -0.90625q0.09375 -0.359375 0.078125 -1.5q-0.765625 0.90625 -1.90625 0.90625q-1.4375 0 -2.21875 -1.03125q-0.78125 -1.03125 -0.78125 -2.46875q0 -0.984375 0.359375 -1.8125q0.359375 -0.84375 1.03125 -1.296875q0.6875 -0.453125 1.609375 -0.453125q1.21875 0 2.015625 0.984375l0 -0.828125l1.078125 0l0 5.96875q0 1.609375 -0.328125 2.28125q-0.328125 0.6875 -1.046875 1.078125q-0.703125 0.390625 -1.75 0.390625q-1.234375 0 -2.0 -0.5625q-0.75 -0.5625 -0.734375 -1.671875zm0.984375 -4.15625q0 1.359375 0.53125 1.984375q0.546875 0.625 1.359375 0.625q0.796875 0 1.34375 -0.625q0.546875 -0.625 0.546875 -1.953125q0 -1.265625 -0.5625 -1.90625q-0.5625 -0.640625 -1.359375 -0.640625q-0.765625 0 -1.3125 0.640625q-0.546875 0.625 -0.546875 1.875zm6.9749756 3.578125l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374878 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm10.664917 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 -4.734375l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm-1.484375 10.875l0.21875 -1.0q0.359375 0.09375 0.546875 0.09375q0.359375 0 0.53125 -0.25q0.1875 -0.234375 0.1875 -1.1875l0 -7.25l1.171875 0l0 7.28125q0 1.28125 -0.328125 1.78125q-0.4375 0.65625 -1.40625 0.65625q-0.484375 0 -0.921875 -0.125zm4.0080566 -6.140625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1690.6838 410.15396l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1486.9481 423.0862l203.73572 0l0 1.2000122l-203.73572 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom;drc%3Df9be5b6a5e75d03f58a9c62fd3649fc7801b2a2e&sa=D&source=editors&ust=1638577908456000&usg=AOvVaw3uOJWnLrnW4k6VWbEkyM_B" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1486.9481 409.41956l203.73572 0l0 16.0l-203.73572 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#4a4aff" d="m1456.1392 674.9134l322.07874 0l0 347.65356l-322.07874 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1456.1392 674.9134l322.07874 0l0 347.65356l-322.07874 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1585.1746 685.2268l64.00781 0l0 27.597656l-64.00781 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#ffffff" d="m1586.9402 689.76587l6.859375 0q2.046875 0 3.046875 0.171875q1.0 0.171875 1.78125 0.71875q0.796875 0.53125 1.328125 1.4375q0.53125 0.890625 0.53125 2.0q0 1.203125 -0.65625 2.21875q-0.65625 1.0 -1.765625 1.515625q1.578125 0.453125 2.421875 1.5625q0.84375 1.09375 0.84375 2.578125q0 1.171875 -0.546875 2.28125q-0.546875 1.109375 -1.5 1.78125q-0.9375 0.65625 -2.3125 0.796875q-0.875 0.09375 -4.1875 0.125l-5.84375 0l0 -17.1875zm3.46875 2.859375l0 3.984375l2.265625 0q2.03125 0 2.515625 -0.0625q0.890625 -0.109375 1.40625 -0.609375q0.515625 -0.515625 0.515625 -1.34375q0 -0.796875 -0.453125 -1.296875q-0.4375 -0.5 -1.296875 -0.609375q-0.515625 -0.0625 -2.96875 -0.0625l-1.984375 0zm0 6.84375l0 4.59375l3.203125 0q1.875 0 2.375 -0.109375q0.78125 -0.140625 1.265625 -0.6875q0.484375 -0.546875 0.484375 -1.453125q0 -0.78125 -0.375 -1.3125q-0.375 -0.546875 -1.09375 -0.78125q-0.703125 -0.25 -3.0625 -0.25l-2.796875 0zm13.816406 7.484375l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm14.871094 0l0 -1.859375q-0.6875 0.984375 -1.796875 1.5625q-1.109375 0.578125 -2.328125 0.578125q-1.265625 0 -2.265625 -0.546875q-0.984375 -0.5625 -1.4375 -1.546875q-0.4375 -1.0 -0.4375 -2.765625l0 -7.875l3.296875 0l0 5.71875q0 2.625 0.171875 3.21875q0.1875 0.59375 0.65625 0.9375q0.484375 0.34375 1.234375 0.34375q0.84375 0 1.5 -0.453125q0.671875 -0.46875 0.921875 -1.15625q0.25 -0.6875 0.25 -3.359375l0 -5.25l3.28125 0l0 12.453125l-3.046875 0zm13.675781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm4.6289062 7.296875l0 -2.5625l4.65625 -5.359375q1.15625 -1.3125 1.703125 -1.859375q-0.578125 0.03125 -1.515625 0.046875l-4.390625 0.015625l0 -2.734375l10.28125 0l0 2.34375l-4.75 5.484375l-1.671875 1.8125q1.359375 -0.078125 1.6875 -0.078125l5.109375 0l0 2.890625l-11.109375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1649.1824 685.2268l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#ffffff" d="m1585.1746 708.51337l64.00781 0l0 2.1600342l-64.00781 0l0 -2.1600342z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/third_party/bluez/&sa=D&source=editors&ust=1638577908458000&usg=AOvVaw2XcANOYvAC_PQRsMRV31ge" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1585.1746 683.9134l64.00781 0l0 28.799988l-64.00781 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#4a4aff" d="m1533.8398 1140.8188l197.66931 0l0 54.141724l-197.66931 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1533.8398 1140.8188l197.66931 0l0 54.141724l-197.66931 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1579.967 1167.7389l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.37072754 1.703125l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0zm7.9177246 -0.234375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.844482 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519775 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm10.672607 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.9958496 -3.375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.68811 0q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm12.875732 3.375l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6052246 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#4a4aff" d="m1493.042 1291.8818l295.11816 0l0 79.14966l-295.11816 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1493.042 1291.8818l295.11816 0l0 79.14966l-295.11816 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1630.0406 1318.8019l0 -13.359375l5.015625 0q1.53125 0 2.453125 0.40625q0.921875 0.40625 1.4375 1.25q0.53125 0.84375 0.53125 1.765625q0 0.859375 -0.46875 1.625q-0.453125 0.75 -1.390625 1.203125q1.203125 0.359375 1.859375 1.21875q0.65625 0.859375 0.65625 2.015625q0 0.9375 -0.40625 1.75q-0.390625 0.796875 -0.984375 1.234375q-0.578125 0.4375 -1.453125 0.671875q-0.875 0.21875 -2.15625 0.21875l-5.09375 0zm1.78125 -7.75l2.875 0q1.1875 0 1.6875 -0.140625q0.671875 -0.203125 1.015625 -0.671875q0.34375 -0.46875 0.34375 -1.171875q0 -0.65625 -0.328125 -1.15625q-0.3125 -0.515625 -0.90625 -0.703125q-0.59375 -0.1875 -2.03125 -0.1875l-2.65625 0l0 4.03125zm0 6.171875l3.3125 0q0.859375 0 1.203125 -0.0625q0.609375 -0.109375 1.015625 -0.359375q0.421875 -0.265625 0.6875 -0.75q0.265625 -0.484375 0.265625 -1.125q0 -0.75 -0.390625 -1.296875q-0.375 -0.546875 -1.0625 -0.765625q-0.671875 -0.234375 -1.953125 -0.234375l-3.078125 0l0 4.59375zm14.1467285 1.578125l0 -11.78125l-4.40625 0l0 -1.578125l10.578125 0l0 1.578125l-4.40625 0l0 11.78125l-1.765625 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m1556.8534 1344.7238q-1.359375 -1.703125 -2.296875 -4.0q-0.9375 -2.296875 -0.9375 -4.765625q0 -2.15625 0.703125 -4.140625q0.828125 -2.3125 2.53125 -4.59375l1.171875 0q-1.09375 1.890625 -1.453125 2.703125q-0.546875 1.25 -0.875 2.625q-0.390625 1.703125 -0.390625 3.421875q0 4.375 2.71875 8.75l-1.171875 0zm12.8220215 -8.609375l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.1291504 -0.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297607 4.84375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm13.953857 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5895996 1.46875l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.6188965 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.250732 4.84375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1447754 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.816772 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm11.708374 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1292725 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm17.322021 0l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004272 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1881104 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.853394 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm10.219482 9.6875l-1.1875 0q2.734375 -4.375 2.734375 -8.75q0 -1.71875 -0.390625 -3.390625q-0.3125 -1.375 -0.875 -2.625q-0.359375 -0.828125 -1.46875 -2.734375l1.1875 0q1.703125 2.28125 2.53125 4.59375q0.6875 1.984375 0.6875 4.140625q0 2.46875 -0.9375 4.765625q-0.9375 2.296875 -2.28125 4.0z" fill-rule="nonzero"/><path fill="#4a4aff" d="m1472.1392 754.09186l287.3385 0l0 247.62207l-287.3385 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1472.1392 754.09186l287.3385 0l0 247.62207l-287.3385 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1563.2888 786.13184l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.378906 6.3125l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm13.535156 0l0 -1.828125q-1.453125 2.109375 -3.9375 2.109375q-1.109375 0 -2.0625 -0.421875q-0.953125 -0.421875 -1.421875 -1.0625q-0.453125 -0.640625 -0.640625 -1.5625q-0.140625 -0.625 -0.140625 -1.96875l0 -7.71875l2.109375 0l0 6.90625q0 1.65625 0.140625 2.234375q0.1875 0.828125 0.828125 1.3125q0.65625 0.46875 1.609375 0.46875q0.9375 0 1.765625 -0.484375q0.84375 -0.5 1.1875 -1.328125q0.34375 -0.84375 0.34375 -2.4375l0 -6.671875l2.109375 0l0 12.453125l-1.890625 0zm13.722656 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm16.363281 5.53125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm1.2773438 -4.328125q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.175781 0q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm16.566406 4.328125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm2.0585938 1.890625l0 -17.1875l2.109375 0l0 6.171875q1.484375 -1.71875 3.734375 -1.71875q1.375 0 2.390625 0.546875q1.03125 0.546875 1.46875 1.515625q0.4375 0.953125 0.4375 2.78125l0 7.890625l-2.109375 0l0 -7.890625q0 -1.578125 -0.6875 -2.296875q-0.6875 -0.71875 -1.9375 -0.71875q-0.9375 0 -1.765625 0.484375q-0.828125 0.484375 -1.1875 1.3125q-0.34375 0.828125 -0.34375 2.296875l0 6.8125l-2.109375 0zm21.425781 0l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375z" fill-rule="nonzero"/><path fill="#d9d9d9" d="m1665.2179 1067.0526l0 0c0 -2.9195557 -2.3666992 -5.286255 -5.286255 -5.286255l-117.837036 0c-1.4019775 0 -2.746582 0.55700684 -3.737915 1.5483398c-0.991333 0.991333 -1.5483398 2.3359375 -1.5483398 3.737915l0 21.144165c0 2.9194336 2.3666992 5.286133 5.286255 5.286133l117.837036 0c2.9195557 0 5.286255 -2.3666992 5.286255 -5.286133z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m1665.2179 1067.0526l0 0c0 -2.9195557 -2.3666992 -5.286255 -5.286255 -5.286255l-117.837036 0c-1.4019775 0 -2.746582 0.55700684 -3.737915 1.5483398c-0.991333 0.991333 -1.5483398 2.3359375 -1.5483398 3.737915l0 21.144165c0 2.9194336 2.3666992 5.286133 5.286255 5.286133l117.837036 0c2.9195557 0 5.286255 -2.3666992 5.286255 -5.286133z" fill-rule="evenodd"/><path fill="#000000" d="m1569.9677 1081.654l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm9.375 -1.953125q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.610107 1.296875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm3.015625 3.546875l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0zm15.953125 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.94885254 -1.421875l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#4a4aff" d="m1533.8398 1209.6035l197.66931 0l0 44.97632l-197.66931 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1533.8398 1209.6035l197.66931 0l0 44.97632l-197.66931 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1571.211 1236.5234l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm9.266357 4.828125l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm6.8323975 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.5720215 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm8.75 3.125l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0zm7.9177246 -0.234375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.84436 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519897 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm10.672607 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.99572754 -3.375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.688232 0q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm12.875732 3.375l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6052246 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1745.21 421.97113l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1745.21 421.97113l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path fill="#000000" d="m1804.6757 443.28424l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.578125 3.046875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm10.75 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.0390625 1.6875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1628.2518 227.64043l263.71643 0l0 37.574783l-263.71643 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1628.2518 227.64043l263.71643 0l0 37.574783l-263.71643 0z" fill-rule="evenodd"/><path fill="#000000" d="m1725.6871 248.16042l-1.90625 -6.21875l1.09375 0l0.984375 3.59375l0.375 1.328125q0.03125 -0.09375 0.328125 -1.28125l0.984375 -3.640625l1.078125 0l0.9375 3.609375l0.3125 1.1875l0.359375 -1.203125l1.0625 -3.59375l1.03125 0l-1.953125 6.21875l-1.09375 0l-0.984375 -3.734375l-0.25 -1.046875l-1.25 4.78125l-1.109375 0zm11.775391 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm6.845703 3.703125l-0.984375 0l0 -8.59375l1.0625 0l0 3.0625q0.671875 -0.828125 1.703125 -0.828125q0.578125 0 1.078125 0.234375q0.515625 0.21875 0.84375 0.640625q0.34375 0.421875 0.53125 1.015625q0.1875 0.59375 0.1875 1.265625q0 1.59375 -0.796875 2.46875q-0.796875 0.875 -1.890625 0.875q-1.109375 0 -1.734375 -0.921875l0 0.78125zm-0.015625 -3.15625q0 1.109375 0.3125 1.609375q0.5 0.8125 1.34375 0.8125q0.6875 0 1.1875 -0.59375q0.515625 -0.59375 0.515625 -1.796875q0 -1.21875 -0.484375 -1.796875q-0.484375 -0.578125 -1.171875 -0.578125q-0.6875 0 -1.203125 0.609375q-0.5 0.59375 -0.5 1.734375zm5.798828 3.15625l0 -8.59375l3.234375 0q0.984375 0 1.578125 0.265625q0.59375 0.265625 0.921875 0.8125q0.34375 0.53125 0.34375 1.125q0 0.546875 -0.296875 1.03125q-0.296875 0.484375 -0.90625 0.78125q0.78125 0.234375 1.1875 0.796875q0.421875 0.546875 0.421875 1.296875q0 0.59375 -0.25 1.125q-0.25 0.515625 -0.625 0.796875q-0.375 0.28125 -0.953125 0.421875q-0.5625 0.140625 -1.375 0.140625l-3.28125 0zm1.140625 -4.984375l1.859375 0q0.75 0 1.078125 -0.09375q0.4375 -0.125 0.65625 -0.421875q0.21875 -0.3125 0.21875 -0.765625q0 -0.421875 -0.203125 -0.75q-0.203125 -0.328125 -0.59375 -0.4375q-0.375 -0.125 -1.296875 -0.125l-1.71875 0l0 2.59375zm0 3.96875l2.140625 0q0.546875 0 0.765625 -0.046875q0.40625 -0.0625 0.65625 -0.21875q0.265625 -0.171875 0.4375 -0.484375q0.171875 -0.3125 0.171875 -0.71875q0 -0.484375 -0.25 -0.84375q-0.234375 -0.359375 -0.671875 -0.5q-0.4375 -0.140625 -1.265625 -0.140625l-1.984375 0l0 2.953125zm6.7539062 1.015625l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm6.7755127 0l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm6.845703 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm8.173828 2.765625l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm0.6464844 -2.171875q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.595703 0q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm8.283203 2.171875l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm1.0371094 0.9375l0 -8.59375l1.046875 0l0 3.078125q0.734375 -0.84375 1.859375 -0.84375q0.703125 0 1.203125 0.28125q0.515625 0.265625 0.734375 0.75q0.21875 0.46875 0.21875 1.390625l0 3.9375l-1.046875 0l0 -3.9375q0 -0.796875 -0.34375 -1.15625q-0.34375 -0.359375 -0.96875 -0.359375q-0.46875 0 -0.890625 0.25q-0.40625 0.234375 -0.59375 0.65625q-0.171875 0.40625 -0.171875 1.140625l0 3.40625l-1.046875 0z" fill-rule="nonzero"/></g></svg> +<svg version="1.1" viewBox="0.0 0.0 1931.8503937007874 1390.5931758530185" fill="none" stroke="none" stroke-linecap="square" stroke-miterlimit="10" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><clipPath id="p.0"><path d="m0 0l1931.8503 0l0 1390.5931l-1931.8503 0l0 -1390.5931z" clip-rule="nonzero"/></clipPath><g clip-path="url(#p.0)"><path fill="#000000" fill-opacity="0.0" d="m0 0l1931.8503 0l0 1390.5931l-1931.8503 0z" fill-rule="evenodd"/><path fill="#efefef" d="m9.328085 225.08398l322.07874 0l0 347.65356l-322.07874 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m9.328085 225.08398l322.07874 0l0 347.65356l-322.07874 0z" fill-rule="evenodd"/><path fill="#000000" d="m93.810814 257.124l-6.140625 -17.1875l3.765625 0l4.34375 12.71875l4.21875 -12.71875l3.671875 0l-6.15625 17.1875l-3.703125 0zm11.5859375 0l0 -17.1875l5.1875 0l3.125 11.71875l3.078125 -11.71875l5.203125 0l0 17.1875l-3.21875 0l0 -13.53125l-3.421875 13.53125l-3.328125 0l-3.40625 -13.53125l0 13.53125l-3.21875 0zm24.925774 0.296875l4.25 -17.765625l2.46875 0l-4.296875 17.765625l-2.421875 0zm23.101562 -6.609375l0 -2.90625l7.484375 0l0 6.84375q-1.09375 1.0625 -3.171875 1.875q-2.0625 0.796875 -4.171875 0.796875q-2.703125 0 -4.703125 -1.125q-2.0 -1.140625 -3.015625 -3.234375q-1.0 -2.109375 -1.0 -4.59375q0 -2.671875 1.125 -4.75q1.125 -2.09375 3.28125 -3.21875q1.65625 -0.84375 4.125 -0.84375q3.1875 0 4.984375 1.34375q1.8125 1.328125 2.328125 3.703125l-3.453125 0.640625q-0.359375 -1.265625 -1.359375 -2.0q-1.0 -0.734375 -2.5 -0.734375q-2.28125 0 -3.625 1.453125q-1.34375 1.4375 -1.34375 4.265625q0 3.0625 1.359375 4.59375q1.359375 1.53125 3.5625 1.53125q1.09375 0 2.1875 -0.421875q1.09375 -0.4375 1.890625 -1.046875l0 -2.171875l-3.984375 0zm18.855469 6.3125l0 -1.859375q-0.6875 0.984375 -1.796875 1.5625q-1.109375 0.578125 -2.328125 0.578125q-1.265625 0 -2.265625 -0.546875q-0.984375 -0.5625 -1.4375 -1.546875q-0.4375 -1.0 -0.4375 -2.765625l0 -7.875l3.296875 0l0 5.71875q0 2.625 0.171875 3.21875q0.1875 0.59375 0.65625 0.9375q0.484375 0.34375 1.234375 0.34375q0.84375 0 1.5 -0.453125q0.671875 -0.46875 0.921875 -1.15625q0.25 -0.6875 0.25 -3.359375l0 -5.25l3.28125 0l0 12.453125l-3.046875 0zm13.675781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm4.7851562 3.75l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875zm20.222656 -8.90625l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921875l0 4.390625l2.25 0zm8.269531 3.96875q0 -2.625 0.78125 -4.40625q0.59375 -1.3125 1.59375 -2.359375q1.015625 -1.046875 2.234375 -1.546875q1.59375 -0.671875 3.703125 -0.671875q3.796875 0 6.0625 2.359375q2.28125 2.34375 2.28125 6.546875q0 4.15625 -2.265625 6.515625q-2.25 2.34375 -6.03125 2.34375q-3.84375 0 -6.109375 -2.34375q-2.25 -2.34375 -2.25 -6.4375zm3.578125 -0.125q0 2.921875 1.34375 4.4375q1.34375 1.5 3.421875 1.5q2.078125 0 3.40625 -1.484375q1.328125 -1.5 1.328125 -4.5q0 -2.953125 -1.296875 -4.40625q-1.296875 -1.453125 -3.4375 -1.453125q-2.140625 0 -3.453125 1.484375q-1.3125 1.46875 -1.3125 4.421875zm14.917969 3.015625l3.375 -0.328125q0.296875 1.703125 1.21875 2.5q0.9375 0.796875 2.53125 0.796875q1.671875 0 2.515625 -0.703125q0.859375 -0.71875 0.859375 -1.671875q0 -0.609375 -0.359375 -1.03125q-0.359375 -0.421875 -1.25 -0.75q-0.609375 -0.203125 -2.78125 -0.75q-2.78125 -0.6875 -3.90625 -1.6875q-1.59375 -1.421875 -1.59375 -3.46875q0 -1.3125 0.75 -2.453125q0.75 -1.140625 2.140625 -1.734375q1.40625 -0.59375 3.390625 -0.59375q3.234375 0 4.859375 1.421875q1.640625 1.40625 1.71875 3.78125l-3.46875 0.140625q-0.21875 -1.3125 -0.953125 -1.890625q-0.734375 -0.59375 -2.203125 -0.59375q-1.5 0 -2.359375 0.625q-0.546875 0.40625 -0.546875 1.0625q0 0.609375 0.515625 1.046875q0.65625 0.546875 3.1875 1.15625q2.53125 0.59375 3.734375 1.234375q1.21875 0.640625 1.90625 1.75q0.6875 1.09375 0.6875 2.734375q0 1.46875 -0.828125 2.765625q-0.8125 1.28125 -2.3125 1.921875q-1.5 0.625 -3.75 0.625q-3.25 0 -5.0 -1.5q-1.75 -1.515625 -2.078125 -4.40625z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m918.6483 963.71655l394.01575 0l0 105.322876l-394.01575 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m918.6483 963.71655l394.01575 0l0 105.322876l-394.01575 0z" fill-rule="evenodd"/><path fill="#000000" d="m1073.8053 989.1678l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051025 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0zm10.375732 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1292725 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.4938965 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm7.7663574 8.53125l0 -1.1875l10.859375 0l0 1.1875l-10.859375 0zm11.891357 0l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.203857 3.59375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1881104 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.806519 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5269775 5.1875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125zm8.171875 -3.484375l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1021.31366 995.7475l188.685 0l0 21.45288l-188.685 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1022.4543 1002.96466l2.359436 0l0 1.3125q1.265625 -1.53125 3.015625 -1.53125q0.9375 0 1.609375 0.390625q0.6875 0.375 1.125 1.140625q0.640625 -0.765625 1.375 -1.140625q0.75 -0.390625 1.578125 -0.390625q1.0625 0 1.796875 0.4375q0.75 0.421875 1.109375 1.265625q0.265625 0.625 0.265625 2.0l0 6.1875l-2.5625 0l0 -5.53125q0 -1.4375 -0.265625 -1.859375q-0.34375 -0.546875 -1.09375 -0.546875q-0.53125 0 -1.015625 0.328125q-0.46875 0.328125 -0.671875 0.96875q-0.203125 0.625 -0.203125 2.0l0 4.640625l-2.5625 0l0 -5.296875q0 -1.421875 -0.140625 -1.828125q-0.140625 -0.40625 -0.421875 -0.609375q-0.28125 -0.203125 -0.78125 -0.203125q-0.59375 0 -1.0625 0.328125q-0.46875 0.3125 -0.6875 0.921875q-0.203125 0.59375 -0.203125 1.984375l0 4.703125l-2.562561 0l0 -9.671875zm16.197815 4.703125q0 -1.28125 0.625 -2.46875q0.625 -1.203125 1.78125 -1.828125q1.15625 -0.625 2.578125 -0.625q2.1875 0 3.59375 1.421875q1.40625 1.421875 1.40625 3.609375q0 2.1875 -1.421875 3.640625q-1.421875 1.4375 -3.5625 1.4375q-1.328125 0 -2.546875 -0.59375q-1.203125 -0.609375 -1.828125 -1.765625q-0.625 -1.171875 -0.625 -2.828125zm2.625 0.125q0 1.453125 0.671875 2.21875q0.6875 0.75 1.6875 0.75q1.0 0 1.671875 -0.75q0.6875 -0.765625 0.6875 -2.234375q0 -1.421875 -0.6875 -2.1875q-0.671875 -0.765625 -1.671875 -0.765625q-1.0 0 -1.6875 0.765625q-0.671875 0.765625 -0.671875 2.203125zm18.239746 4.84375l-2.390625 0l0 -1.421875q-0.59375 0.828125 -1.40625 1.234375q-0.796875 0.40625 -1.609375 0.40625q-1.671875 0 -2.859375 -1.34375q-1.1875 -1.34375 -1.1875 -3.75q0 -2.453125 1.15625 -3.734375q1.15625 -1.28125 2.921875 -1.28125q1.625 0 2.8125 1.34375l0 -4.8125l2.5625 0l0 13.359375zm-6.84375 -5.046875q0 1.546875 0.4375 2.234375q0.609375 1.015625 1.71875 1.015625q0.890625 0 1.5 -0.75q0.625 -0.765625 0.625 -2.25q0 -1.671875 -0.609375 -2.40625q-0.59375 -0.734375 -1.53125 -0.734375q-0.90625 0 -1.53125 0.734375q-0.609375 0.71875 -0.609375 2.15625zm14.958374 1.96875l2.546875 0.421875q-0.484375 1.40625 -1.546875 2.140625q-1.0625 0.734375 -2.65625 0.734375q-2.515625 0 -3.734375 -1.65625q-0.953125 -1.3125 -0.953125 -3.328125q0 -2.40625 1.25 -3.765625q1.265625 -1.359375 3.1875 -1.359375q2.15625 0 3.40625 1.421875q1.25 1.421875 1.1875 4.375l-6.40625 0q0.03125 1.140625 0.609375 1.78125q0.59375 0.625 1.484375 0.625q0.59375 0 1.0 -0.328125q0.421875 -0.328125 0.625 -1.0625zm0.15625 -2.59375q-0.03125 -1.109375 -0.578125 -1.6875q-0.546875 -0.578125 -1.328125 -0.578125q-0.84375 0 -1.390625 0.609375q-0.546875 0.609375 -0.53125 1.65625l3.828125 0zm4.4226074 -4.0l2.359375 0l0 1.3125q1.265625 -1.53125 3.015625 -1.53125q0.9375 0 1.609375 0.390625q0.6875 0.375 1.125 1.140625q0.640625 -0.765625 1.375 -1.140625q0.75 -0.390625 1.578125 -0.390625q1.0625 0 1.796875 0.4375q0.75 0.421875 1.109375 1.265625q0.265625 0.625 0.265625 2.0l0 6.1875l-2.5625 0l0 -5.53125q0 -1.4375 -0.265625 -1.859375q-0.34375 -0.546875 -1.09375 -0.546875q-0.53125 0 -1.015625 0.328125q-0.46875 0.328125 -0.671875 0.96875q-0.203125 0.625 -0.203125 2.0l0 4.640625l-2.5625 0l0 -5.296875q0 -1.421875 -0.140625 -1.828125q-0.140625 -0.40625 -0.421875 -0.609375q-0.28125 -0.203125 -0.78125 -0.203125q-0.59375 0 -1.0625 0.328125q-0.46875 0.3125 -0.6875 0.921875q-0.203125 0.59375 -0.203125 1.984375l0 4.703125l-2.5625 0l0 -9.671875zm16.588379 0l2.359375 0l0 1.3125q1.265625 -1.53125 3.015625 -1.53125q0.9375 0 1.609375 0.390625q0.6875 0.375 1.125 1.140625q0.640625 -0.765625 1.375 -1.140625q0.75 -0.390625 1.578125 -0.390625q1.0625 0 1.796875 0.4375q0.75 0.421875 1.109375 1.265625q0.265625 0.625 0.265625 2.0l0 6.1875l-2.5625 0l0 -5.53125q0 -1.4375 -0.265625 -1.859375q-0.34375 -0.546875 -1.09375 -0.546875q-0.53125 0 -1.015625 0.328125q-0.46875 0.328125 -0.671875 0.96875q-0.203125 0.625 -0.203125 2.0l0 4.640625l-2.5625 0l0 -5.296875q0 -1.421875 -0.140625 -1.828125q-0.140625 -0.40625 -0.421875 -0.609375q-0.28125 -0.203125 -0.78125 -0.203125q-0.59375 0 -1.0625 0.328125q-0.46875 0.3125 -0.6875 0.921875q-0.203125 0.59375 -0.203125 1.984375l0 4.703125l-2.5625 0l0 -9.671875zm18.697876 2.953125l-2.328125 -0.421875q0.40625 -1.40625 1.359375 -2.078125q0.953125 -0.671875 2.84375 -0.671875q1.703125 0 2.546875 0.40625q0.84375 0.40625 1.171875 1.03125q0.34375 0.625 0.34375 2.28125l-0.015625 3.0q0 1.265625 0.109375 1.875q0.125 0.609375 0.46875 1.296875l-2.53125 0q-0.109375 -0.25 -0.25 -0.75q-0.0625 -0.234375 -0.09375 -0.3125q-0.65625 0.640625 -1.40625 0.96875q-0.734375 0.3125 -1.59375 0.3125q-1.484375 0 -2.34375 -0.8125q-0.859375 -0.8125 -0.859375 -2.046875q0 -0.828125 0.390625 -1.46875q0.390625 -0.640625 1.09375 -0.96875q0.703125 -0.34375 2.03125 -0.609375q1.796875 -0.328125 2.484375 -0.625l0 -0.25q0 -0.75 -0.359375 -1.0625q-0.359375 -0.3125 -1.375 -0.3125q-0.6875 0 -1.078125 0.28125q-0.375 0.265625 -0.609375 0.9375zm3.421875 2.078125q-0.484375 0.15625 -1.5625 0.390625q-1.0625 0.21875 -1.390625 0.4375q-0.5 0.359375 -0.5 0.90625q0 0.53125 0.40625 0.9375q0.40625 0.390625 1.015625 0.390625q0.703125 0 1.328125 -0.46875q0.46875 -0.34375 0.609375 -0.84375q0.09375 -0.328125 0.09375 -1.25l0 -0.5zm13.84436 4.640625l-2.5625 0l0 -4.9375q0 -1.5625 -0.171875 -2.015625q-0.15625 -0.46875 -0.53125 -0.71875q-0.359375 -0.265625 -0.875 -0.265625q-0.671875 0 -1.203125 0.375q-0.53125 0.359375 -0.734375 0.96875q-0.1875 0.59375 -0.1875 2.21875l0 4.375l-2.546875 0l0 -9.671875l2.375 0l0 1.421875q1.265625 -1.640625 3.1875 -1.640625q0.84375 0 1.546875 0.3125q0.703125 0.296875 1.0625 0.78125q0.359375 0.46875 0.5 1.078125q0.140625 0.59375 0.140625 1.703125l0 6.015625zm4.505371 -6.71875l-2.328125 -0.421875q0.40625 -1.40625 1.359375 -2.078125q0.953125 -0.671875 2.84375 -0.671875q1.703125 0 2.546875 0.40625q0.84375 0.40625 1.171875 1.03125q0.34375 0.625 0.34375 2.28125l-0.015625 3.0q0 1.265625 0.109375 1.875q0.125 0.609375 0.46875 1.296875l-2.53125 0q-0.109375 -0.25 -0.25 -0.75q-0.0625 -0.234375 -0.09375 -0.3125q-0.65625 0.640625 -1.40625 0.96875q-0.734375 0.3125 -1.59375 0.3125q-1.484375 0 -2.34375 -0.8125q-0.859375 -0.8125 -0.859375 -2.046875q0 -0.828125 0.390625 -1.46875q0.390625 -0.640625 1.09375 -0.96875q0.703125 -0.34375 2.03125 -0.609375q1.796875 -0.328125 2.484375 -0.625l0 -0.25q0 -0.75 -0.359375 -1.0625q-0.359375 -0.3125 -1.375 -0.3125q-0.6875 0 -1.078125 0.28125q-0.375 0.265625 -0.609375 0.9375zm3.421875 2.078125q-0.484375 0.15625 -1.5625 0.390625q-1.0625 0.21875 -1.390625 0.4375q-0.5 0.359375 -0.5 0.90625q0 0.53125 0.40625 0.9375q0.40625 0.390625 1.015625 0.390625q0.703125 0 1.328125 -0.46875q0.46875 -0.34375 0.609375 -0.84375q0.09375 -0.328125 0.09375 -1.25l0 -0.5zm4.8132324 5.28125l2.921875 0.359375q0.0625 0.5 0.328125 0.6875q0.375 0.28125 1.15625 0.28125q1.0 0 1.5 -0.296875q0.328125 -0.203125 0.515625 -0.65625q0.109375 -0.3125 0.109375 -1.171875l0 -1.40625q-1.140625 1.5625 -2.890625 1.5625q-1.953125 0 -3.09375 -1.65625q-0.890625 -1.296875 -0.890625 -3.234375q0 -2.4375 1.171875 -3.71875q1.171875 -1.28125 2.90625 -1.28125q1.796875 0 2.96875 1.578125l0 -1.359375l2.390625 0l0 8.671875q0 1.71875 -0.28125 2.5625q-0.28125 0.84375 -0.796875 1.328125q-0.5 0.484375 -1.359375 0.75q-0.84375 0.28125 -2.15625 0.28125q-2.453125 0 -3.484375 -0.84375q-1.03125 -0.84375 -1.03125 -2.125q0 -0.140625 0.015625 -0.3125zm2.28125 -5.671875q0 1.53125 0.59375 2.25q0.59375 0.71875 1.46875 0.71875q0.9375 0 1.578125 -0.734375q0.65625 -0.734375 0.65625 -2.171875q0 -1.515625 -0.625 -2.234375q-0.609375 -0.734375 -1.5625 -0.734375q-0.921875 0 -1.515625 0.71875q-0.59375 0.71875 -0.59375 2.1875zm14.942871 1.953125l2.546875 0.421875q-0.484375 1.40625 -1.546875 2.140625q-1.0625 0.734375 -2.65625 0.734375q-2.515625 0 -3.734375 -1.65625q-0.953125 -1.3125 -0.953125 -3.328125q0 -2.40625 1.25 -3.765625q1.265625 -1.359375 3.1875 -1.359375q2.15625 0 3.40625 1.421875q1.25 1.421875 1.1875 4.375l-6.40625 0q0.03125 1.140625 0.609375 1.78125q0.59375 0.625 1.484375 0.625q0.59375 0 1.0 -0.328125q0.421875 -0.328125 0.625 -1.0625zm0.15625 -2.59375q-0.03125 -1.109375 -0.578125 -1.6875q-0.546875 -0.578125 -1.328125 -0.578125q-0.84375 0 -1.390625 0.609375q-0.546875 0.609375 -0.53125 1.65625l3.828125 0zm7.0788574 5.671875l-2.5625 0l0 -9.671875l2.375 0l0 1.375q0.609375 -0.984375 1.09375 -1.28125q0.484375 -0.3125 1.109375 -0.3125q0.875 0 1.6875 0.484375l-0.796875 2.234375q-0.640625 -0.421875 -1.203125 -0.421875q-0.53125 0 -0.90625 0.296875q-0.375 0.296875 -0.59375 1.078125q-0.203125 0.765625 -0.203125 3.234375l0 2.984375zm4.510254 -3.5625l0 -2.5625l5.03125 0l0 2.5625l-5.03125 0zm15.3063965 3.5625l-2.5625 0l0 -4.9375q0 -1.5625 -0.171875 -2.015625q-0.15625 -0.46875 -0.53125 -0.71875q-0.359375 -0.265625 -0.875 -0.265625q-0.671875 0 -1.203125 0.375q-0.53125 0.359375 -0.734375 0.96875q-0.1875 0.59375 -0.1875 2.21875l0 4.375l-2.546875 0l0 -9.671875l2.375 0l0 1.421875q1.265625 -1.640625 3.1875 -1.640625q0.84375 0 1.546875 0.3125q0.703125 0.296875 1.0625 0.78125q0.359375 0.46875 0.5 1.078125q0.140625 0.59375 0.140625 1.703125l0 6.015625zm8.192871 -3.078125l2.546875 0.421875q-0.484375 1.40625 -1.546875 2.140625q-1.0625 0.734375 -2.65625 0.734375q-2.515625 0 -3.734375 -1.65625q-0.953125 -1.3125 -0.953125 -3.328125q0 -2.40625 1.25 -3.765625q1.265625 -1.359375 3.1875 -1.359375q2.15625 0 3.40625 1.421875q1.25 1.421875 1.1875 4.375l-6.40625 0q0.03125 1.140625 0.609375 1.78125q0.59375 0.625 1.484375 0.625q0.59375 0 1.0 -0.328125q0.421875 -0.328125 0.625 -1.0625zm0.15625 -2.59375q-0.03125 -1.109375 -0.578125 -1.6875q-0.546875 -0.578125 -1.328125 -0.578125q-0.84375 0 -1.390625 0.609375q-0.546875 0.609375 -0.53125 1.65625l3.828125 0zm3.3913574 5.671875l3.484375 -4.984375l-3.34375 -4.6875l3.125 0l1.71875 2.65625l1.796875 -2.65625l3.015625 0l-3.28125 4.578125l3.578125 5.09375l-3.140625 0l-1.96875 -3.0l-1.984375 3.0l-3.0 0zm16.047607 -9.671875l0 2.03125l-1.75 0l0 3.90625q0 1.1875 0.046875 1.390625q0.046875 0.1875 0.21875 0.3125q0.1875 0.125 0.4375 0.125q0.359375 0 1.03125 -0.25l0.21875 2.0q-0.890625 0.375 -2.015625 0.375q-0.703125 0 -1.265625 -0.234375q-0.546875 -0.234375 -0.8125 -0.59375q-0.25 -0.375 -0.34375 -1.0q-0.09375 -0.453125 -0.09375 -1.8125l0 -4.21875l-1.171875 0l0 -2.03125l1.171875 0l0 -1.921875l2.578125 -1.5l0 3.421875l1.75 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m1209.9987 995.7475l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1021.31366 1013.84985l188.685 0l0 1.6799927l-188.685 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/third_party/modemmanager-next/;l%3D1?q%3Dmodemmanager%26ss%3Dpiper%252FGoogle%252Fchromeos_public&sa=D&source=editors&ust=1638577908180000&usg=AOvVaw3TEU2fwnxTqbVGtu0_JiI2" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1021.31366 994.71655l188.685 0l0 22.399963l-188.685 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#c9daf8" d="m383.7874 172.4672l1521.4802 0l0 442.51968l-1521.4802 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m383.7874 172.4672l1521.4802 0l0 442.51968l-1521.4802 0z" fill-rule="evenodd"/><path fill="#000000" d="m1111.9221 198.19469l3.375 1.0625q-0.78125 2.8125 -2.578125 4.1875q-1.796875 1.359375 -4.5625 1.359375q-3.421875 0 -5.625 -2.34375q-2.203125 -2.34375 -2.203125 -6.390625q0 -4.296875 2.203125 -6.65625q2.21875 -2.375 5.828125 -2.375q3.15625 0 5.125 1.859375q1.171875 1.09375 1.765625 3.15625l-3.4375 0.828125q-0.3125 -1.34375 -1.28125 -2.109375q-0.953125 -0.78125 -2.34375 -0.78125q-1.90625 0 -3.09375 1.375q-1.1875 1.375 -1.1875 4.4375q0 3.265625 1.171875 4.65625q1.171875 1.375 3.046875 1.375q1.375 0 2.375 -0.875q1.0 -0.890625 1.421875 -2.765625zm9.597656 -10.875l0 6.328125q1.59375 -1.875 3.8125 -1.875q1.140625 0 2.046875 0.421875q0.921875 0.421875 1.375 1.078125q0.46875 0.65625 0.640625 1.453125q0.171875 0.796875 0.171875 2.484375l0 7.296875l-3.296875 0l0 -6.578125q0 -1.953125 -0.1875 -2.484375q-0.1875 -0.53125 -0.671875 -0.828125q-0.46875 -0.3125 -1.171875 -0.3125q-0.828125 0 -1.46875 0.40625q-0.640625 0.390625 -0.953125 1.1875q-0.296875 0.796875 -0.296875 2.375l0 6.234375l-3.28125 0l0 -17.1875l3.28125 0zm14.535156 17.1875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.4335938 -6.40625q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm11.800781 -6.234375l3.03125 0l0 1.703125q1.625 -1.984375 3.875 -1.984375q1.203125 0 2.078125 0.5q0.875 0.484375 1.4375 1.484375q0.828125 -1.0 1.765625 -1.484375q0.953125 -0.5 2.03125 -0.5q1.375 0 2.3125 0.5625q0.953125 0.5625 1.421875 1.640625q0.34375 0.796875 0.34375 2.578125l0 7.953125l-3.296875 0l0 -7.109375q0 -1.859375 -0.328125 -2.390625q-0.46875 -0.703125 -1.40625 -0.703125q-0.703125 0 -1.3125 0.421875q-0.609375 0.421875 -0.875 1.234375q-0.265625 0.8125 -0.265625 2.5625l0 5.984375l-3.296875 0l0 -6.828125q0 -1.8125 -0.171875 -2.328125q-0.171875 -0.53125 -0.546875 -0.78125q-0.375 -0.265625 -1.0 -0.265625q-0.765625 0 -1.375 0.40625q-0.609375 0.40625 -0.875 1.1875q-0.265625 0.765625 -0.265625 2.5625l0 6.046875l-3.28125 0l0 -12.453125zm28.792969 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0z" fill-rule="nonzero"/><defs><linearGradient id="p.1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(22.75616333875044 0.0 0.0 22.75616333875044 0.0 0.0)" spreadMethod="pad" x1="50.0253847639223" y1="25.41507032009087" x2="33.93449513200751" y2="9.323885132124536"><stop offset="0.0" stop-color="#3c78d8"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.1)" d="m428.52756 555.8609l687.37 0l0 44.97638l-687.37 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m428.52756 555.8609l687.37 0l0 44.97638l-687.37 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m671.0997 565.5953l121.489136 0l0 15.32605l-121.489136 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m676.4903 575.12964l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0165405 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm6.2578125 2.21875l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm9.062378 -0.15625l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm7.7093506 3.453125l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm10.865601 3.5l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm6.2578125 2.21875l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm4.109192 -2.21875l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.1328125 2.0625l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.4281006 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.9298706 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9610596 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.1017456 0.15625l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0z" fill-rule="nonzero"/><path fill="#000000" d="m797.32306 577.6609l0 -9.546875l3.28125 0q1.109375 0 1.703125 0.140625q0.8125 0.1875 1.390625 0.6875q0.765625 0.640625 1.140625 1.640625q0.375 0.984375 0.375 2.25q0 1.09375 -0.265625 1.9375q-0.25 0.828125 -0.65625 1.390625q-0.390625 0.546875 -0.859375 0.859375q-0.46875 0.3125 -1.140625 0.484375q-0.65625 0.15625 -1.53125 0.15625l-3.4375 0zm1.265625 -1.125l2.03125 0q0.9375 0 1.46875 -0.171875q0.546875 -0.1875 0.875 -0.5q0.4375 -0.453125 0.6875 -1.203125q0.25 -0.765625 0.25 -1.84375q0 -1.5 -0.5 -2.296875q-0.484375 -0.8125 -1.1875 -1.078125q-0.5 -0.203125 -1.625 -0.203125l-2.0 0l0 7.296875zm8.296997 1.125l0 -9.546875l3.59375 0q1.09375 0 1.75 0.296875q0.65625 0.28125 1.03125 0.890625q0.375 0.609375 0.375 1.265625q0 0.609375 -0.34375 1.15625q-0.328125 0.53125 -0.984375 0.859375q0.859375 0.25 1.328125 0.875q0.46875 0.609375 0.46875 1.4375q0 0.671875 -0.296875 1.25q-0.28125 0.578125 -0.703125 0.890625q-0.40625 0.3125 -1.03125 0.46875q-0.625 0.15625 -1.546875 0.15625l-3.640625 0zm1.265625 -5.53125l2.0625 0q0.84375 0 1.203125 -0.109375q0.484375 -0.140625 0.71875 -0.46875q0.25 -0.34375 0.25 -0.84375q0 -0.46875 -0.234375 -0.828125q-0.21875 -0.359375 -0.640625 -0.5q-0.421875 -0.140625 -1.453125 -0.140625l-1.90625 0l0 2.890625zm0 4.40625l2.375 0q0.609375 0 0.859375 -0.046875q0.4375 -0.078125 0.734375 -0.25q0.296875 -0.1875 0.484375 -0.53125q0.1875 -0.359375 0.1875 -0.8125q0 -0.53125 -0.28125 -0.921875q-0.265625 -0.40625 -0.75 -0.5625q-0.484375 -0.15625 -1.40625 -0.15625l-2.203125 0l0 3.28125zm12.0616455 1.125l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm17.78894 -1.28125l1.265625 0.3125q-0.390625 1.5625 -1.421875 2.375q-1.03125 0.8125 -2.53125 0.8125q-1.53125 0 -2.5 -0.625q-0.96875 -0.625 -1.484375 -1.8125q-0.5 -1.1875 -0.5 -2.5625q0 -1.484375 0.5625 -2.59375q0.578125 -1.109375 1.625 -1.6875q1.0625 -0.578125 2.328125 -0.578125q1.421875 0 2.390625 0.734375q0.984375 0.71875 1.375 2.046875l-1.25 0.296875q-0.328125 -1.046875 -0.96875 -1.515625q-0.625 -0.484375 -1.578125 -0.484375q-1.09375 0 -1.84375 0.53125q-0.734375 0.53125 -1.03125 1.421875q-0.296875 0.875 -0.296875 1.828125q0 1.21875 0.34375 2.125q0.359375 0.90625 1.109375 1.359375q0.75 0.4375 1.625 0.4375q1.0625 0 1.796875 -0.609375q0.734375 -0.609375 0.984375 -1.8125zm2.656372 3.34375l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9923706 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm7.6798096 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5218506 4.125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm9.974976 -1.046875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.6717529 -1.015625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625z" fill-rule="nonzero"/><path fill="#000099" d="m671.0997 578.5276l121.489075 0l0 1.1999512l-121.489075 0l0 -1.1999512z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/dbus/shill/?q%3Dchromeos%252Fdbus%252Fshill%252F%26ss%3Dchromium&sa=D&source=editors&ust=1638577908190000&usg=AOvVaw22yN5gsjrQuI5P92yA_mhH" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m671.0997 564.8609l121.489075 0l0 16.0l-121.489075 0l0 -16.0z" fill-rule="nonzero"/></a><defs><linearGradient id="p.2" gradientUnits="userSpaceOnUse" gradientTransform="matrix(18.572973184015446 0.0 0.0 18.572973184015446 0.0 0.0)" spreadMethod="pad" x1="54.366384790409825" y1="24.411686394668724" x2="41.23343205387387" y2="11.278488561921765"><stop offset="0.0" stop-color="#3c78d8"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.2)" d="m591.33594 383.96326l348.97638 0l0 138.86615l-348.97638 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m591.33594 383.96326l348.97638 0l0 138.86615l-348.97638 0z" fill-rule="evenodd"/><path fill="#000000" d="m632.75385 408.32324l0 -11.453125l2.25 0l4.6875 7.640625l0 -7.640625l2.15625 0l0 11.453125l-2.328125 0l-4.609375 -7.46875l0 7.46875l-2.15625 0zm16.320312 -2.640625l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm7.7734375 -3.4375l0 1.75l-1.5 0l0 3.34375q0 1.015625 0.046875 1.1875q0.046875 0.15625 0.1875 0.265625q0.15625 0.109375 0.375 0.109375q0.3125 0 0.890625 -0.203125l0.1875 1.703125q-0.765625 0.328125 -1.734375 0.328125q-0.59375 0 -1.078125 -0.203125q-0.46875 -0.203125 -0.703125 -0.515625q-0.21875 -0.3125 -0.296875 -0.859375q-0.078125 -0.375 -0.078125 -1.546875l0 -3.609375l-1.0 0l0 -1.75l1.0 0l0 -1.65625l2.203125 -1.28125l0 2.9375l1.5 0zm3.078125 8.296875l-2.625 -8.296875l2.125 0l1.5625 5.4375l1.421875 -5.4375l2.125 0l1.375 5.4375l1.59375 -5.4375l2.15625 0l-2.65625 8.296875l-2.109375 0l-1.4375 -5.34375l-1.40625 5.34375l-2.125 0zm10.3828125 -4.265625q0 -1.09375 0.53125 -2.109375q0.546875 -1.03125 1.53125 -1.5625q1.0 -0.546875 2.21875 -0.546875q1.875 0 3.078125 1.21875q1.203125 1.21875 1.203125 3.09375q0 1.875 -1.21875 3.125q-1.203125 1.234375 -3.046875 1.234375q-1.140625 0 -2.1875 -0.515625q-1.03125 -0.515625 -1.578125 -1.515625q-0.53125 -1.0 -0.53125 -2.421875zm2.25 0.109375q0 1.234375 0.578125 1.890625q0.59375 0.65625 1.453125 0.65625q0.859375 0 1.4375 -0.65625q0.59375 -0.65625 0.59375 -1.90625q0 -1.21875 -0.59375 -1.875q-0.578125 -0.65625 -1.4375 -0.65625q-0.859375 0 -1.453125 0.65625q-0.578125 0.65625 -0.578125 1.890625zm10.1328125 4.15625l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625zm4.0546875 0l0 -11.453125l2.1875 0l0 6.078125l2.578125 -2.921875l2.703125 0l-2.84375 3.03125l3.046875 5.265625l-2.375 0l-2.078125 -3.734375l-1.03125 1.078125l0 2.65625l-2.1875 0zm8.9921875 0l0 -11.453125l2.3125 0l0 4.5l4.53125 0l0 -4.5l2.3125 0l0 11.453125l-2.3125 0l0 -5.015625l-4.53125 0l0 5.015625l-2.3125 0zm13.1796875 -5.765625l-2.0 -0.359375q0.34375 -1.203125 1.15625 -1.78125q0.828125 -0.578125 2.4375 -0.578125q1.46875 0 2.1875 0.34375q0.71875 0.34375 1.015625 0.890625q0.296875 0.53125 0.296875 1.953125l-0.03125 2.5625q0 1.09375 0.109375 1.625q0.109375 0.515625 0.390625 1.109375l-2.171875 0q-0.078125 -0.21875 -0.203125 -0.65625q-0.0625 -0.1875 -0.078125 -0.25q-0.5625 0.546875 -1.203125 0.828125q-0.640625 0.265625 -1.375 0.265625q-1.28125 0 -2.015625 -0.6875q-0.734375 -0.703125 -0.734375 -1.765625q0 -0.703125 0.328125 -1.25q0.34375 -0.5625 0.9375 -0.84375q0.609375 -0.296875 1.75 -0.515625q1.546875 -0.296875 2.140625 -0.546875l0 -0.21875q0 -0.625 -0.3125 -0.890625q-0.3125 -0.28125 -1.1875 -0.28125q-0.578125 0 -0.90625 0.234375q-0.328125 0.234375 -0.53125 0.8125zm2.9375 1.78125q-0.421875 0.140625 -1.34375 0.34375q-0.90625 0.1875 -1.1875 0.375q-0.4375 0.296875 -0.4375 0.765625q0 0.46875 0.34375 0.8125q0.34375 0.328125 0.875 0.328125q0.59375 0 1.140625 -0.390625q0.390625 -0.296875 0.515625 -0.734375q0.09375 -0.28125 0.09375 -1.0625l0 -0.4375zm11.8671875 3.984375l-2.203125 0l0 -4.234375q0 -1.34375 -0.140625 -1.734375q-0.140625 -0.40625 -0.453125 -0.625q-0.3125 -0.21875 -0.765625 -0.21875q-0.5625 0 -1.015625 0.3125q-0.453125 0.3125 -0.625 0.828125q-0.171875 0.515625 -0.171875 1.90625l0 3.765625l-2.1875 0l0 -8.296875l2.03125 0l0 1.21875q1.09375 -1.40625 2.734375 -1.40625q0.734375 0 1.328125 0.265625q0.609375 0.25 0.90625 0.65625q0.3125 0.40625 0.4375 0.921875q0.125 0.515625 0.125 1.484375l0 5.15625zm9.8359375 0l-2.046875 0l0 -1.21875q-0.5 0.703125 -1.203125 1.0625q-0.6875 0.34375 -1.390625 0.34375q-1.421875 0 -2.453125 -1.15625q-1.015625 -1.15625 -1.015625 -3.21875q0 -2.109375 0.984375 -3.203125q1.0 -1.09375 2.515625 -1.09375q1.390625 0 2.40625 1.15625l0 -4.125l2.203125 0l0 11.453125zm-5.859375 -4.328125q0 1.328125 0.359375 1.921875q0.53125 0.859375 1.484375 0.859375q0.765625 0 1.296875 -0.640625q0.53125 -0.65625 0.53125 -1.9375q0 -1.421875 -0.515625 -2.046875q-0.515625 -0.640625 -1.328125 -0.640625q-0.78125 0 -1.3125 0.625q-0.515625 0.625 -0.515625 1.859375zm8.0234375 4.328125l0 -11.453125l2.1875 0l0 11.453125l-2.1875 0zm9.2421875 -2.640625l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm6.0703125 4.859375l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625z" fill-rule="nonzero"/><path fill="#000000" d="m762.457 411.69824q-1.171875 -1.46875 -1.984375 -3.4375q-0.796875 -1.984375 -0.796875 -4.09375q0 -1.859375 0.609375 -3.5625q0.703125 -1.96875 2.171875 -3.9375l1.0 0q-0.9375 1.625 -1.25 2.328125q-0.46875 1.078125 -0.75 2.25q-0.328125 1.453125 -0.328125 2.9375q0 3.75 2.328125 7.515625l-1.0 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m764.0351 393.83887l130.71875 0l0 18.398438l-130.71875 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m770.50385 405.27637l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.59375 3.046875l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8828125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.3046875 0.796875q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4140625 1.671875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm7.5 2.6875l3.328125 -11.859375l1.125 0l-3.3125 11.859375l-1.140625 0zm5.5078125 -0.203125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m896.7382 411.69824l-1.015625 0q2.34375 -3.765625 2.34375 -7.515625q0 -1.46875 -0.34375 -2.921875q-0.265625 -1.171875 -0.734375 -2.25q-0.3125 -0.703125 -1.265625 -2.34375l1.015625 0q1.46875 1.96875 2.171875 3.9375q0.59375 1.703125 0.59375 3.5625q0 2.109375 -0.8125 4.09375q-0.796875 1.96875 -1.953125 3.4375z" fill-rule="nonzero"/><path fill="#000099" d="m764.0351 409.36325l130.71875 0l0 1.4400024l-130.71875 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#000000" d="m644.957 442.30762l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm2.6796875 -0.140625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9453125 4.15625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.2578125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2421875 1.90625l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm5.65625 1.78125l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm12.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm13.96875 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.5625 3.046875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.0390625 1.6875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.0 0l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm14.234375 -0.1875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm16.070312 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm17.828125 1.109375l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.0625 -1.109375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm11.1953125 0l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm11.375 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm8.40625 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m860.5429 431.83887l35.554688 0l0 18.398438l-35.554688 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m861.32416 440.74512q0 -2.859375 1.53125 -4.46875q1.53125 -1.609375 3.953125 -1.609375q1.578125 0 2.84375 0.765625q1.28125 0.75 1.953125 2.109375q0.671875 1.34375 0.671875 3.0625q0 1.75 -0.703125 3.125q-0.703125 1.375 -2.0 2.09375q-1.28125 0.703125 -2.78125 0.703125q-1.609375 0 -2.890625 -0.78125q-1.265625 -0.796875 -1.921875 -2.140625q-0.65625 -1.359375 -0.65625 -2.859375zm1.5625 0.015625q0 2.078125 1.109375 3.265625q1.109375 1.1875 2.796875 1.1875q1.703125 0 2.8125 -1.203125q1.109375 -1.203125 1.109375 -3.40625q0 -1.40625 -0.484375 -2.4375q-0.46875 -1.046875 -1.375 -1.625q-0.90625 -0.578125 -2.046875 -0.578125q-1.609375 0 -2.765625 1.109375q-1.15625 1.109375 -1.15625 3.6875zm11.3203125 5.5625l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm19.742188 -4.015625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875z" fill-rule="nonzero"/><path fill="#000099" d="m860.5429 447.36325l35.554688 0l0 1.4400024l-35.554688 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#000000" d="m615.3046 462.27637l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.0625 -1.109375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm9.2265625 0l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm4.1171875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.2890625 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.4296875 4.296875l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4453125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm10.75 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm16.070312 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm12.078125 0.46875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm11.015625 3.6875l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8984375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5234375 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.9453125 0l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm13.9375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.2734375 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm12.40625 7.328125l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.6171875 4.109375l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm10.2734375 4.15625l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9296875 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm13.6328125 1.46875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm17.6875 3.921875q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm13.453125 1.125l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm8.0 2.015625q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm9.0078125 1.125l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.59375 3.046875l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2109375 4.953125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875z" fill-rule="nonzero"/><path fill="#000000" d="m608.8984 481.83887l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 2.484375l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.3046875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 7.359375l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.0703125 1.625l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 2.484375l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.3671875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm5.296875 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm8.21875 -3.6875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm11.015625 3.6875l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8984375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5234375 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm13.4375 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.0625 -1.109375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm9.2265625 0l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm4.1171875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.2890625 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.4296875 4.296875l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4453125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm10.75 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm16.070312 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm15.484375 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm12.265625 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm11.015625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.625 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm5.296875 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m744.5546 499.30762l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm3.2109375 4.015625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8828125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm8.2265625 4.953125l0 -1.609375l1.609375 0l0 1.609375l-1.609375 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/ash/components/network/&sa=D&source=editors&ust=1638577908205000&usg=AOvVaw3RF8_-dncJ_vqG_RuGuF21" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m764.0351 392.96326l130.71875 0l0 19.200012l-130.71875 0l0 -19.200012z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:components/onc/docs/onc_spec.md?q%3Donc_spec.md%26ss%3Dchromium&sa=D&source=editors&ust=1638577908205000&usg=AOvVaw1LrGntAsQ_eaS6itTnk7eG" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m860.5429 430.96326l35.554688 0l0 19.200012l-35.554688 0l0 -19.200012z" fill-rule="nonzero"/></a><path fill="#000000" fill-opacity="0.0" d="m972.25195 367.22864l0.06298828 -0.9763794" fill-rule="evenodd"/><path stroke="#000000" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m972.25195 367.22864l0.06298828 -0.9763794" fill-rule="evenodd"/><path fill="#6d9eeb" d="m428.5223 673.2756l687.37 0l0 224.62994l-687.37 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m428.5223 673.2756l687.37 0l0 224.62994l-687.37 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m746.8714 683.58905l50.671875 0l0 27.597656l-50.671875 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m747.7464 699.72186l3.375 -0.328125q0.296875 1.703125 1.21875 2.5q0.9375 0.796875 2.53125 0.796875q1.671875 0 2.515625 -0.703125q0.859375 -0.71875 0.859375 -1.671875q0 -0.609375 -0.359375 -1.03125q-0.359375 -0.421875 -1.25 -0.75q-0.609375 -0.203125 -2.78125 -0.75q-2.78125 -0.6875 -3.90625 -1.6875q-1.59375 -1.421875 -1.59375 -3.46875q0 -1.3125 0.75 -2.453125q0.75 -1.140625 2.140625 -1.734375q1.40625 -0.59375 3.390625 -0.59375q3.234375 0 4.859375 1.421875q1.640625 1.40625 1.71875 3.78125l-3.46875 0.140625q-0.21875 -1.3125 -0.953125 -1.890625q-0.734375 -0.59375 -2.203125 -0.59375q-1.5 0 -2.359375 0.625q-0.546875 0.40625 -0.546875 1.0625q0 0.609375 0.515625 1.046875q0.65625 0.546875 3.1875 1.15625q2.53125 0.59375 3.734375 1.234375q1.21875 0.640625 1.90625 1.75q0.6875 1.09375 0.6875 2.734375q0 1.46875 -0.828125 2.765625q-0.8125 1.28125 -2.3125 1.921875q-1.5 0.625 -3.75 0.625q-3.25 0 -5.0 -1.5q-1.75 -1.515625 -2.078125 -4.40625zm20.132812 -11.59375l0 6.328125q1.59375 -1.875 3.8125 -1.875q1.140625 0 2.046875 0.421875q0.921875 0.421875 1.375 1.078125q0.46875 0.65625 0.640625 1.453125q0.171875 0.796875 0.171875 2.484375l0 7.296875l-3.296875 0l0 -6.578125q0 -1.953125 -0.1875 -2.484375q-0.1875 -0.53125 -0.671875 -0.828125q-0.46875 -0.3125 -1.171875 -0.3125q-0.828125 0 -1.46875 0.40625q-0.640625 0.390625 -0.953125 1.1875q-0.296875 0.796875 -0.296875 2.375l0 6.234375l-3.28125 0l0 -17.1875l3.28125 0zm11.378906 3.046875l0 -3.046875l3.296875 0l0 3.046875l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm6.6679688 0l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm6.6679688 0l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m797.5433 683.58905l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m746.8714 706.8756l50.671875 0l0 2.1599731l-50.671875 0l0 -2.1599731z" fill-rule="nonzero"/><path fill="#000000" d="m468.4378 745.6356l0 -11.453125l5.078125 0q1.53125 0 2.328125 0.3125q0.796875 0.296875 1.265625 1.078125q0.484375 0.78125 0.484375 1.734375q0 1.21875 -0.796875 2.0625q-0.78125 0.828125 -2.4375 1.046875q0.609375 0.296875 0.921875 0.578125q0.65625 0.609375 1.25 1.515625l2.0 3.125l-1.90625 0l-1.515625 -2.390625q-0.671875 -1.03125 -1.109375 -1.578125q-0.421875 -0.546875 -0.765625 -0.765625q-0.328125 -0.21875 -0.6875 -0.296875q-0.25 -0.0625 -0.84375 -0.0625l-1.75 0l0 5.09375l-1.515625 0zm1.515625 -6.40625l3.25 0q1.046875 0 1.625 -0.203125q0.59375 -0.21875 0.890625 -0.6875q0.3125 -0.484375 0.3125 -1.03125q0 -0.8125 -0.59375 -1.328125q-0.59375 -0.53125 -1.859375 -0.53125l-3.625 0l0 3.78125zm15.5078125 3.734375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 5.671875l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.1015625 -0.046875q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 -7.359375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm4.8515625 0l-1.3125 0l0 -11.453125l1.40625 0l0 4.078125q0.890625 -1.109375 2.28125 -1.109375q0.765625 0 1.4375 0.3125q0.6875 0.296875 1.125 0.859375q0.453125 0.5625 0.703125 1.359375q0.25 0.78125 0.25 1.671875q0 2.140625 -1.0625 3.3125q-1.046875 1.15625 -2.53125 1.15625q-1.46875 0 -2.296875 -1.234375l0 1.046875zm-0.015625 -4.21875q0 1.5 0.40625 2.15625q0.65625 1.09375 1.796875 1.09375q0.921875 0 1.59375 -0.796875q0.671875 -0.8125 0.671875 -2.390625q0 -1.625 -0.65625 -2.390625q-0.640625 -0.78125 -1.546875 -0.78125q-0.921875 0 -1.59375 0.796875q-0.671875 0.796875 -0.671875 2.3125zm7.5859375 4.21875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.2578125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm12.609375 4.953125l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm15.1953125 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.0625 -1.109375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm9.2265625 0l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm4.1171875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.2890625 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.4296875 4.296875l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4453125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5546875 0l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.6328125 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm14.609375 4.296875l-3.03125 -11.453125l1.546875 0l1.75 7.5q0.28125 1.1875 0.484375 2.34375q0.4375 -1.828125 0.515625 -2.109375l2.171875 -7.734375l1.828125 0l1.640625 5.796875q0.625 2.15625 0.890625 4.046875q0.21875 -1.078125 0.578125 -2.484375l1.796875 -7.359375l1.515625 0l-3.140625 11.453125l-1.453125 0l-2.421875 -8.734375q-0.296875 -1.09375 -0.359375 -1.34375q-0.171875 0.796875 -0.328125 1.34375l-2.4375 8.734375l-1.546875 0zm12.9296875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.8046875 0l0 -11.453125l7.734375 0l0 1.34375l-6.21875 0l0 3.546875l5.375 0l0 1.359375l-5.375 0l0 5.203125l-1.515625 0zm9.5234375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.9140625 0l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm16.875 -4.015625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.8828125 1.34375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8046875 4.953125l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4296875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8203125 0l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm8.734375 0l0 -11.453125l8.28125 0l0 1.34375l-6.765625 0l0 3.515625l6.34375 0l0 1.34375l-6.34375 0l0 3.890625l7.03125 0l0 1.359375l-8.546875 0zm13.53125 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7421875 1.265625l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm8.25 -5.578125q0 -2.859375 1.53125 -4.46875q1.53125 -1.609375 3.953125 -1.609375q1.578125 0 2.84375 0.765625q1.28125 0.75 1.953125 2.109375q0.671875 1.34375 0.671875 3.0625q0 1.75 -0.703125 3.125q-0.703125 1.375 -2.0 2.09375q-1.28125 0.703125 -2.78125 0.703125q-1.609375 0 -2.890625 -0.78125q-1.265625 -0.796875 -1.921875 -2.140625q-0.65625 -1.359375 -0.65625 -2.859375zm1.5625 0.015625q0 2.078125 1.109375 3.265625q1.109375 1.1875 2.796875 1.1875q1.703125 0 2.8125 -1.203125q1.109375 -1.203125 1.109375 -3.40625q0 -1.40625 -0.484375 -2.4375q-0.46875 -1.046875 -1.375 -1.625q-0.90625 -0.578125 -2.046875 -0.578125q-1.609375 0 -2.765625 1.109375q-1.15625 1.109375 -1.15625 3.6875zm11.1640625 8.75l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm13.3046875 1.4375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm12.3515625 0l-4.4375 -11.453125l1.640625 0l2.96875 8.3125q0.359375 1.0 0.609375 1.875q0.265625 -0.9375 0.609375 -1.875l3.09375 -8.3125l1.546875 0l-4.484375 11.453125l-1.546875 0zm7.390625 0l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm9.140625 6.015625l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm11.7578125 0l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm13.9375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.273499 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.000061 0 -1.828186 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859436 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.437561 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578186 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.93756104 0 -1.562561 0.765625q-0.625 0.765625 -0.625 2.421875zm12.515686 4.140625l0 -11.453125l1.515625 0l0 10.09375l5.640625 0l0 1.359375l-7.15625 0zm15.7890625 -1.359375l0 1.359375l-7.578125 0q-0.015625 -0.515625 0.171875 -0.984375q0.28125 -0.765625 0.921875 -1.515625q0.640625 -0.75 1.84375 -1.734375q1.859375 -1.53125 2.515625 -2.421875q0.65625 -0.90625 0.65625 -1.703125q0 -0.828125 -0.59375 -1.40625q-0.59375 -0.578125 -1.5625 -0.578125q-1.015625 0 -1.625 0.609375q-0.609375 0.609375 -0.609375 1.6875l-1.453125 -0.140625q0.15625 -1.625 1.125 -2.46875q0.96875 -0.84375 2.59375 -0.84375q1.65625 0 2.609375 0.921875q0.96875 0.90625 0.96875 2.25q0 0.6875 -0.28125 1.359375q-0.28125 0.65625 -0.9375 1.390625q-0.65625 0.734375 -2.171875 2.015625q-1.265625 1.0625 -1.625 1.453125q-0.359375 0.375 -0.59375 0.75l5.625 0zm4.9921875 1.359375l0 -10.109375l-3.78125 0l0 -1.34375l9.078125 0l0 1.34375l-3.78125 0l0 10.109375l-1.515625 0zm6.8515625 0l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm7.921875 6.21875l3.328125 -11.859375l1.125 0l-3.3125 11.859375l-1.140625 0zm5.9453125 -0.203125l0 -11.453125l1.515625 0l0 11.453125l-1.515625 0zm4.1796875 0l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.640625 2.328125l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm16.6875 1.015625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2421875 1.90625l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm10.4921875 3.046875l-4.4375 -11.453125l1.640625 0l2.96875 8.3125q0.359375 1.0 0.609375 1.875q0.265625 -0.9375 0.609375 -1.875l3.09375 -8.3125l1.546875 0l-4.484375 11.453125l-1.546875 0zm7.390625 0l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm9.140625 6.015625l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm11.7890625 0l0 -1.609375l1.609375 0l0 1.609375l-1.609375 0z" fill-rule="nonzero"/><path fill="#000000" d="m640.0472 764.6356l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.96875 6.015625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm10.2734375 4.15625l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9296875 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm13.6328125 1.46875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm13.0078125 2.484375l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0zm8.0 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5546875 0l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.6328125 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm11.875 1.8125l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.625 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm6.7890625 0.234375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm15.34375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm20.765625 0.140625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm3.2109375 4.015625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm8.8828125 0l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8125 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm8.2265625 4.953125l0 -1.609375l1.609375 0l0 1.609375l-1.609375 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/README.md&sa=D&source=editors&ust=1638577908213000&usg=AOvVaw0zvtzR9Rp3BvTXJ5t-eH42" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m746.8714 682.2756l50.671875 0l0 28.799988l-50.671875 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#8e7cc3" d="m1156.1908 674.91077l240.85034 0l0 138.86615l-240.85034 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1156.1908 674.91077l240.85034 0l0 138.86615l-240.85034 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1232.5886 685.2242l88.05469 0l0 27.597656l-88.05469 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m1234.3542 706.95074l0 -17.1875l3.46875 0l0 6.765625l6.796875 0l0 -6.765625l3.46875 0l0 17.1875l-3.46875 0l0 -7.515625l-6.796875 0l0 7.515625l-3.46875 0zm24.503906 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm9.097656 7.296875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.9492188 -12.453125l3.03125 0l0 1.703125q1.625 -1.984375 3.875 -1.984375q1.203125 0 2.078125 0.5q0.875 0.484375 1.4375 1.484375q0.828125 -1.0 1.765625 -1.484375q0.953125 -0.5 2.03125 -0.5q1.375 0 2.3125 0.5625q0.953125 0.5625 1.421875 1.640625q0.34375 0.796875 0.34375 2.578125l0 7.953125l-3.296875 0l0 -7.109375q0 -1.859375 -0.328125 -2.390625q-0.46875 -0.703125 -1.40625 -0.703125q-0.703125 0 -1.3125 0.421875q-0.609375 0.421875 -0.875 1.234375q-0.265625 0.8125 -0.265625 2.5625l0 5.984375l-3.296875 0l0 -6.828125q0 -1.8125 -0.171875 -2.328125q-0.171875 -0.53125 -0.546875 -0.78125q-0.375 -0.265625 -1.0 -0.265625q-0.765625 0 -1.375 0.40625q-0.609375 0.40625 -0.875 1.1875q-0.265625 0.765625 -0.265625 2.5625l0 6.046875l-3.28125 0l0 -12.453125zm28.792969 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm4.7851562 3.75l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1320.6433 685.2242l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m1232.5886 708.51074l88.05469 0l0 2.1600342l-88.05469 0l0 -2.1600342z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/hermes/README.md&sa=D&source=editors&ust=1638577908215000&usg=AOvVaw0pm3C9IcD3P84ALeLgB-sr" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1232.5886 683.91077l88.05469 0l0 28.799988l-88.05469 0l0 -28.799988z" fill-rule="nonzero"/></a><defs><linearGradient id="p.3" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.216496493233654 0.0 0.0 14.216496493233654 0.0 0.0)" spreadMethod="pad" x1="99.85085736086143" y1="40.61493112550267" x2="89.79836859699044" y2="30.56225774006074"><stop offset="0.0" stop-color="#8e7cc3"/><stop offset="0.47" stop-color="#b4a7d6"/><stop offset="0.54" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.3)" d="m1156.1908 554.9134l240.85034 0l0 44.97638l-240.85034 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1156.1908 554.9134l240.85034 0l0 44.97638l-240.85034 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1177.575 564.5701l125.390625 0l0 13.798828l-125.390625 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m1182.4343 573.15216l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm1.9375 2.28125l0 -8.59375l1.046875 0l0 3.078125q0.734375 -0.84375 1.859375 -0.84375q0.703125 0 1.203125 0.28125q0.515625 0.265625 0.734375 0.75q0.21875 0.46875 0.21875 1.390625l0 3.9375l-1.046875 0l0 -3.9375q0 -0.796875 -0.34375 -1.15625q-0.34375 -0.359375 -0.96875 -0.359375q-0.46875 0 -0.890625 0.25q-0.40625 0.234375 -0.59375 0.65625q-0.171875 0.40625 -0.171875 1.140625l0 3.40625l-1.046875 0zm6.658203 0l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm3.6210938 -3.109375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.986328 3.109375l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm14.246094 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.486328 0.59375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.564453 1.25l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm5.625 2.0l2.484375 -8.875l0.84375 0l-2.484375 8.875l-0.84375 0zm8.162109 -0.140625l0 -0.78125q-0.59375 0.921875 -1.734375 0.921875q-0.75 0 -1.375 -0.40625q-0.625 -0.421875 -0.96875 -1.15625q-0.34375 -0.734375 -0.34375 -1.6875q0 -0.921875 0.3125 -1.6875q0.3125 -0.765625 0.9375 -1.15625q0.625 -0.40625 1.390625 -0.40625q0.5625 0 1.0 0.234375q0.4375 0.234375 0.71875 0.609375l0 -3.078125l1.046875 0l0 8.59375l-0.984375 0zm-3.328125 -3.109375q0 1.203125 0.5 1.796875q0.5 0.578125 1.1875 0.578125q0.6875 0 1.171875 -0.5625q0.484375 -0.5625 0.484375 -1.71875q0 -1.28125 -0.5 -1.875q-0.484375 -0.59375 -1.203125 -0.59375q-0.703125 0 -1.171875 0.578125q-0.46875 0.5625 -0.46875 1.796875zm6.939453 3.109375l-0.984375 0l0 -8.59375l1.0625 0l0 3.0625q0.671875 -0.828125 1.703125 -0.828125q0.578125 0 1.078125 0.234375q0.515625 0.21875 0.84375 0.640625q0.34375 0.421875 0.53125 1.015625q0.1875 0.59375 0.1875 1.265625q0 1.59375 -0.796875 2.46875q-0.796875 0.875 -1.890625 0.875q-1.109375 0 -1.734375 -0.921875l0 0.78125zm-0.015625 -3.15625q0 1.109375 0.3125 1.609375q0.5 0.8125 1.34375 0.8125q0.6875 0 1.1875 -0.59375q0.515625 -0.59375 0.515625 -1.796875q0 -1.21875 -0.484375 -1.796875q-0.484375 -0.578125 -1.171875 -0.578125q-0.6875 0 -1.203125 0.609375q-0.5 0.59375 -0.5 1.734375zm9.798828 3.15625l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm2.1738281 -1.859375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm5.625 2.0l2.484375 -8.875l0.84375 0l-2.484375 8.875l-0.84375 0zm4.1308594 -0.140625l0 -8.59375l1.046875 0l0 3.078125q0.734375 -0.84375 1.859375 -0.84375q0.703125 0 1.203125 0.28125q0.515625 0.265625 0.734375 0.75q0.21875 0.46875 0.21875 1.390625l0 3.9375l-1.046875 0l0 -3.9375q0 -0.796875 -0.34375 -1.15625q-0.34375 -0.359375 -0.96875 -0.359375q-0.46875 0 -0.890625 0.25q-0.40625 0.234375 -0.59375 0.65625q-0.171875 0.40625 -0.171875 1.140625l0 3.40625l-1.046875 0zm10.923828 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.861328 3.703125l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm4.0117188 0l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm14.246094 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.455078 1.84375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5z" fill-rule="nonzero"/><path fill="#000000" d="m1307.2214 575.4334l0 -8.59375l2.96875 0q1.0 0 1.53125 0.125q0.734375 0.171875 1.25 0.609375q0.6875 0.578125 1.015625 1.484375q0.34375 0.890625 0.34375 2.03125q0 0.984375 -0.234375 1.734375q-0.21875 0.75 -0.578125 1.25q-0.359375 0.5 -0.796875 0.78125q-0.421875 0.28125 -1.015625 0.4375q-0.59375 0.140625 -1.375 0.140625l-3.109375 0zm1.140625 -1.015625l1.828125 0q0.859375 0 1.34375 -0.15625q0.484375 -0.15625 0.765625 -0.453125q0.40625 -0.390625 0.625 -1.078125q0.234375 -0.6875 0.234375 -1.65625q0 -1.34375 -0.453125 -2.0625q-0.4375 -0.734375 -1.0625 -0.984375q-0.46875 -0.171875 -1.46875 -0.171875l-1.8125 0l0 6.5625zm7.4785156 1.015625l0 -8.59375l3.234375 0q0.984375 0 1.578125 0.265625q0.59375 0.265625 0.921875 0.8125q0.34375 0.53125 0.34375 1.125q0 0.546875 -0.296875 1.03125q-0.296875 0.484375 -0.90625 0.78125q0.78125 0.234375 1.1875 0.796875q0.421875 0.546875 0.421875 1.296875q0 0.59375 -0.25 1.125q-0.25 0.515625 -0.625 0.796875q-0.375 0.28125 -0.953125 0.421875q-0.5625 0.140625 -1.375 0.140625l-3.28125 0zm1.140625 -4.984375l1.859375 0q0.75 0 1.078125 -0.09375q0.4375 -0.125 0.65625 -0.421875q0.21875 -0.3125 0.21875 -0.765625q0 -0.421875 -0.203125 -0.75q-0.203125 -0.328125 -0.59375 -0.4375q-0.375 -0.125 -1.296875 -0.125l-1.71875 0l0 2.59375zm0 3.96875l2.140625 0q0.546875 0 0.765625 -0.046875q0.40625 -0.0625 0.65625 -0.21875q0.265625 -0.171875 0.4375 -0.484375q0.171875 -0.3125 0.171875 -0.71875q0 -0.484375 -0.25 -0.84375q-0.234375 -0.359375 -0.671875 -0.5q-0.4375 -0.140625 -1.265625 -0.140625l-1.984375 0l0 2.953125zm10.863281 1.015625l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm2.1738281 -1.859375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm16.021484 -1.15625l1.125 0.296875q-0.359375 1.390625 -1.28125 2.125q-0.921875 0.734375 -2.265625 0.734375q-1.390625 0 -2.265625 -0.5625q-0.875 -0.5625 -1.328125 -1.625q-0.453125 -1.078125 -0.453125 -2.3125q0 -1.34375 0.515625 -2.34375q0.515625 -1.0 1.453125 -1.515625q0.953125 -0.515625 2.09375 -0.515625q1.28125 0 2.15625 0.65625q0.890625 0.65625 1.234375 1.84375l-1.125 0.265625q-0.296875 -0.9375 -0.875 -1.359375q-0.5625 -0.4375 -1.421875 -0.4375q-0.984375 0 -1.65625 0.484375q-0.65625 0.46875 -0.9375 1.265625q-0.265625 0.796875 -0.265625 1.65625q0 1.09375 0.3125 1.90625q0.328125 0.8125 1.0 1.21875q0.671875 0.40625 1.46875 0.40625q0.953125 0 1.609375 -0.546875q0.671875 -0.546875 0.90625 -1.640625zm2.3691406 3.015625l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm2.6972656 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm6.9160156 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.876953 3.703125l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm8.970703 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm0.6152344 -0.921875l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5z" fill-rule="nonzero"/><path fill="#000099" d="m1177.575 576.2134l125.390625 0l0 1.0800171l-125.390625 0l0 -1.0800171z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/ash/components/dbus/hermes/&sa=D&source=editors&ust=1638577908219000&usg=AOvVaw2ujobYXoJulWxne0OMffYI" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1177.575 563.9134l125.390625 0l0 14.400024l-125.390625 0l0 -14.400024z" fill-rule="nonzero"/></a><path fill="#6d9eeb" d="m704.0971 633.55914l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l125.64807 0c1.4019775 0 2.746582 0.5569458 3.737915 1.5482788c0.991333 0.99139404 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194946 -2.3666992 5.286194 -5.286194 5.286194l-125.64807 0c-2.9194946 0 -5.286194 -2.3666992 -5.286194 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m704.0971 633.55914l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l125.64807 0c1.4019775 0 2.746582 0.5569458 3.737915 1.5482788c0.991333 0.99139404 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194946 -2.3666992 5.286194 -5.286194 5.286194l-125.64807 0c-2.9194946 0 -5.286194 -2.3666992 -5.286194 -5.286194z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m744.80914 636.86566l49.60962 0l0 15.325989l-49.60962 0l0 -15.325989z" fill-rule="nonzero"/><path fill="#000099" d="m745.9654 648.9312l0 -6.0l-1.03125 0l0 -0.90625l1.03125 0l0 -0.734375q0 -0.703125 0.125 -1.046875q0.171875 -0.453125 0.59375 -0.734375q0.421875 -0.28125 1.203125 -0.28125q0.484375 0 1.09375 0.109375l-0.1875 1.03125q-0.359375 -0.0625 -0.6875 -0.0625q-0.53125 0 -0.75 0.234375q-0.21875 0.21875 -0.21875 0.84375l0 0.640625l1.34375 0l0 0.90625l-1.34375 0l0 6.0l-1.171875 0zm3.406128 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9923706 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.9454346 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm11.383667 0l0 -6.0l-1.03125 0l0 -0.90625l1.03125 0l0 -0.734375q0 -0.703125 0.125 -1.046875q0.171875 -0.453125 0.59375 -0.734375q0.421875 -0.28125 1.203125 -0.28125q0.484375 0 1.093811 0.109375l-0.18756104 1.03125q-0.359375 -0.0625 -0.6875 -0.0625q-0.53125 0 -0.75 0.234375q-0.21875 0.21875 -0.21875 0.84375l0 0.640625l1.34375 0l0 0.90625l-1.34375 0l0 6.0l-1.171875 0zm3.406128 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.4923706 -0.859375q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm2.9906006 3.46875l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm11.430542 0l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0z" fill-rule="nonzero"/><path fill="#000000" d="m794.84064 641.13434l0.296875 -0.921875q1.03125 0.375 1.5 0.640625q-0.125 -1.1875 -0.125 -1.625l0.9375 0q-0.015625 0.640625 -0.140625 1.609375q0.65625 -0.328125 1.53125 -0.625l0.296875 0.921875q-0.828125 0.28125 -1.625 0.375q0.40625 0.34375 1.125 1.21875l-0.78125 0.5625q-0.375 -0.515625 -0.890625 -1.40625q-0.484375 0.921875 -0.84375 1.40625l-0.765625 -0.5625q0.75 -0.921875 1.078125 -1.21875q-0.84375 -0.171875 -1.59375 -0.375z" fill-rule="nonzero"/><path fill="#000099" d="m744.80914 649.7979l49.60962 0l0 1.2000122l-49.60962 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/doc/manager-api.txt?q%3Dmanager-api.txt%26sq%3Dpackage:chromeos_public&sa=D&source=editors&ust=1638577908221000&usg=AOvVaw0tDQt2hh5bFGWyCKJJIcyj" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m744.80914 636.1312l49.60962 0l0 16.0l-49.60962 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m1156.1908 478.6614l240.85034 0l0 59.716522l-240.85034 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1156.1908 478.6614l240.85034 0l0 59.716522l-240.85034 0z" fill-rule="evenodd"/><path fill="#000000" d="m1237.9949 499.0058l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.8828125 1.34375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8046875 4.953125l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4296875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.0 -3.6875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm16.6875 1.015625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm6.8203125 1.265625l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4609375 3.1875l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375z" fill-rule="nonzero"/><defs><linearGradient id="p.4" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.461889909062105 0.0 0.0 14.461889909062105 0.0 0.0)" spreadMethod="pad" x1="79.93039935274531" y1="21.668886568203416" x2="69.70439250989592" y2="11.442692564966935"><stop offset="0.0" stop-color="#3c78d8"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.4)" d="m878.9525 300.8479l0 0c0 -3.4587402 2.803833 -6.2626038 6.2625732 -6.2626038l245.67957 0c1.6608887 0 3.2537842 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8342285 2.7673645 1.8342285 4.428314l0 25.049622c0 3.4587097 -2.803833 6.2625732 -6.2625732 6.2625732l-245.67957 0c-3.4587402 0 -6.2625732 -2.8038635 -6.2625732 -6.2625732z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m878.9525 300.8479l0 0c0 -3.4587402 2.803833 -6.2626038 6.2625732 -6.2626038l245.67957 0c1.6608887 0 3.2537842 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8342285 2.7673645 1.8342285 4.428314l0 25.049622c0 3.4587097 -2.803833 6.2625732 -6.2625732 6.2625732l-245.67957 0c-3.4587402 0 -6.2625732 -2.8038635 -6.2625732 -6.2625732z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m910.274 306.15396l195.5617 0l0 15.32605l-195.5617 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m915.6646 315.6883l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0164795 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836853 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374817 0l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm2.421753 1.046875l-2.125 -6.90625l1.21875 0l1.09375 3.984375l0.421875 1.484375q0.015625 -0.109375 0.359375 -1.421875l1.09375 -4.046875l1.203125 0l1.03125 4.0l0.34375 1.328125l0.40625 -1.34375l1.171875 -3.984375l1.140625 0l-2.15625 6.90625l-1.21875 0l-1.09375 -4.140625l-0.265625 -1.171875l-1.40625 5.3125l-1.21875 0zm7.906433 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6312256 3.453125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.4696045 0l0 -9.546875l1.171875 0l0 5.453125l2.765625 -2.8125l1.515625 0l-2.640625 2.5625l2.90625 4.34375l-1.4375 0l-2.28125 -3.53125l-0.828125 0.796875l0 2.734375l-1.171875 0zm5.5703125 2.65625l0 -0.859375l7.765625 0l0 0.859375l-7.765625 0zm13.006226 -5.1875l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm1.7109375 -0.921875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm7.6937256 0l0 -6.0l-1.03125 0l0 -0.90625l1.03125 0l0 -0.734375q0 -0.703125 0.125 -1.046875q0.171875 -0.453125 0.59375 -0.734375q0.421875 -0.28125 1.203125 -0.28125q0.484375 0 1.09375 0.109375l-0.1875 1.03125q-0.359375 -0.0625 -0.6875 -0.0625q-0.53125 0 -0.75 0.234375q-0.21875 0.21875 -0.21875 0.84375l0 0.640625l1.34375 0l0 0.90625l-1.34375 0l0 6.0l-1.171875 0zm3.437378 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.7266846 0.578125l1.140625 0.15625q0.078125 0.53125 0.40625 0.78125q0.4375 0.3125 1.1875 0.3125q0.8125 0 1.25 -0.328125q0.453125 -0.3125 0.609375 -0.90625q0.09375 -0.359375 0.078125 -1.5q-0.765625 0.90625 -1.90625 0.90625q-1.4375 0 -2.21875 -1.03125q-0.78125 -1.03125 -0.78125 -2.46875q0 -0.984375 0.359375 -1.8125q0.359375 -0.84375 1.03125 -1.296875q0.6875 -0.453125 1.609375 -0.453125q1.21875 0 2.015625 0.984375l0 -0.828125l1.078125 0l0 5.96875q0 1.609375 -0.328125 2.28125q-0.328125 0.6875 -1.046875 1.078125q-0.703125 0.390625 -1.75 0.390625q-1.234375 0 -2.0 -0.5625q-0.75 -0.5625 -0.734375 -1.671875zm0.984375 -4.15625q0 1.359375 0.53125 1.984375q0.546875 0.625 1.359375 0.625q0.796875 0 1.34375 -0.625q0.546875 -0.625 0.546875 -1.953125q0 -1.265625 -0.5625 -1.90625q-0.5625 -0.640625 -1.359375 -0.640625q-0.765625 0 -1.3125 0.640625q-0.546875 0.625 -0.546875 1.875zm6.9749756 3.578125l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374878 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm10.664917 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 -4.734375l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm-1.484375 10.875l0.21875 -1.0q0.359375 0.09375 0.546875 0.09375q0.359375 0 0.53125 -0.25q0.1875 -0.234375 0.1875 -1.1875l0 -7.25l1.171875 0l0 7.28125q0 1.28125 -0.328125 1.78125q-0.4375 0.65625 -1.40625 0.65625q-0.484375 0 -0.921875 -0.125zm4.0079346 -6.140625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1105.8357 306.15396l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m910.274 319.0862l195.5617 0l0 1.2000122l-195.5617 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/services/network_config/public/mojom/cros_network_config.mojom?q%3Dchromeos.network_config.mojom%2520%26ss%3Dchromium&sa=D&source=editors&ust=1638577908228000&usg=AOvVaw1Ze-2zSCqY2-wFonj4JQiW" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m910.274 305.41956l195.5617 0l0 16.0l-195.5617 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#8e7cc3" d="m958.3438 1280.937l498.48822 0l0 101.03931l-498.48822 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m958.3438 1280.937l498.48822 0l0 101.03931l-498.48822 0z" fill-rule="evenodd"/><path fill="#000000" d="m978.31256 1333.6892l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm10.363586 1.578125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.094482 5.765625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1448364 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519775 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm4.0007324 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.504211 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1882324 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm11.567871 0l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm14.7751465 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.563232 4.84375l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141357 5.765625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.020874 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1292725 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm17.322021 0l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004272 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1881104 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.853394 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m1224.6273 1296.9528l175.9685 0l0 69.00781l-175.9685 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m1224.6273 1296.9528l175.9685 0l0 69.00781l-175.9685 0z" fill-rule="evenodd"/><path fill="#000000" d="m1234.4711 1319.5759l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm13.3342285 4.296875l0 -13.359375l1.765625 0l0 13.359375l-1.765625 0zm4.8394775 0l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm30.302246 -4.6875l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm10.051025 3.5q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1882324 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.494019 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm13.230835 5.0625l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0zm18.225952 -3.34375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm18.110107 -7.59375l1.765625 0l0 7.71875q0 2.015625 -0.453125 3.203125q-0.453125 1.1875 -1.640625 1.9375q-1.1875 0.734375 -3.125 0.734375q-1.875 0 -3.078125 -0.640625q-1.1875 -0.65625 -1.703125 -1.875q-0.5 -1.234375 -0.5 -3.359375l0 -7.71875l1.765625 0l0 7.71875q0 1.734375 0.3125 2.5625q0.328125 0.8125 1.109375 1.265625q0.796875 0.453125 1.9375 0.453125q1.953125 0 2.78125 -0.890625q0.828125 -0.890625 0.828125 -3.390625l0 -7.71875zm5.0042725 13.359375l0 -13.359375l1.765625 0l0 13.359375l-1.765625 0zm14.417603 -4.6875l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm13.473022 0l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875z" fill-rule="nonzero"/><path fill="#dd7e6b" d="m610.7297 966.22046l258.2047 0l0 101.03943l-258.2047 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m610.7297 966.22046l258.2047 0l0 101.03943l-258.2047 0z" fill-rule="evenodd"/><path fill="#000000" d="m697.98114 991.6717l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051636 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0zm10.375732 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1291504 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.4939575 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm7.7663574 8.53125l0 -1.1875l10.859375 0l0 1.1875l-10.859375 0zm11.891296 0l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.203857 3.59375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1882324 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.8063965 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5270996 5.1875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125zm8.171875 -3.484375l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m669.8574 998.25146l139.94922 0l0 21.45288l-139.94922 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m672.99805 1015.14044l-3.0625 -9.671875l2.484375 0l1.8125 6.34375l1.671875 -6.34375l2.46875 0l1.609375 6.34375l1.859375 -6.34375l2.515625 0l-3.109375 9.671875l-2.453125 0l-1.671875 -6.21875l-1.640625 6.21875l-2.484375 0zm12.636414 -9.671875l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm10.849121 -1.71875l-2.328125 -0.421875q0.40625 -1.40625 1.359375 -2.078125q0.953125 -0.671875 2.84375 -0.671875q1.703125 0 2.546875 0.40625q0.84375 0.40625 1.171875 1.03125q0.34375 0.625 0.34375 2.28125l-0.015625 3.0q0 1.265625 0.109375 1.875q0.125 0.609375 0.46875 1.296875l-2.53125 0q-0.109375 -0.25 -0.25 -0.75q-0.0625 -0.234375 -0.09375 -0.3125q-0.65625 0.640625 -1.40625 0.96875q-0.734375 0.3125 -1.59375 0.3125q-1.484375 0 -2.34375 -0.8125q-0.859375 -0.8125 -0.859375 -2.046875q0 -0.828125 0.390625 -1.46875q0.390625 -0.640625 1.09375 -0.96875q0.703125 -0.34375 2.03125 -0.609375q1.796875 -0.328125 2.484375 -0.625l0 -0.25q0 -0.75 -0.359375 -1.0625q-0.359375 -0.3125 -1.375 -0.3125q-0.6875 0 -1.078125 0.28125q-0.375 0.265625 -0.609375 0.9375zm3.421875 2.078125q-0.484375 0.15625 -1.5625 0.390625q-1.0625 0.21875 -1.390625 0.4375q-0.5 0.359375 -0.5 0.90625q0 0.53125 0.40625 0.9375q0.40625 0.390625 1.015625 0.390625q0.703125 0 1.328125 -0.46875q0.46875 -0.34375 0.609375 -0.84375q0.09375 -0.328125 0.09375 -1.25l0 -0.5zm3.5319824 8.328125l0 -1.65625l10.640625 0l0 1.65625l-10.640625 0zm10.985046 -6.453125l2.5625 -0.390625q0.171875 0.75 0.671875 1.140625q0.5 0.390625 1.40625 0.390625q0.984375 0 1.484375 -0.375q0.34375 -0.25 0.34375 -0.671875q0 -0.296875 -0.1875 -0.484375q-0.1875 -0.1875 -0.859375 -0.34375q-3.09375 -0.6875 -3.921875 -1.25q-1.140625 -0.78125 -1.140625 -2.171875q0 -1.265625 0.984375 -2.109375q1.0 -0.859375 3.078125 -0.859375q1.984375 0 2.953125 0.65625q0.96875 0.640625 1.328125 1.90625l-2.40625 0.4375q-0.15625 -0.5625 -0.59375 -0.859375q-0.421875 -0.296875 -1.234375 -0.296875q-1.0 0 -1.4375 0.28125q-0.296875 0.203125 -0.296875 0.515625q0 0.265625 0.25 0.46875q0.34375 0.25 2.390625 0.71875q2.046875 0.453125 2.859375 1.140625q0.796875 0.671875 0.796875 1.890625q0 1.34375 -1.109375 2.296875q-1.109375 0.953125 -3.28125 0.953125q-1.984375 0 -3.140625 -0.796875q-1.140625 -0.8125 -1.5 -2.1875zm17.641357 2.765625l0 -1.453125q-0.53125 0.78125 -1.390625 1.234375q-0.859375 0.4375 -1.8125 0.4375q-0.96875 0 -1.75 -0.421875q-0.765625 -0.4375 -1.125 -1.203125q-0.34375 -0.78125 -0.34375 -2.140625l0 -6.125l2.5625 0l0 4.4375q0 2.046875 0.140625 2.515625q0.140625 0.453125 0.515625 0.71875q0.375 0.265625 0.953125 0.265625q0.65625 0 1.171875 -0.359375q0.515625 -0.359375 0.703125 -0.890625q0.203125 -0.53125 0.203125 -2.609375l0 -4.078125l2.546875 0l0 9.671875l-2.375 0zm4.958496 -9.671875l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm8.864746 -4.671875l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm8.94281 5.0l0 -13.359375l2.5625 0l0 13.359375l-2.5625 0zm5.1833496 -10.984375l0 -2.375l2.5625 0l0 2.375l-2.5625 0zm0 10.984375l0 -9.671875l2.5625 0l0 9.671875l-2.5625 0zm13.620789 -6.8125l-2.53125 0.453125q-0.125 -0.75 -0.578125 -1.125q-0.453125 -0.390625 -1.171875 -0.390625q-0.953125 0 -1.53125 0.65625q-0.5625 0.65625 -0.5625 2.203125q0 1.734375 0.578125 2.4375q0.578125 0.703125 1.546875 0.703125q0.734375 0 1.203125 -0.40625q0.46875 -0.421875 0.65625 -1.421875l2.515625 0.421875q-0.390625 1.734375 -1.515625 2.625q-1.109375 0.875 -2.96875 0.875q-2.125 0 -3.390625 -1.328125q-1.25 -1.34375 -1.25 -3.71875q0 -2.390625 1.265625 -3.71875q1.265625 -1.34375 3.421875 -1.34375q1.765625 0 2.796875 0.765625q1.046875 0.75 1.515625 2.3125zm3.8444824 0.09375l-2.328125 -0.421875q0.40625 -1.40625 1.359375 -2.078125q0.953125 -0.671875 2.84375 -0.671875q1.703125 0 2.546875 0.40625q0.84375 0.40625 1.171875 1.03125q0.34375 0.625 0.34375 2.28125l-0.015625 3.0q0 1.265625 0.109375 1.875q0.125 0.609375 0.46875 1.296875l-2.53125 0q-0.109375 -0.25 -0.25 -0.75q-0.0625 -0.234375 -0.09375 -0.3125q-0.65625 0.640625 -1.40625 0.96875q-0.734375 0.3125 -1.59375 0.3125q-1.484375 0 -2.34375 -0.8125q-0.859375 -0.8125 -0.859375 -2.046875q0 -0.828125 0.390625 -1.46875q0.390625 -0.640625 1.09375 -0.96875q0.703125 -0.34375 2.03125 -0.609375q1.796875 -0.328125 2.484375 -0.625l0 -0.25q0 -0.75 -0.359375 -1.0625q-0.359375 -0.3125 -1.375 -0.3125q-0.6875 0 -1.078125 0.28125q-0.375 0.265625 -0.609375 0.9375zm3.421875 2.078125q-0.484375 0.15625 -1.5625 0.390625q-1.0625 0.21875 -1.390625 0.4375q-0.5 0.359375 -0.5 0.90625q0 0.53125 0.40625 0.9375q0.40625 0.390625 1.015625 0.390625q0.703125 0 1.328125 -0.46875q0.46875 -0.34375 0.609375 -0.84375q0.09375 -0.328125 0.09375 -1.25l0 -0.5zm13.844421 4.640625l-2.5625 0l0 -4.9375q0 -1.5625 -0.171875 -2.015625q-0.15625 -0.46875 -0.53125 -0.71875q-0.359375 -0.265625 -0.875 -0.265625q-0.671875 0 -1.203125 0.375q-0.53125 0.359375 -0.734375 0.96875q-0.1875 0.59375 -0.1875 2.21875l0 4.375l-2.546875 0l0 -9.671875l2.375 0l0 1.421875q1.265625 -1.640625 3.1875 -1.640625q0.84375 0 1.546875 0.3125q0.703125 0.296875 1.0625 0.78125q0.359375 0.46875 0.5 1.078125q0.140625 0.59375 0.140625 1.703125l0 6.015625zm7.036621 -9.671875l0 2.03125l-1.75 0l0 3.90625q0 1.1875 0.046875 1.390625q0.046875 0.1875 0.21875 0.3125q0.1875 0.125 0.4375 0.125q0.359375 0 1.03125 -0.25l0.21875 2.0q-0.890625 0.375 -2.015625 0.375q-0.703125 0 -1.265625 -0.234375q-0.546875 -0.234375 -0.8125 -0.59375q-0.25 -0.375 -0.34375 -1.0q-0.09375 -0.453125 -0.09375 -1.8125l0 -4.21875l-1.171875 0l0 -2.03125l1.171875 0l0 -1.921875l2.578125 -1.5l0 3.421875l1.75 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m809.80664 998.25146l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m669.8574 1016.3538l139.94922 0l0 1.6799927l-139.94922 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/third_party/wpa_supplicant/wpa_supplicant/?q%3Dwpa_supplicant&sa=D&source=editors&ust=1638577908238000&usg=AOvVaw2UhcCz4DmA_EaO4q2tEFM1" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m669.8574 997.22046l139.94922 0l0 22.400024l-139.94922 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#dd7e6b" d="m632.48425 918.68646l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l191.88428 0c1.4020386 0 2.746582 0.5569458 3.737915 1.5482788c0.99139404 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286194 -5.286194 5.286194l-191.88428 0c-2.9194946 0 -5.286194 -2.3667603 -5.286194 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m632.48425 918.68646l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l191.88428 0c1.4020386 0 2.746582 0.5569458 3.737915 1.5482788c0.99139404 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286194 -5.286194 5.286194l-191.88428 0c-2.9194946 0 -5.286194 -2.3667603 -5.286194 -5.286194z" fill-rule="evenodd"/><path fill="#000000" d="m651.04364 935.46857l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0839844 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.9628906 0l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm4.1777344 0l-1.90625 -6.21875l1.09375 0l0.984375 3.59375l0.375 1.328125q0.03125 -0.09375 0.328125 -1.28125l0.984375 -3.640625l1.078125 0l0.9375 3.609375l0.3125 1.1875l0.359375 -1.203125l1.0625 -3.59375l1.03125 0l-1.953125 6.21875l-1.09375 0l-0.984375 -3.734375l-0.25 -1.046875l-1.25 4.78125l-1.109375 0zm11.197266 0l-1.046875 0l0 -6.71875q-0.390625 0.359375 -1.015625 0.734375q-0.609375 0.359375 -1.09375 0.53125l0 -1.015625q0.875 -0.421875 1.53125 -1.0q0.671875 -0.59375 0.953125 -1.15625l0.671875 0l0 8.625zm3.2988281 0l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm4.1777344 0l-1.90625 -6.21875l1.09375 0l0.984375 3.59375l0.375 1.328125q0.03125 -0.09375 0.328125 -1.28125l0.984375 -3.640625l1.078125 0l0.9375 3.609375l0.3125 1.1875l0.359375 -1.203125l1.0625 -3.59375l1.03125 0l-1.953125 6.21875l-1.09375 0l-0.984375 -3.734375l-0.25 -1.046875l-1.25 4.78125l-1.109375 0zm7.5253906 2.390625l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm9.783203 2.3125q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm1.7207031 5.515625l0 -0.765625l7.0 0l0 0.765625l-7.0 0zm7.236328 -4.25l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm10.5 1.859375l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm2.5957031 2.390625l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm5.720703 5.46875l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm5.689453 3.078125l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm2.6972656 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm6.7285156 -2.28125l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm6.0 1.515625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.7050781 3.125l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm8.970703 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm4.7089844 0.9375l-1.046875 0l0 -6.71875q-0.390625 0.359375 -1.015625 0.734375q-0.609375 0.359375 -1.09375 0.53125l0 -1.015625q0.875 -0.421875 1.53125 -1.0q0.671875 -0.59375 0.953125 -1.15625l0.671875 0l0 8.625zm3.2988281 0l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm3.3652344 0l0 -8.59375l1.125 0l0 8.59375l-1.125 0zm3.0058594 0l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm8.970703 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm5.2871094 -1.0625l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.861328 3.703125l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm4.2617188 0l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm7.1464844 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm6.767578 0.84375l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm6.1875 0.28125l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m920.18243 920.23895l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l200.60864 0c1.4019775 0 2.746582 0.5569458 3.737915 1.5482788c0.9914551 0.991333 1.5483398 2.3359375 1.5483398 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286194 -5.286255 5.286194l-200.60864 0c-2.9194946 0 -5.286194 -2.3667603 -5.286194 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m920.18243 920.23895l0 0c0 -2.9194946 2.3666992 -5.286194 5.286194 -5.286194l200.60864 0c1.4019775 0 2.746582 0.5569458 3.737915 1.5482788c0.9914551 0.991333 1.5483398 2.3359375 1.5483398 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286194 -5.286255 5.286194l-200.60864 0c-2.9194946 0 -5.286194 -2.3667603 -5.286194 -5.286194z" fill-rule="evenodd"/><path fill="#000000" d="m935.7954 933.9117q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.970703 3.109375l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm3.8085938 0.515625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm6.298828 3.21875l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm3.2871094 0l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0683594 0l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm8.261719 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm10.126953 1.703125l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm9.908203 3.703125l0 -0.78125q-0.59375 0.921875 -1.734375 0.921875q-0.75 0 -1.375 -0.40625q-0.625 -0.421875 -0.96875 -1.15625q-0.34375 -0.734375 -0.34375 -1.6875q0 -0.921875 0.3125 -1.6875q0.3125 -0.765625 0.9375 -1.15625q0.625 -0.40625 1.390625 -0.40625q0.5625 0 1.0 0.234375q0.4375 0.234375 0.71875 0.609375l0 -3.078125l1.046875 0l0 8.59375l-0.984375 0zm-3.328125 -3.109375q0 1.203125 0.5 1.796875q0.5 0.578125 1.1875 0.578125q0.6875 0 1.171875 -0.5625q0.484375 -0.5625 0.484375 -1.71875q0 -1.28125 -0.5 -1.875q-0.484375 -0.59375 -1.203125 -0.59375q-0.703125 0 -1.171875 0.578125q-0.46875 0.5625 -0.46875 1.796875zm10.220703 1.109375l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.455078 1.84375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm6.421875 1.859375l0 -8.59375l1.0625 0l0 4.90625l2.484375 -2.53125l1.375 0l-2.390625 2.296875l2.625 3.921875l-1.296875 0l-2.0625 -3.1875l-0.734375 0.71875l0 2.46875l-1.0625 0zm8.296875 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm0.6464844 -2.171875q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.986328 5.5l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm6.017578 3.078125l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0zm3.1308594 0l0 -8.59375l1.71875 0l2.03125 6.078125q0.28125 0.859375 0.40625 1.28125q0.140625 -0.46875 0.453125 -1.375l2.0625 -5.984375l1.53125 0l0 8.59375l-1.09375 0l0 -7.1875l-2.5 7.1875l-1.03125 0l-2.484375 -7.3125l0 7.3125l-1.09375 0zm9.511719 -3.109375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm10.017578 3.109375l0 -0.78125q-0.59375 0.921875 -1.734375 0.921875q-0.75 0 -1.375 -0.40625q-0.625 -0.421875 -0.96875 -1.15625q-0.34375 -0.734375 -0.34375 -1.6875q0 -0.921875 0.3125 -1.6875q0.3125 -0.765625 0.9375 -1.15625q0.625 -0.40625 1.390625 -0.40625q0.5625 0 1.0 0.234375q0.4375 0.234375 0.71875 0.609375l0 -3.078125l1.046875 0l0 8.59375l-0.984375 0zm-3.328125 -3.109375q0 1.203125 0.5 1.796875q0.5 0.578125 1.1875 0.578125q0.6875 0 1.171875 -0.5625q0.484375 -0.5625 0.484375 -1.71875q0 -1.28125 -0.5 -1.875q-0.484375 -0.59375 -1.203125 -0.59375q-0.703125 0 -1.171875 0.578125q-0.46875 0.5625 -0.46875 1.796875zm10.220703 1.109375l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.876953 3.703125l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm10.089844 0l0 -8.59375l1.71875 0l2.03125 6.078125q0.28125 0.859375 0.40625 1.28125q0.140625 -0.46875 0.453125 -1.375l2.0625 -5.984375l1.53125 0l0 8.59375l-1.09375 0l0 -7.1875l-2.5 7.1875l-1.03125 0l-2.484375 -7.3125l0 7.3125l-1.09375 0zm13.964844 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.7050781 3.125l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm10.736328 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.5019531 3.640625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm10.251953 1.21875l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.861328 3.703125l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm7.6835938 0l-1.046875 0l0 -6.71875q-0.390625 0.359375 -1.015625 0.734375q-0.609375 0.359375 -1.09375 0.53125l0 -1.015625q0.875 -0.421875 1.53125 -1.0q0.671875 -0.59375 0.953125 -1.15625l0.671875 0l0 8.625z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m940.31494 1026.2362l175.9685 0l0 37.57483l-175.9685 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m940.31494 1026.2362l175.9685 0l0 37.57483l-175.9685 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m996.16547 1036.2672l64.26752 0l0 21.45288l-64.26752 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m997.35297 1053.1562l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1917114 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm5.6447754 0l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.891357 4.90625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm17.040771 0l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.891357 -6.5625l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1448975 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1060.433 1036.2672l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m996.16547 1054.3695l64.26752 0l0 1.6800537l-64.26752 0l0 -1.6800537z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://docs.google.com/drawings/d/1uGg3EKV0wzma3FBQm94c45M2xV0tmQcNdbtygUnOjlI/edit&sa=D&source=editors&ust=1638577908247000&usg=AOvVaw1gEjzvFhCE0y__YdgilinR" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m996.16547 1035.2362l64.26752 0l0 22.400024l-64.26752 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#8e7cc3" d="m1138.7454 1026.2362l152.25195 0l0 37.57483l-152.25195 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1138.7454 1026.2362l152.25195 0l0 37.57483l-152.25195 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1190.508 1036.2672l48.726685 0l0 21.45288l-48.726685 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1191.6956 1053.1562l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1916504 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm5.6448975 0l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm15.047485 8.609375l0 -4.734375q-0.375 0.546875 -1.0625 0.90625q-0.6875 0.34375 -1.46875 0.34375q-1.71875 0 -2.96875 -1.375q-1.234375 -1.375 -1.234375 -3.765625q0 -1.46875 0.5 -2.625q0.515625 -1.15625 1.46875 -1.75q0.96875 -0.59375 2.109375 -0.59375q1.796875 0 2.828125 1.515625l0 -1.296875l1.46875 0l0 13.375l-1.640625 0zm-5.046875 -8.5625q0 1.859375 0.78125 2.796875q0.78125 0.9375 1.875 0.9375q1.046875 0 1.796875 -0.890625q0.765625 -0.890625 0.765625 -2.703125q0 -1.9375 -0.796875 -2.90625q-0.796875 -0.96875 -1.875 -0.96875q-1.0625 0 -1.8125 0.90625q-0.734375 0.90625 -0.734375 2.828125zm9.266357 4.859375l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm15.540894 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1239.2347 1036.2672l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1190.508 1054.3695l48.726685 0l0 1.6800537l-48.726685 0l0 -1.6800537z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://docs.google.com/drawings/d/1uGg3EKV0wzma3FBQm94c45M2xV0tmQcNdbtygUnOjlI/edit&sa=D&source=editors&ust=1638577908249000&usg=AOvVaw2jAXNQ6dTte6AmOn4yceh2" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1190.508 1035.2362l48.726685 0l0 22.400024l-48.726685 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m1098.7843 229.11023l498.48828 0l0 37.5748l-498.48828 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1098.7843 229.11023l498.48828 0l0 37.5748l-498.48828 0z" fill-rule="evenodd"/><path fill="#000000" d="m1263.9747 246.86461l1.0625 -0.09375q0.078125 0.65625 0.359375 1.0625q0.28125 0.40625 0.859375 0.671875q0.59375 0.25 1.328125 0.25q0.640625 0 1.140625 -0.1875q0.5 -0.203125 0.734375 -0.53125q0.25 -0.34375 0.25 -0.734375q0 -0.40625 -0.234375 -0.703125q-0.234375 -0.3125 -0.765625 -0.515625q-0.359375 -0.140625 -1.546875 -0.421875q-1.171875 -0.28125 -1.640625 -0.53125q-0.625 -0.328125 -0.921875 -0.796875q-0.296875 -0.484375 -0.296875 -1.078125q0 -0.640625 0.359375 -1.203125q0.375 -0.578125 1.078125 -0.859375q0.71875 -0.296875 1.578125 -0.296875q0.953125 0 1.6875 0.3125q0.734375 0.296875 1.125 0.90625q0.390625 0.59375 0.421875 1.34375l-1.09375 0.078125q-0.09375 -0.8125 -0.609375 -1.21875q-0.5 -0.421875 -1.484375 -0.421875q-1.03125 0 -1.5 0.375q-0.46875 0.375 -0.46875 0.90625q0 0.46875 0.328125 0.765625q0.328125 0.296875 1.703125 0.609375q1.390625 0.3125 1.90625 0.546875q0.75 0.359375 1.109375 0.890625q0.359375 0.515625 0.359375 1.21875q0 0.6875 -0.390625 1.296875q-0.390625 0.59375 -1.125 0.9375q-0.734375 0.328125 -1.65625 0.328125q-1.171875 0 -1.96875 -0.328125q-0.78125 -0.34375 -1.234375 -1.03125q-0.4375 -0.6875 -0.453125 -1.546875zm12.503906 0.765625l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm8.173828 2.765625l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm3.3339844 0l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm1.0371094 -6.4375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.6660156 0l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm6.470703 0.515625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm5.580078 1.359375l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm14.662109 0.84375q-0.515625 0.578125 -1.140625 0.875q-0.609375 0.28125 -1.328125 0.28125q-1.3125 0 -2.09375 -0.890625q-0.625 -0.71875 -0.625 -1.625q0 -0.796875 0.515625 -1.4375q0.515625 -0.640625 1.53125 -1.125q-0.578125 -0.671875 -0.78125 -1.078125q-0.1875 -0.421875 -0.1875 -0.8125q0 -0.765625 0.609375 -1.328125q0.609375 -0.578125 1.53125 -0.578125q0.875 0 1.421875 0.546875q0.5625 0.53125 0.5625 1.28125q0 1.234375 -1.609375 2.09375l1.53125 1.96875q0.265625 -0.515625 0.40625 -1.203125l1.109375 0.234375q-0.28125 1.125 -0.765625 1.859375q0.59375 0.78125 1.34375 1.3125l-0.71875 0.84375q-0.640625 -0.421875 -1.3125 -1.21875zm-2.140625 -4.46875q0.6875 -0.40625 0.875 -0.703125q0.203125 -0.3125 0.203125 -0.6875q0 -0.4375 -0.28125 -0.71875q-0.265625 -0.28125 -0.6875 -0.28125q-0.421875 0 -0.71875 0.28125q-0.28125 0.28125 -0.28125 0.671875q0 0.203125 0.109375 0.421875q0.109375 0.21875 0.3125 0.46875l0.46875 0.546875zm1.484375 3.640625l-1.9375 -2.40625q-0.859375 0.515625 -1.15625 0.953125q-0.296875 0.4375 -0.296875 0.859375q0 0.53125 0.40625 1.09375q0.421875 0.5625 1.1875 0.5625q0.46875 0 0.96875 -0.296875q0.515625 -0.296875 0.828125 -0.765625zm13.353516 -1.171875l1.125 0.296875q-0.359375 1.390625 -1.28125 2.125q-0.921875 0.734375 -2.265625 0.734375q-1.390625 0 -2.265625 -0.5625q-0.875 -0.5625 -1.328125 -1.625q-0.453125 -1.078125 -0.453125 -2.3125q0 -1.34375 0.515625 -2.34375q0.515625 -1.0 1.453125 -1.515625q0.953125 -0.515625 2.09375 -0.515625q1.28125 0 2.15625 0.65625q0.890625 0.65625 1.234375 1.84375l-1.125 0.265625q-0.296875 -0.9375 -0.875 -1.359375q-0.5625 -0.4375 -1.421875 -0.4375q-0.984375 0 -1.65625 0.484375q-0.65625 0.46875 -0.9375 1.265625q-0.265625 0.796875 -0.265625 1.65625q0 1.09375 0.3125 1.90625q0.328125 0.8125 1.0 1.21875q0.671875 0.40625 1.46875 0.40625q0.953125 0 1.609375 -0.546875q0.671875 -0.546875 0.90625 -1.640625zm2.0097656 -0.09375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.986328 3.109375l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm6.923828 0l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0839844 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.4628906 0.515625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm10.080078 3.21875l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm2.5800781 0l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm8.074219 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm5.001953 2.1875l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm1.0371094 -6.4375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.2753906 -3.109375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.986328 3.109375l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm11.6328125 0l-2.28125 -8.59375l1.171875 0l1.3125 5.640625q0.203125 0.875 0.359375 1.75q0.328125 -1.375 0.390625 -1.59375l1.625 -5.796875l1.375 0l1.234375 4.34375q0.453125 1.625 0.671875 3.046875q0.15625 -0.8125 0.421875 -1.875l1.34375 -5.515625l1.140625 0l-2.34375 8.59375l-1.109375 0l-1.796875 -6.546875q-0.234375 -0.8125 -0.28125 -1.0q-0.125 0.578125 -0.25 1.0l-1.8125 6.546875l-1.171875 0zm13.734375 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm6.845703 3.703125l-0.984375 0l0 -8.59375l1.0625 0l0 3.0625q0.671875 -0.828125 1.703125 -0.828125q0.578125 0 1.078125 0.234375q0.515625 0.21875 0.84375 0.640625q0.34375 0.421875 0.53125 1.015625q0.1875 0.59375 0.1875 1.265625q0 1.59375 -0.796875 2.46875q-0.796875 0.875 -1.890625 0.875q-1.109375 0 -1.734375 -0.921875l0 0.78125zm-0.015625 -3.15625q0 1.109375 0.3125 1.609375q0.5 0.8125 1.34375 0.8125q0.6875 0 1.1875 -0.59375q0.515625 -0.59375 0.515625 -1.796875q0 -1.21875 -0.484375 -1.796875q-0.484375 -0.578125 -1.171875 -0.578125q-0.6875 0 -1.203125 0.609375q-0.5 0.59375 -0.5 1.734375zm11.486328 -5.4375l1.140625 0l0 4.96875q0 1.296875 -0.296875 2.0625q-0.296875 0.75 -1.0625 1.234375q-0.765625 0.46875 -2.0 0.46875q-1.203125 0 -1.984375 -0.40625q-0.765625 -0.421875 -1.09375 -1.203125q-0.328125 -0.796875 -0.328125 -2.15625l0 -4.96875l1.140625 0l0 4.953125q0 1.125 0.203125 1.65625q0.21875 0.53125 0.71875 0.828125q0.515625 0.28125 1.25 0.28125q1.25 0 1.78125 -0.5625q0.53125 -0.578125 0.53125 -2.203125l0 -4.953125zm3.2285156 8.59375l0 -8.59375l1.125 0l0 8.59375l-1.125 0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m878.19977 230.4147l171.05511 0l0 37.5748l-171.05511 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m878.19977 230.4147l171.05511 0l0 37.5748l-171.05511 0z" fill-rule="evenodd"/><path fill="#000000" d="m923.26733 248.16907l1.0625 -0.09375q0.078125 0.65625 0.359375 1.0625q0.28125 0.40625 0.859375 0.671875q0.59375 0.25 1.328125 0.25q0.640625 0 1.140625 -0.1875q0.5 -0.203125 0.734375 -0.53125q0.25 -0.34375 0.25 -0.734375q0 -0.40625 -0.234375 -0.703125q-0.234375 -0.3125 -0.765625 -0.515625q-0.359375 -0.140625 -1.546875 -0.421875q-1.171875 -0.28125 -1.640625 -0.53125q-0.625 -0.328125 -0.921875 -0.796875q-0.296875 -0.484375 -0.296875 -1.078125q0 -0.640625 0.359375 -1.203125q0.375 -0.578125 1.078125 -0.859375q0.71875 -0.296875 1.578125 -0.296875q0.953125 0 1.6875 0.3125q0.734375 0.296875 1.125 0.90625q0.390625 0.59375 0.421875 1.34375l-1.09375 0.078125q-0.09375 -0.8125 -0.609375 -1.21875q-0.5 -0.421875 -1.484375 -0.421875q-1.03125 0 -1.5 0.375q-0.46875 0.375 -0.46875 0.90625q0 0.46875 0.328125 0.765625q0.328125 0.296875 1.703125 0.609375q1.390625 0.3125 1.90625 0.546875q0.75 0.359375 1.109375 0.890625q0.359375 0.515625 0.359375 1.21875q0 0.6875 -0.390625 1.296875q-0.390625 0.59375 -1.125 0.9375q-0.734375 0.328125 -1.65625 0.328125q-1.171875 0 -1.96875 -0.328125q-0.78125 -0.34375 -1.234375 -1.03125q-0.4375 -0.6875 -0.453125 -1.546875zm8.207031 5.15625l-0.125 -0.984375q0.34375 0.09375 0.609375 0.09375q0.34375 0 0.546875 -0.125q0.21875 -0.109375 0.359375 -0.3125q0.09375 -0.171875 0.328125 -0.796875q0.015625 -0.078125 0.09375 -0.25l-2.375 -6.234375l1.140625 0l1.296875 3.59375q0.25 0.6875 0.453125 1.453125q0.1875 -0.734375 0.4375 -1.421875l1.328125 -3.625l1.046875 0l-2.359375 6.328125q-0.390625 1.015625 -0.59375 1.40625q-0.28125 0.53125 -0.65625 0.765625q-0.359375 0.25 -0.859375 0.25q-0.296875 0 -0.671875 -0.140625zm5.625 -4.25l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm8.71875 0.921875l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm5.2871094 -1.0625l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.876953 3.703125l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm15.425781 0l0 -7.578125l-2.828125 0l0 -1.015625l6.8125 0l0 1.015625l-2.84375 0l0 7.578125l-1.140625 0zm4.5566406 0l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm8.074219 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.6582031 5.515625l-0.125 -0.984375q0.34375 0.09375 0.609375 0.09375q0.34375 0 0.546875 -0.125q0.21875 -0.109375 0.359375 -0.3125q0.09375 -0.171875 0.328125 -0.796875q0.015625 -0.078125 0.09375 -0.25l-2.375 -6.234375l1.140625 0l1.296875 3.59375q0.25 0.6875 0.453125 1.453125q0.1875 -0.734375 0.4375 -1.421875l1.328125 -3.625l1.046875 0l-2.359375 6.328125q-0.390625 1.015625 -0.59375 1.40625q-0.28125 0.53125 -0.65625 0.765625q-0.359375 0.25 -0.859375 0.25q-0.296875 0 -0.671875 -0.140625zm15.146484 -10.984375l1.140625 0l0 4.96875q0 1.296875 -0.296875 2.0625q-0.296875 0.75 -1.0625 1.234375q-0.765625 0.46875 -2.0 0.46875q-1.203125 0 -1.984375 -0.40625q-0.765625 -0.421875 -1.09375 -1.203125q-0.328125 -0.796875 -0.328125 -2.15625l0 -4.96875l1.140625 0l0 4.953125q0 1.125 0.203125 1.65625q0.21875 0.53125 0.71875 0.828125q0.515625 0.28125 1.25 0.28125q1.25 0 1.78125 -0.5625q0.53125 -0.578125 0.53125 -2.203125l0 -4.953125zm3.2285156 8.59375l0 -8.59375l1.125 0l0 8.59375l-1.125 0z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m1234.0027 634.3768l0 0c0 -2.9194946 2.3666992 -5.286194 5.286255 -5.286194l74.65588 0c1.4019775 0 2.746582 0.55688477 3.737915 1.5482788c0.991333 0.991333 1.5483398 2.3358765 1.5483398 3.737915l0 21.144104c0 2.9194946 -2.3666992 5.286194 -5.286255 5.286194l-74.65588 0l0 0c-2.9195557 0 -5.286255 -2.3666992 -5.286255 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1234.0027 634.3768l0 0c0 -2.9194946 2.3666992 -5.286194 5.286255 -5.286194l74.65588 0c1.4019775 0 2.746582 0.55688477 3.737915 1.5482788c0.991333 0.991333 1.5483398 2.3358765 1.5483398 3.737915l0 21.144104c0 2.9194946 -2.3666992 5.286194 -5.286255 5.286194l-74.65588 0l0 0c-2.9195557 0 -5.286255 -2.3666992 -5.286255 -5.286194z" fill-rule="evenodd"/><path fill="#000000" d="m1249.907 649.74884l0 -9.546875l1.265625 0l0 3.921875l4.953125 0l0 -3.921875l1.265625 0l0 9.546875l-1.265625 0l0 -4.5l-4.953125 0l0 4.5l-1.265625 0zm14.171997 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.4541016 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0531006 2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm2.921753 -7.796875l0.296875 -0.921875q1.03125 0.375 1.5 0.640625q-0.125 -1.1875 -0.125 -1.625l0.9375 0q-0.015625 0.640625 -0.140625 1.609375q0.65625 -0.328125 1.53125 -0.625l0.296875 0.921875q-0.828125 0.28125 -1.625 0.375q0.40625 0.34375 1.125 1.21875l-0.78125 0.5625q-0.375 -0.515625 -0.890625 -1.40625q-0.484375 0.921875 -0.84375 1.40625l-0.765625 -0.5625q0.75 -0.921875 1.078125 -1.21875q-0.84375 -0.171875 -1.59375 -0.375z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m496.78195 230.74278l171.05515 0l0 37.574814l-171.05515 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m496.78195 230.74278l171.05515 0l0 37.574814l-171.05515 0z" fill-rule="evenodd"/><path fill="#000000" d="m534.2685 251.26279l0 -8.59375l5.796875 0l0 1.015625l-4.65625 0l0 2.65625l4.03125 0l0 1.015625l-4.03125 0l0 3.90625l-1.140625 0zm11.392578 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm10.126953 1.703125l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm9.908203 3.703125l0 -0.78125q-0.59375 0.921875 -1.734375 0.921875q-0.75 0 -1.375 -0.40625q-0.625 -0.421875 -0.96875 -1.15625q-0.34375 -0.734375 -0.34375 -1.6875q0 -0.921875 0.3125 -1.6875q0.3125 -0.765625 0.9375 -1.15625q0.625 -0.40625 1.390625 -0.40625q0.5625 0 1.0 0.234375q0.4375 0.234375 0.71875 0.609375l0 -3.078125l1.046875 0l0 8.59375l-0.984375 0zm-3.328125 -3.109375q0 1.203125 0.5 1.796875q0.5 0.578125 1.1875 0.578125q0.6875 0 1.171875 -0.5625q0.484375 -0.5625 0.484375 -1.71875q0 -1.28125 -0.5 -1.875q-0.484375 -0.59375 -1.203125 -0.59375q-0.703125 0 -1.171875 0.578125q-0.46875 0.5625 -0.46875 1.796875zm6.939453 3.109375l-0.984375 0l0 -8.59375l1.0625 0l0 3.0625q0.671875 -0.828125 1.703125 -0.828125q0.578125 0 1.078125 0.234375q0.515625 0.21875 0.84375 0.640625q0.34375 0.421875 0.53125 1.015625q0.1875 0.59375 0.1875 1.265625q0 1.59375 -0.796875 2.46875q-0.796875 0.875 -1.890625 0.875q-1.109375 0 -1.734375 -0.921875l0 0.78125zm-0.015625 -3.15625q0 1.109375 0.3125 1.609375q0.5 0.8125 1.34375 0.8125q0.6875 0 1.1875 -0.59375q0.515625 -0.59375 0.515625 -1.796875q0 -1.21875 -0.484375 -1.796875q-0.484375 -0.578125 -1.171875 -0.578125q-0.6875 0 -1.203125 0.609375q-0.5 0.59375 -0.5 1.734375zm9.783203 2.390625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm6.767578 0.84375l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm1.9375 2.28125l0 -8.59375l1.0625 0l0 4.90625l2.484375 -2.53125l1.375 0l-2.390625 2.296875l2.625 3.921875l-1.296875 0l-2.0625 -3.1875l-0.734375 0.71875l0 2.46875l-1.0625 0zm9.474609 0l0 -8.59375l3.8125 0q1.15625 0 1.75 0.234375q0.59375 0.234375 0.953125 0.828125q0.359375 0.578125 0.359375 1.28125q0 0.921875 -0.59375 1.546875q-0.59375 0.625 -1.828125 0.796875q0.453125 0.21875 0.6875 0.421875q0.5 0.453125 0.9375 1.140625l1.5 2.34375l-1.4375 0l-1.125 -1.78125q-0.5 -0.78125 -0.828125 -1.1875q-0.3125 -0.40625 -0.578125 -0.5625q-0.25 -0.171875 -0.515625 -0.25q-0.1875 -0.03125 -0.625 -0.03125l-1.328125 0l0 3.8125l-1.140625 0zm1.140625 -4.796875l2.453125 0q0.765625 0 1.203125 -0.15625q0.453125 -0.171875 0.671875 -0.515625q0.234375 -0.359375 0.234375 -0.78125q0 -0.609375 -0.453125 -1.0q-0.4375 -0.390625 -1.390625 -0.390625l-2.71875 0l0 2.84375zm11.634766 2.796875l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.876953 6.09375l0 -8.609375l0.953125 0l0 0.796875q0.34375 -0.46875 0.765625 -0.703125q0.4375 -0.234375 1.046875 -0.234375q0.796875 0 1.40625 0.40625q0.609375 0.40625 0.90625 1.15625q0.3125 0.75 0.3125 1.640625q0 0.953125 -0.34375 1.71875q-0.328125 0.765625 -0.984375 1.171875q-0.65625 0.40625 -1.375 0.40625q-0.53125 0 -0.953125 -0.21875q-0.421875 -0.234375 -0.6875 -0.5625l0 3.03125l-1.046875 0zm0.953125 -5.46875q0 1.203125 0.484375 1.78125q0.484375 0.5625 1.171875 0.5625q0.703125 0 1.203125 -0.59375q0.5 -0.59375 0.5 -1.84375q0 -1.1875 -0.484375 -1.765625q-0.484375 -0.59375 -1.171875 -0.59375q-0.671875 0 -1.1875 0.625q-0.515625 0.625 -0.515625 1.828125zm5.330078 -0.03125q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.970703 3.109375l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0zm6.3085938 -0.9375l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm0.6152344 -0.921875l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5z" fill-rule="nonzero"/><defs><linearGradient id="p.5" gradientUnits="userSpaceOnUse" gradientTransform="matrix(13.81608296015827 0.0 0.0 13.81608296015827 0.0 0.0)" spreadMethod="pad" x1="58.502680497066756" y1="22.681664627686473" x2="48.733326564729104" y2="12.912126659763194"><stop offset="0.0" stop-color="#3c78d8"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.5)" d="m557.11255 300.8466l0 0c0 -3.4587402 2.803894 -6.2626038 6.2626343 -6.2626038l219.85272 0c1.6609497 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8342896 2.7673645 1.8342896 4.428314l0 25.049622c0 3.4587097 -2.803894 6.2625732 -6.2626343 6.2625732l-219.85272 0c-3.4587402 0 -6.2626343 -2.8038635 -6.2626343 -6.2625732z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m557.11255 300.8466l0 0c0 -3.4587402 2.803894 -6.2626038 6.2626343 -6.2626038l219.85272 0c1.6609497 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8342896 2.7673645 1.8342896 4.428314l0 25.049622c0 3.4587097 -2.803894 6.2625732 -6.2626343 6.2625732l-219.85272 0c-3.4587402 0 -6.2626343 -2.8038635 -6.2626343 -6.2625732z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m575.1465 306.15265l196.31012 0l0 15.32605l-196.31012 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m580.5371 315.68698l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0164795 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374878 0l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm2.421753 1.046875l-2.125 -6.90625l1.21875 0l1.09375 3.984375l0.421875 1.484375q0.015625 -0.109375 0.359375 -1.421875l1.09375 -4.046875l1.203125 0l1.03125 4.0l0.34375 1.328125l0.40625 -1.34375l1.171875 -3.984375l1.140625 0l-2.15625 6.90625l-1.21875 0l-1.09375 -4.140625l-0.265625 -1.171875l-1.40625 5.3125l-1.21875 0zm7.906372 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6312256 3.453125l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.4696045 0l0 -9.546875l1.171875 0l0 5.453125l2.765625 -2.8125l1.515625 0l-2.640625 2.5625l2.90625 4.34375l-1.4375 0l-2.28125 -3.53125l-0.828125 0.796875l0 2.734375l-1.171875 0zm5.5703125 2.65625l0 -0.859375l7.765625 0l0 0.859375l-7.765625 0zm8.490601 -2.65625l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm11.037476 3.265625q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm2.9749756 3.46875l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm5.5392456 -1.046875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm1.1405029 1.046875l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.7406006 0l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374817 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm10.664978 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 -4.734375l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm-1.484375 10.875l0.21875 -1.0q0.359375 0.09375 0.546875 0.09375q0.359375 0 0.53125 -0.25q0.1875 -0.234375 0.1875 -1.1875l0 -7.25l1.171875 0l0 7.28125q0 1.28125 -0.328125 1.78125q-0.4375 0.65625 -1.40625 0.65625q-0.484375 0 -0.921875 -0.125zm4.0079346 -6.140625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m771.4566 306.15265l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m575.1465 319.0849l196.31012 0l0 1.2000122l-196.31012 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/services/network_health/public/mojom/network_health.mojom;l%3D9?q%3Dnetwork_health.mojom%26sq%3D%26ss%3Dchromium&sa=D&source=editors&ust=1638577908260000&usg=AOvVaw28ybHi5HGyeCAUlmf__dTZ" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m575.1465 305.41824l196.31012 0l0 16.0l-196.31012 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m1160.627 300.8479l0 0c0 -3.4587402 2.803955 -6.2626038 6.2626953 -6.2626038l219.85266 0c1.6610107 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8343506 2.7673645 1.8343506 4.428314l0 25.049622c0 3.4587097 -2.803955 6.2625732 -6.2626953 6.2625732l-219.85266 0c-3.4587402 0 -6.2626953 -2.8038635 -6.2626953 -6.2625732z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1160.627 300.8479l0 0c0 -3.4587402 2.803955 -6.2626038 6.2626953 -6.2626038l219.85266 0c1.6610107 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8343506 2.7673645 1.8343506 4.428314l0 25.049622c0 3.4587097 -2.803955 6.2625732 -6.2626953 6.2625732l-219.85266 0c-3.4587402 0 -6.2626953 -2.8038635 -6.2626953 -6.2625732z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1182.738 306.15396l188.15588 0l0 15.32605l-188.15588 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1188.1287 315.6883l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0166016 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm7.890503 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm6.8828125 0.3125l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5062256 4.125l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9610596 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5079346 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.8656006 0l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.4923096 -0.859375q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm2.9749756 3.46875l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm3.3758545 2.65625l0 -0.859375l7.765625 0l0 0.859375l-7.765625 0zm8.021851 -4.71875l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm11.8671875 -0.15625l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm5.671753 1.046875l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.8812256 2.65625l0 -9.5625l1.078125 0l0 0.890625q0.375 -0.53125 0.84375 -0.78125q0.484375 -0.265625 1.15625 -0.265625q0.875 0 1.546875 0.453125q0.6875 0.453125 1.03125 1.28125q0.34375 0.828125 0.34375 1.828125q0 1.046875 -0.375 1.90625q-0.375 0.84375 -1.109375 1.296875q-0.71875 0.453125 -1.53125 0.453125q-0.578125 0 -1.046875 -0.25q-0.46875 -0.25 -0.765625 -0.625l0 3.375l-1.171875 0zm1.0625 -6.078125q0 1.34375 0.53125 1.984375q0.546875 0.625 1.3125 0.625q0.78125 0 1.34375 -0.65625q0.5625 -0.65625 0.5625 -2.046875q0 -1.3125 -0.546875 -1.96875q-0.546875 -0.671875 -1.296875 -0.671875q-0.75 0 -1.328125 0.703125q-0.578125 0.703125 -0.578125 2.03125zm6.6781006 3.421875l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374878 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm10.664917 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 -4.734375l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm-1.484375 10.875l0.21875 -1.0q0.359375 0.09375 0.546875 0.09375q0.359375 0 0.53125 -0.25q0.1875 -0.234375 0.1875 -1.1875l0 -7.25l1.171875 0l0 7.28125q0 1.28125 -0.328125 1.78125q-0.4375 0.65625 -1.40625 0.65625q-0.484375 0 -0.921875 -0.125zm4.0080566 -6.140625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1370.8939 306.15396l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1182.738 319.0862l188.15588 0l0 1.2000122l-188.15588 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/main:ash/services/cellular_setup/public/mojom/cellular_setup.mojom?q%3Dcellular_setup.mojom%26ss%3Dchromium&sa=D&source=editors&ust=1638577908265000&usg=AOvVaw0URa34zZn9Fxpr16lgI-Ar" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1182.738 305.41956l188.15588 0l0 16.0l-188.15588 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m687.49084 230.74278l171.05511 0l0 37.574814l-171.05511 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m687.49084 230.74278l171.05511 0l0 37.574814l-171.05511 0z" fill-rule="evenodd"/><path fill="#000000" d="m735.25964 251.26279l0 -8.59375l2.96875 0q1.0 0 1.53125 0.125q0.734375 0.171875 1.25 0.609375q0.6875 0.578125 1.015625 1.484375q0.34375 0.890625 0.34375 2.03125q0 0.984375 -0.234375 1.734375q-0.21875 0.75 -0.578125 1.25q-0.359375 0.5 -0.796875 0.78125q-0.421875 0.28125 -1.015625 0.4375q-0.59375 0.140625 -1.375 0.140625l-3.109375 0zm1.140625 -1.015625l1.828125 0q0.859375 0 1.34375 -0.15625q0.484375 -0.15625 0.765625 -0.453125q0.40625 -0.390625 0.625 -1.078125q0.234375 -0.6875 0.234375 -1.65625q0 -1.34375 -0.453125 -2.0625q-0.4375 -0.734375 -1.0625 -0.984375q-0.46875 -0.171875 -1.46875 -0.171875l-1.8125 0l0 6.5625zm7.4003906 -6.359375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm6.7285156 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.5019531 3.640625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm6.001953 3.21875l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm6.283203 -3.109375q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.564453 1.25l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm8.71875 0.921875l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm1.0371094 -6.4375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm6.7285156 -2.28125l1.03125 0.140625q-0.171875 1.0625 -0.875 1.671875q-0.703125 0.609375 -1.71875 0.609375q-1.28125 0 -2.0625 -0.828125q-0.765625 -0.84375 -0.765625 -2.40625q0 -1.0 0.328125 -1.75q0.34375 -0.765625 1.015625 -1.140625q0.6875 -0.375 1.5 -0.375q1.0 0 1.640625 0.515625q0.65625 0.5 0.84375 1.453125l-1.03125 0.15625q-0.140625 -0.625 -0.515625 -0.9375q-0.375 -0.328125 -0.90625 -0.328125q-0.796875 0 -1.296875 0.578125q-0.5 0.5625 -0.5 1.796875q0 1.265625 0.484375 1.828125q0.484375 0.5625 1.25 0.5625q0.625 0 1.03125 -0.375q0.421875 -0.375 0.546875 -1.171875zm1.515625 0.421875l1.03125 -0.15625q0.09375 0.625 0.484375 0.953125q0.40625 0.328125 1.140625 0.328125q0.71875 0 1.0625 -0.28125q0.359375 -0.296875 0.359375 -0.703125q0 -0.359375 -0.3125 -0.5625q-0.21875 -0.140625 -1.078125 -0.359375q-1.15625 -0.296875 -1.609375 -0.5q-0.4375 -0.21875 -0.671875 -0.59375q-0.234375 -0.375 -0.234375 -0.84375q0 -0.40625 0.1875 -0.765625q0.1875 -0.359375 0.515625 -0.59375q0.25 -0.171875 0.671875 -0.296875q0.421875 -0.125 0.921875 -0.125q0.71875 0 1.265625 0.21875q0.5625 0.203125 0.828125 0.5625q0.265625 0.359375 0.359375 0.953125l-1.03125 0.140625q-0.0625 -0.46875 -0.40625 -0.734375q-0.328125 -0.28125 -0.953125 -0.28125q-0.71875 0 -1.03125 0.25q-0.3125 0.234375 -0.3125 0.5625q0 0.203125 0.125 0.359375q0.140625 0.171875 0.40625 0.28125q0.15625 0.0625 0.9375 0.265625q1.125 0.3125 1.5625 0.5q0.4375 0.1875 0.6875 0.546875q0.25 0.359375 0.25 0.90625q0 0.53125 -0.3125 1.0q-0.296875 0.453125 -0.875 0.71875q-0.578125 0.25 -1.3125 0.25q-1.21875 0 -1.859375 -0.5q-0.625 -0.515625 -0.796875 -1.5zm15.521484 -6.734375l1.140625 0l0 4.96875q0 1.296875 -0.296875 2.0625q-0.296875 0.75 -1.0625 1.234375q-0.765625 0.46875 -2.0 0.46875q-1.203125 0 -1.984375 -0.40625q-0.765625 -0.421875 -1.09375 -1.203125q-0.328125 -0.796875 -0.328125 -2.15625l0 -4.96875l1.140625 0l0 4.953125q0 1.125 0.203125 1.65625q0.21875 0.53125 0.71875 0.828125q0.515625 0.28125 1.25 0.28125q1.25 0 1.78125 -0.5625q0.53125 -0.578125 0.53125 -2.203125l0 -4.953125zm3.2285156 8.59375l0 -8.59375l1.125 0l0 8.59375l-1.125 0z" fill-rule="nonzero"/><path fill="#6d9eeb" d="m965.1916 363.38846l171.05511 0l0 93.25983l-171.05511 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m965.1916 363.38846l171.05511 0l0 93.25983l-171.05511 0z" fill-rule="evenodd"/><path fill="#000000" d="m1009.87933 383.73282l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.6171875 2.984375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 7.359375l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015564 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.54681396 -0.296875 -0.90618896 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65618896 0.765625 1.578064 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.593689 0.84375q-0.6875 0.84375 -0.6875 2.4375zm10.695251 2.84375l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm5.8515625 0l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm11.375 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm12.453125 4.953125l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.453125 1.859375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm8.40625 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm6.7890625 0.234375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5703125 4.171875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m1018.1567 406.74844l0 -11.453125l3.953125 0q1.328125 0 2.031189 0.15625q0.984375 0.234375 1.6875 0.828125q0.90625 0.765625 1.34375 1.953125q0.453125 1.1875 0.453125 2.71875q0 1.3125 -0.3125 2.328125q-0.296875 1.0 -0.78125 1.65625q-0.46875 0.65625 -1.03125 1.046875q-0.5625 0.375 -1.375 0.578125q-0.79681396 0.1875 -1.828064 0.1875l-4.140625 0zm1.515625 -1.359375l2.453125 0q1.125 0 1.765625 -0.203125q0.65618896 -0.21875 1.031189 -0.59375q0.546875 -0.546875 0.84375 -1.453125q0.296875 -0.90625 0.296875 -2.203125q0 -1.796875 -0.59375 -2.765625q-0.578125 -0.96875 -1.421875 -1.296875q-0.60931396 -0.234375 -1.968689 -0.234375l-2.40625 0l0 8.75zm15.539001 -1.3125l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2421875 1.90625l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm5.65625 1.78125l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578125l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m1005.21136 425.74844l0 -11.453125l2.28125 0l2.71875 8.109375q0.375 1.125 0.546875 1.6875q0.1875 -0.625 0.609375 -1.828125l2.734375 -7.96875l2.046875 0l0 11.453125l-1.46875 0l0 -9.59375l-3.328125 9.59375l-1.359375 0l-3.3125 -9.75l0 9.75l-1.46875 0zm18.609375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.67181396 0.25 0.98431396 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21868896 -0.4375 -0.28118896 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015015 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.3046875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.3359375 4.859375l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.6640625 1.625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm11.9609375 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625z" fill-rule="nonzero"/><path fill="#dd7e6b" d="m604.1142 1278.9318l271.43304 0l0 101.03931l-271.43304 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m604.1142 1278.9318l271.43304 0l0 101.03931l-271.43304 0z" fill-rule="evenodd"/><path fill="#000000" d="m649.79584 1336.3715l-3.53125 -13.359375l1.8125 0l2.03125 8.765625q0.328125 1.375 0.5625 2.71875q0.5 -2.140625 0.59375 -2.46875l2.546875 -9.015625l2.125 0l1.921875 6.765625q0.71875 2.515625 1.03125 4.71875q0.265625 -1.265625 0.671875 -2.890625l2.09375 -8.59375l1.78125 0l-3.671875 13.359375l-1.703125 0l-2.8125 -10.171875q-0.359375 -1.28125 -0.421875 -1.5625q-0.203125 0.90625 -0.390625 1.5625l-2.828125 10.171875l-1.8125 0zm15.077393 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.4417114 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm9.484375 0l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm14.7751465 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.563232 4.84375l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141357 5.765625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.020935 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1292114 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm17.322083 0l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004211 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1881714 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.8533325 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#d9d9d9" d="m9.328084 1118.9843l1805.9528 0l0 148.25195l-1805.9528 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m9.328084 1118.9843l1805.9528 0l0 148.25195l-1805.9528 0z" fill-rule="evenodd"/><path fill="#000000" d="m886.6997 1145.9043l0 -13.359375l1.78125 0l0 6.625l6.625 -6.625l2.390625 0l-5.59375 5.421875l5.84375 7.9375l-2.328125 0l-4.765625 -6.765625l-2.171875 2.140625l0 4.625l-1.78125 0zm18.943542 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2283325 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000671 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.094482 5.765625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0z" fill-rule="nonzero"/><path fill="#f6b26b" d="m9.333333 618.1103l322.07874 0l0 295.27563l-322.07874 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m9.333333 618.1103l322.07874 0l0 295.27563l-322.07874 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m106.35317 628.42377l128.03906 0l0 27.597656l-128.03906 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m108.10317 650.1503l0 -17.1875l5.5625 0q3.171875 0 4.125 0.265625q1.484375 0.390625 2.46875 1.6875q1.0 1.28125 1.0 3.34375q0 1.578125 -0.578125 2.65625q-0.5625 1.078125 -1.453125 1.703125q-0.890625 0.609375 -1.796875 0.796875q-1.25 0.25 -3.59375 0.25l-2.265625 0l0 6.484375l-3.46875 0zm3.46875 -14.28125l0 4.875l1.890625 0q2.0625 0 2.75 -0.265625q0.6875 -0.265625 1.078125 -0.84375q0.390625 -0.578125 0.390625 -1.328125q0 -0.9375 -0.546875 -1.546875q-0.546875 -0.609375 -1.390625 -0.765625q-0.625 -0.125 -2.5 -0.125l-1.671875 0zm14.9765625 5.625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.6718674 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.0312424 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3124924 -0.4375 3.2031174 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.8906174 0 -1.3906174 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.4062424 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.3593674 0.28125 -1.7812424 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3124924 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm12.191406 -6.46875l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921875l0 4.390625l2.25 0zm13.1328125 3.6875l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm5.7695312 -8.421875l0 6.328125q1.59375 -1.875 3.8125 -1.875q1.140625 0 2.046875 0.421875q0.921875 0.421875 1.375 1.078125q0.46875 0.65625 0.640625 1.453125q0.171875 0.796875 0.171875 2.484375l0 7.296875l-3.296875 0l0 -6.578125q0 -1.953125 -0.1875 -2.484375q-0.1875 -0.53125 -0.671875 -0.828125q-0.46875 -0.3125 -1.171875 -0.3125q-0.828125 0 -1.46875 0.40625q-0.640625 0.390625 -0.953125 1.1875q-0.296875 0.796875 -0.296875 2.375l0 6.234375l-3.28125 0l0 -17.1875l3.28125 0zm11.285156 4.734375l3.078125 0l0 1.828125q0.59375 -0.9375 1.609375 -1.515625q1.03125 -0.59375 2.265625 -0.59375q2.171875 0 3.671875 1.703125q1.515625 1.703125 1.515625 4.734375q0 3.125 -1.53125 4.859375q-1.515625 1.71875 -3.671875 1.71875q-1.03125 0 -1.875 -0.40625q-0.84375 -0.421875 -1.765625 -1.40625l0 6.265625l-3.296875 0l0 -17.1875zm3.265625 6.015625q0 2.09375 0.828125 3.109375q0.828125 1.0 2.03125 1.0q1.140625 0 1.90625 -0.921875q0.765625 -0.921875 0.765625 -3.015625q0 -1.96875 -0.796875 -2.90625q-0.78125 -0.953125 -1.9375 -0.953125q-1.203125 0 -2.0 0.9375q-0.796875 0.921875 -0.796875 2.75zm13.957031 -2.21875l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm17.800781 5.984375l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm10.550781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm5.9414062 7.296875l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m234.39223 628.42377l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m106.35317 651.7103l128.03906 0l0 2.1599731l-128.03906 0l0 -2.1599731z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/README.md&sa=D&source=editors&ust=1638577908280000&usg=AOvVaw0xtsTU7RS5l_IpLaBwIMGn" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m106.35317 627.1103l128.03906 0l0 28.799988l-128.03906 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#efefef" d="m21.837269 276.4672l225.48032 0l0 193.22833l-225.48032 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.837269 276.4672l225.48032 0l0 193.22833l-225.48032 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m100.55203 286.78064l68.05078 0l0 27.597656l-68.05078 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m117.78641 308.5072l-3.765625 0l-1.5 -3.90625l-6.875 0l-1.40625 3.90625l-3.6875 0l6.6875 -17.1875l3.671875 0l6.875 17.1875zm-6.375 -6.796875l-2.375 -6.375l-2.3125 6.375l4.6875 0zm11.347656 6.796875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm17.042969 -8.765625l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm6.2695312 6.296875l0 -4.46875l-4.5 0l0 -3.078125l4.5 0l0 -4.46875l3.0 0l0 4.46875l4.515625 0l0 3.078125l-4.515625 0l0 4.46875l-3.0 0zm14.015625 0l0 -4.46875l-4.5 0l0 -3.078125l4.5 0l0 -4.46875l3.0 0l0 4.46875l4.515625 0l0 3.078125l-4.515625 0l0 4.46875l-3.0 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m168.60281 286.78064l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m100.55203 310.0672l68.05078 0l0 2.1600037l-68.05078 0l0 -2.1600037z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/arc%2B%2B&sa=D&source=editors&ust=1638577908282000&usg=AOvVaw0QKpgc0Stl6OfekfPGHexe" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m100.55203 285.4672l68.05078 0l0 28.799988l-68.05078 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#efefef" d="m51.359577 317.66797l225.48033 0l0 193.22836l-225.48033 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m51.359577 317.66797l225.48033 0l0 193.22836l-225.48033 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m118.765755 327.9814l90.66796 0l0 27.597656l-90.66796 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m131.50012 343.39548l3.375 1.0625q-0.78125 2.8125 -2.578125 4.1875q-1.796875 1.359375 -4.5624924 1.359375q-3.421875 0 -5.625 -2.34375q-2.203125 -2.34375 -2.203125 -6.390625q0 -4.296875 2.203125 -6.65625q2.21875 -2.375 5.828125 -2.375q3.1562424 0 5.1249924 1.859375q1.171875 1.09375 1.765625 3.15625l-3.4375 0.828125q-0.3125 -1.34375 -1.28125 -2.109375q-0.953125 -0.78125 -2.3437424 -0.78125q-1.90625 0 -3.09375 1.375q-1.1875 1.375 -1.1875 4.4375q0 3.265625 1.171875 4.65625q1.171875 1.375 3.046875 1.375q1.3749924 0 2.3749924 -0.875q1.0 -0.890625 1.421875 -2.765625zm9.472656 6.3125l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.4335938 -6.40625q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm10.878906 2.671875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875zm20.222656 -8.90625l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921875l0 4.390625l2.25 0zm2.2734375 -1.6875l0 -3.046875l3.296875 0l0 3.046875l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm17.996094 0l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm3.3320312 -14.140625l0 -3.046875l3.296875 0l0 3.046875l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m209.43372 327.9814l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m118.765755 351.26797l90.66796 0l0 2.1600037l-90.66796 0l0 -2.1600037z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/crostini&sa=D&source=editors&ust=1638577908284000&usg=AOvVaw2I83KHoP3INVulvOCAyGG-" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m118.765755 326.66797l90.66796 0l0 28.800018l-90.66796 0l0 -28.800018z" fill-rule="nonzero"/></a><path fill="#dd7e6b" d="m597.50134 1156.5826l309.57477 0l0 88.188965l-309.57477 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m597.50134 1156.5826l309.57477 0l0 88.188965l-309.57477 0z" fill-rule="evenodd"/><path fill="#000000" d="m706.8266 1183.5027l-3.53125 -13.359375l1.8125 0l2.03125 8.765625q0.328125 1.375 0.5625 2.71875q0.5 -2.140625 0.59375 -2.46875l2.546875 -9.015625l2.125 0l1.921875 6.765625q0.71875 2.515625 1.03125 4.71875q0.265625 -1.265625 0.671875 -2.890625l2.09375 -8.59375l1.78125 0l-3.671875 13.359375l-1.703125 0l-2.8125 -10.171875q-0.359375 -1.28125 -0.421875 -1.5625q-0.203125 0.90625 -0.390625 1.5625l-2.828125 10.171875l-1.8125 0zm15.077454 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.4416504 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm15.59375 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm9.266357 4.828125l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm6.8323364 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.5720215 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#8e7cc3" d="m1024.3439 1197.4121l258.2047 0l0 54.141724l-258.2047 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m1024.3439 1197.4121l258.2047 0l0 54.141724l-258.2047 0z" fill-rule="evenodd"/><path fill="#000000" d="m1084.0692 1226.7155l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm10.363525 1.578125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.094482 5.765625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1447754 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm9.375 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm14.931519 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.56311 4.84375l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141357 5.765625l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm26.989746 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm9.266357 4.828125l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm6.8323975 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.12561 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.5721436 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#f6b26b" d="m71.01837 1128.9003l202.4567 0l0 54.141724l-202.4567 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m71.01837 1128.9003l202.4567 0l0 54.141724l-202.4567 0z" fill-rule="evenodd"/><path fill="#000000" d="m141.5635 1153.3911l0 -13.359375l5.921875 0q1.78125 0 2.703125 0.359375q0.9375 0.359375 1.484375 1.28125q0.5625 0.90625 0.5625 2.015625q0 1.40625 -0.921875 2.390625q-0.921875 0.96875 -2.84375 1.234375q0.703125 0.34375 1.078125 0.671875q0.765625 0.703125 1.453125 1.765625l2.328125 3.640625l-2.21875 0l-1.765625 -2.78125q-0.78125 -1.203125 -1.28125 -1.828125q-0.5 -0.640625 -0.90625 -0.890625q-0.390625 -0.265625 -0.796875 -0.359375q-0.296875 -0.078125 -0.984375 -0.078125l-2.046875 0l0 5.9375l-1.765625 0zm1.765625 -7.453125l3.796875 0q1.21875 0 1.890625 -0.25q0.6875 -0.265625 1.046875 -0.8125q0.359375 -0.546875 0.359375 -1.1875q0 -0.953125 -0.6875 -1.5625q-0.6875 -0.609375 -2.1875 -0.609375l-4.21875 0l0 4.421875zm10.863571 2.609375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.625717 4.84375l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm7.625717 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051788 -10.0l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.144821 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.063217 0.796875l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625z" fill-rule="nonzero"/><path fill="#000000" d="m112.83266 1162.9874l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5546875 3.1875l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm10.6953125 2.84375l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm6.7890625 0.234375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm4.8984375 4.171875l-1.3125 0l0 -11.453125l1.40625 0l0 4.078125q0.890625 -1.109375 2.28125 -1.109375q0.765625 0 1.4375 0.3125q0.6875 0.296875 1.125 0.859375q0.453125 0.5625 0.703125 1.359375q0.25 0.78125 0.25 1.671875q0 2.140625 -1.0625 3.3125q-1.046875 1.15625 -2.53125 1.15625q-1.46875 0 -2.296875 -1.234375l0 1.046875zm-0.015625 -4.21875q0 1.5 0.40625 2.15625q0.65625 1.09375 1.796875 1.09375q0.921875 0 1.59375 -0.796875q0.671875 -0.8125 0.671875 -2.390625q0 -1.625 -0.65625 -2.390625q-0.640625 -0.78125 -1.546875 -0.78125q-0.921875 0 -1.59375 0.796875q-0.671875 0.796875 -0.671875 2.3125zm7.5859375 4.21875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.2578125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.9453125 2.6875l3.328125 -11.859375l1.125 0l-3.3125 11.859375l-1.140625 0zm9.953125 -0.203125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.5703125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm4.1171875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5234375 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm6.6484375 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1328.8635 88.38316l202.45667 0l0 59.685043l-202.45667 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1328.8635 88.38316l202.45667 0l0 59.685043l-202.45667 0z" fill-rule="evenodd"/><path fill="#000000" d="m1368.1232 109.055664l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm10.484375 -0.46875q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm7.1796875 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm15.4296875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm11.015625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm8.2265625 -1.75l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0zm8.15625 -3.6875l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1450.1075 98.25879l42.671875 0l0 18.398438l-42.671875 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m1451.1075 115.94629l-0.15625 -1.328125q0.453125 0.125 0.796875 0.125q0.46875 0 0.75 -0.15625q0.28125 -0.15625 0.46875 -0.4375q0.125 -0.203125 0.421875 -1.046875q0.046875 -0.109375 0.125 -0.34375l-3.140625 -8.3125l1.515625 0l1.71875 4.796875q0.34375 0.921875 0.609375 1.921875q0.234375 -0.96875 0.578125 -1.890625l1.765625 -4.828125l1.40625 0l-3.15625 8.4375q-0.5 1.375 -0.78125 1.890625q-0.375 0.6875 -0.859375 1.015625q-0.484375 0.328125 -1.15625 0.328125q-0.40625 0 -0.90625 -0.171875zm7.5 -5.6875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm11.625 1.21875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1492.7794 98.25879l4.4453125 0l0 18.398438l-4.4453125 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m1450.1075 113.783165l42.671875 0l0 1.4400024l-42.671875 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1399.4161 117.25879l61.351562 0l0 18.398438l-61.351562 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m1400.1349 128.05566l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm16.6875 1.015625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm7.640625 0l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9609375 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm8.265625 0.375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m1460.7677 117.25879l0 0l0 18.398438l0 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m1399.4161 132.78316l61.351562 0l0 1.4400024l-61.351562 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/2196359393073&sa=D&source=editors&ust=1638577908298000&usg=AOvVaw1FPXhPS5m-Kwoz-RQElkN_" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1450.1075 97.38316l47.117188 0l0 19.199997l-47.117188 0l0 -19.199997z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/2196359393073&sa=D&source=editors&ust=1638577908299000&usg=AOvVaw3di9lJXxv75lDFQVgdiKED" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1399.4161 116.38316l61.351562 0l0 19.199997l-61.351562 0l0 -19.199997z" fill-rule="nonzero"/></a><path fill="#6d9eeb" d="m103.63911 88.3832l202.4567 0l0 59.71653l-202.4567 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m103.63911 88.3832l202.4567 0l0 59.71653l-202.4567 0z" fill-rule="evenodd"/><path fill="#000000" d="m117.18386 112.7432l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.4062576 0l0 11.453125l-1.4062576 0zm8.992195 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m184.41043 98.25883l109.375 0l0 18.398438l-109.375 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m185.62918 112.7432l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm17.070312 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0zm12.6640625 0l0 -11.453125l1.515625 0l0 4.703125l5.953125 0l0 -4.703125l1.515625 0l0 11.453125l-1.515625 0l0 -5.40625l-5.953125 0l0 5.40625l-1.515625 0zm17.007812 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2421875 3.921875q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5703125 4.171875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm6.6484375 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m293.78543 98.25883l4.4453125 0l0 18.398438l-4.4453125 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m184.41043 113.7832l109.375 0l0 1.4400024l-109.375 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m149.72293 117.25883l110.28906 0l0 18.398445l-110.28906 0l0 -18.398445z" fill-rule="nonzero"/><path fill="#000099" d="m157.3323 130.38383q-0.703125 0.78125 -1.53125 1.171875q-0.8125 0.390625 -1.765625 0.390625q-1.75 0 -2.78125 -1.203125q-0.84375 -0.96875 -0.84375 -2.15625q0 -1.0625076 0.6875 -1.9218826q0.6875 -0.859375 2.046875 -1.5q-0.78125 -0.890625 -1.046875 -1.4375q-0.25 -0.5625 -0.25 -1.078125q0 -1.03125 0.8125 -1.796875q0.8125 -0.765625 2.03125 -0.765625q1.171875 0 1.921875 0.71875q0.75 0.71875 0.75 1.734375q0 1.625 -2.171875 2.78125l2.0625 2.625q0.34375 -0.6875 0.546875 -1.59375l1.453125 0.3125q-0.375 1.5000076 -1.015625 2.4687576q0.796875 1.046875 1.796875 1.75l-0.953125 1.125q-0.84375 -0.546875 -1.75 -1.625zm-2.859375 -5.9687576q0.90625 -0.53125 1.171875 -0.9375q0.28125 -0.40625 0.28125 -0.90625q0 -0.578125 -0.375 -0.953125q-0.375 -0.375 -0.921875 -0.375q-0.578125 0 -0.953125 0.375q-0.375 0.359375 -0.375 0.890625q0 0.265625 0.125 0.5625q0.140625 0.296875 0.421875 0.625l0.625 0.71875zm1.96875 4.8593826l-2.578125 -3.1875076q-1.140625 0.671875 -1.546875 1.265625q-0.390625 0.578125 -0.390625 1.1406326q0 0.703125 0.546875 1.453125q0.5625 0.75 1.578125 0.75q0.640625 0 1.3125 -0.390625q0.671875 -0.40625 1.078125 -1.03125zm17.804688 -1.5468826l1.515625 0.37500763q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375076 -0.609375 -3.0781326q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625076q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.1718826zm2.6796875 -0.140625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.5937576 -0.484375 2.5156326q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.2343826zm1.453125 0q0 1.5937576 0.6875 2.3906326q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375076q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.1562576l0 -8.296883l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.1093826l-1.40625 0l0 -5.0468826q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.5312576l-1.40625 0zm9.2265625 0l0 -7.2031326l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.2031326l-1.40625 0zm4.1171875 -9.843758l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm3.2890625 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.96875 0 1.5 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.296875 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.9687576q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.46875 0 2.421875 1.1875l0 -1.0l1.296875 0l0 7.1718826q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.109375 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.9843826q0 1.6250076 0.640625 2.3750076q0.65625 0.75 1.625 0.75q0.96875 0 1.625 -0.734375q0.65625 -0.75 0.65625 -2.3437576q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.625 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625zm13.4296875 4.2968826l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.1406326l1.40625 0l0 4.5937576q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.6250076l0 -4.4375l1.40625 0l0 8.296883l-1.25 0zm3.4453125 0l0 -8.296883l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.3437576l-1.40625 0zm10.75 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.5156326 0.71875 -0.8125076q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.8750076q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.1406326q-0.765625 0.3125 -2.296875 0.5312576q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.5156326zm6.6640625 2.9062576l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.7656326l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.8437576q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578133l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm3.0234375 -4.1562576q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.5937576 -0.484375 2.5156326q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.2343826zm1.453125 0q0 1.5937576 0.6875 2.3906326q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375076q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.1562576l0 -8.296883l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.1093826l-1.40625 0l0 -5.0468826q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.5312576l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m260.012 117.25883l0 0l0 18.398445l0 0l0 -18.398445z" fill-rule="nonzero"/><path fill="#000099" d="m149.72293 132.7832l110.28906 0l0 1.4400024l-110.28906 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1276489334661&sa=D&source=editors&ust=1638577908304000&usg=AOvVaw3CQEuqYuDzyQl981I5Lpea" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m184.41043 97.3832l113.82031 0l0 19.199997l-113.82031 0l0 -19.199997z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1276489334661&sa=D&source=editors&ust=1638577908304000&usg=AOvVaw3CQEuqYuDzyQl981I5Lpea" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m149.72293 116.3832l110.28906 0l0 19.200005l-110.28906 0l0 -19.200005z" fill-rule="nonzero"/></a><path fill="#8e7cc3" d="m577.72833 88.39895l202.45673 0l0 59.685036l-202.45673 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m577.72833 88.39895l202.45673 0l0 59.685036l-202.45673 0z" fill-rule="evenodd"/><path fill="#000000" d="m621.06213 112.75895l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m683.8434 98.274574l54.242188 0l0 18.398438l-54.242188 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m693.24963 108.743324l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm8.8828125 1.34375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8046875 4.953125l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5546875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm3.4296875 0l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m738.0856 98.274574l0 0l0 18.398438l0 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m683.8434 113.79895l54.242188 0l0 1.4400024l-54.242188 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/2023123091425&sa=D&source=editors&ust=1638577908306000&usg=AOvVaw1B90wrwL6E-cNU_NeS7ZZt" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m683.8434 97.39895l54.242188 0l0 19.200005l-54.242188 0l0 -19.200005z" fill-rule="nonzero"/></a><path fill="#dd7e6b" d="m814.77295 88.39772l202.45673 0l0 59.685043l-202.45673 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m814.77295 88.39772l202.45673 0l0 59.685043l-202.45673 0z" fill-rule="evenodd"/><path fill="#000000" d="m867.01306 112.75772l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m934.2396 98.273346l31.984375 0l0 18.398438l-31.984375 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m937.474 112.75772l-3.03125 -11.453125l1.546875 0l1.75 7.5q0.28125 1.1875 0.484375 2.34375q0.4375 -1.828125 0.515625 -2.109375l2.171875 -7.734375l1.828125 0l1.640625 5.796875q0.625 2.15625 0.890625 4.046875q0.21875 -1.078125 0.578125 -2.484375l1.796875 -7.359375l1.515625 0l-3.140625 11.453125l-1.453125 0l-2.421875 -8.734375q-0.296875 -1.09375 -0.359375 -1.34375q-0.171875 0.796875 -0.328125 1.34375l-2.4375 8.734375l-1.546875 0zm12.9296875 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.8046875 0l0 -11.453125l7.734375 0l0 1.34375l-6.21875 0l0 3.546875l5.375 0l0 1.359375l-5.375 0l0 5.203125l-1.515625 0zm9.5234375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m966.224 98.273346l0 0l0 18.398438l0 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m934.2396 113.79772l31.984375 0l0 1.4400024l-31.984375 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1289555489305&sa=D&source=editors&ust=1638577908311000&usg=AOvVaw2R2RLBoNRt8I4DHkmJ1RXI" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m934.2396 97.39772l31.984375 0l0 19.199997l-31.984375 0l0 -19.199997z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m340.68372 88.39772l202.45673 0l0 59.685043l-202.45673 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m340.68372 88.39772l202.45673 0l0 59.685043l-202.45673 0z" fill-rule="evenodd"/><path fill="#000000" d="m368.90036 112.75772l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m436.12692 98.273346l80.03122 0l0 18.398438l-80.03122 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m437.34567 112.75772l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm17.070312 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0zm8.0 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.5546875 0l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.6328125 0.6875l1.375 0.203125q0.078125 0.640625 0.46875 0.921875q0.53125 0.390625 1.4375 0.390625q0.9687195 0 1.4999695 -0.390625q0.53125 -0.390625 0.71875 -1.09375q0.109375 -0.421875 0.109375 -1.8125q-0.921875 1.09375 -2.2968445 1.09375q-1.71875 0 -2.65625 -1.234375q-0.9375 -1.234375 -0.9375 -2.96875q0 -1.1875 0.421875 -2.1875q0.4375 -1.0 1.25 -1.546875q0.828125 -0.546875 1.921875 -0.546875q1.4687195 0 2.4218445 1.1875l0 -1.0l1.296875 0l0 7.171875q0 1.9375 -0.390625 2.75q-0.390625 0.8125 -1.25 1.28125q-0.859375 0.46875 -2.1093445 0.46875q-1.484375 0 -2.40625 -0.671875q-0.90625 -0.671875 -0.875 -2.015625zm1.171875 -4.984375q0 1.625 0.640625 2.375q0.65625 0.75 1.625 0.75q0.9687195 0 1.6249695 -0.734375q0.65625 -0.75 0.65625 -2.34375q0 -1.53125 -0.671875 -2.296875q-0.671875 -0.78125 -1.6249695 -0.78125q-0.9375 0 -1.59375 0.765625q-0.65625 0.765625 -0.65625 2.265625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m516.15814 98.273346l0 0l0 18.398438l0 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m436.12692 113.79772l80.03122 0l0 1.4400024l-80.03122 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1312179520755&sa=D&source=editors&ust=1638577908313000&usg=AOvVaw2XNWv69vMsQ5ecM0WJA1bT" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m436.12692 97.39772l80.03122 0l0 19.199997l-80.03122 0l0 -19.199997z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m443.3176 1015.5171l128.40945 0l0 37.57483l-128.40945 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m443.3176 1015.5171l128.40945 0l0 37.57483l-128.40945 0z" fill-rule="evenodd"/><path fill="#000000" d="m472.3561 1036.3807q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297577 8.546875l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.516357 1.671875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.141327 5.765625l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm13.063202 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 3.703125l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.891357 4.78125l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0z" fill-rule="nonzero"/><path fill="#6d9eeb" d="m340.91208 728.53687l0 0c0 -4.1400146 3.3561707 -7.496155 7.496216 -7.496155l63.117798 0c1.9881287 0 3.894806 0.7897339 5.3006287 2.1955566c1.4058228 1.4058228 2.1955872 3.3125 2.1955872 5.300598l0 29.984009c0 4.1400146 -3.3561707 7.496216 -7.496216 7.496216l-63.117798 0c-4.140045 0 -7.496216 -3.3562012 -7.496216 -7.496216z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m340.91208 728.53687l0 0c0 -4.1400146 3.3561707 -7.496155 7.496216 -7.496155l63.117798 0c1.9881287 0 3.894806 0.7897339 5.3006287 2.1955566c1.4058228 1.4058228 2.1955872 3.3125 2.1955872 5.300598l0 29.984009c0 4.1400146 -3.3561707 7.496216 -7.496216 7.496216l-63.117798 0c-4.140045 0 -7.496216 -3.3562012 -7.496216 -7.496216z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m357.6342 730.1856l44.666016 0l0 13.798828l-44.666016 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m358.68106 741.0489l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0527344 0l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm2.6972656 -7.375l0 -1.21875l1.0625 0l0 1.21875l-1.0625 0zm0 7.375l0 -6.21875l1.0625 0l0 6.21875l-1.0625 0zm2.6660156 0l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm10.246094 0l0 -5.40625l-0.9375 0l0 -0.8125l0.9375 0l0 -0.671875q0 -0.625 0.109375 -0.921875q0.15625 -0.421875 0.53125 -0.671875q0.390625 -0.25 1.078125 -0.25q0.453125 0 0.984375 0.109375l-0.15625 0.90625q-0.328125 -0.046875 -0.625 -0.046875q-0.484375 0 -0.6875 0.203125q-0.1875 0.203125 -0.1875 0.765625l0 0.578125l1.21875 0l0 0.8125l-1.21875 0l0 5.40625l-1.046875 0zm3.0527344 0l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm6.7597656 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.7050781 3.125l0 -6.21875l0.9375 0l0 0.875q0.296875 -0.46875 0.78125 -0.734375q0.484375 -0.28125 1.109375 -0.28125q0.6875 0 1.125 0.28125q0.453125 0.28125 0.625 0.796875q0.75 -1.078125 1.921875 -1.078125q0.9375 0 1.421875 0.515625q0.5 0.5 0.5 1.578125l0 4.265625l-1.046875 0l0 -3.921875q0 -0.625 -0.109375 -0.90625q-0.09375 -0.28125 -0.359375 -0.453125q-0.265625 -0.171875 -0.640625 -0.171875q-0.65625 0 -1.09375 0.4375q-0.421875 0.4375 -0.421875 1.40625l0 3.609375l-1.0625 0l0 -4.046875q0 -0.703125 -0.265625 -1.046875q-0.25 -0.359375 -0.828125 -0.359375q-0.453125 0 -0.828125 0.234375q-0.375 0.234375 -0.546875 0.6875q-0.171875 0.453125 -0.171875 1.296875l0 3.234375l-1.046875 0zm10.292969 0l0 -1.203125l1.203125 0l0 1.203125l-1.203125 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m402.3002 730.1856l0 0l0 13.798828l0 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m357.6342 741.82886l44.666016 0l0 1.0800171l-44.666016 0l0 -1.0800171z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m356.28653 744.1856l47.36133 0l0 13.798828l-47.36133 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m357.17715 755.0489l0 -8.59375l1.71875 0l2.03125 6.078125q0.28125 0.859375 0.40625 1.28125q0.140625 -0.46875 0.453125 -1.375l2.0625 -5.984375l1.53125 0l0 8.59375l-1.09375 0l0 -7.1875l-2.5 7.1875l-1.03125 0l-2.484375 -7.3125l0 7.3125l-1.09375 0zm13.964844 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.7050781 3.125l0 -6.21875l0.9375 0l0 0.875q0.6875 -1.015625 1.984375 -1.015625q0.5625 0 1.03125 0.203125q0.484375 0.203125 0.71875 0.53125q0.234375 0.328125 0.328125 0.765625q0.046875 0.296875 0.046875 1.03125l0 3.828125l-1.046875 0l0 -3.78125q0 -0.65625 -0.125 -0.96875q-0.125 -0.3125 -0.4375 -0.5q-0.3125 -0.203125 -0.734375 -0.203125q-0.671875 0 -1.171875 0.4375q-0.484375 0.421875 -0.484375 1.609375l0 3.40625l-1.046875 0zm10.736328 -0.765625q-0.59375 0.5 -1.140625 0.703125q-0.53125 0.203125 -1.15625 0.203125q-1.03125 0 -1.578125 -0.5q-0.546875 -0.5 -0.546875 -1.28125q0 -0.453125 0.203125 -0.828125q0.203125 -0.390625 0.546875 -0.609375q0.34375 -0.234375 0.765625 -0.34375q0.296875 -0.09375 0.9375 -0.171875q1.265625 -0.140625 1.875 -0.359375q0 -0.21875 0 -0.265625q0 -0.65625 -0.296875 -0.921875q-0.40625 -0.34375 -1.203125 -0.34375q-0.734375 0 -1.09375 0.265625q-0.359375 0.25 -0.53125 0.90625l-1.03125 -0.140625q0.140625 -0.65625 0.46875 -1.0625q0.328125 -0.40625 0.9375 -0.625q0.609375 -0.21875 1.40625 -0.21875q0.796875 0 1.296875 0.1875q0.5 0.1875 0.734375 0.46875q0.234375 0.28125 0.328125 0.71875q0.046875 0.265625 0.046875 0.96875l0 1.40625q0 1.46875 0.0625 1.859375q0.078125 0.390625 0.28125 0.75l-1.109375 0q-0.15625 -0.328125 -0.203125 -0.765625zm-0.09375 -2.359375q-0.578125 0.234375 -1.71875 0.40625q-0.65625 0.09375 -0.921875 0.21875q-0.265625 0.109375 -0.421875 0.328125q-0.140625 0.21875 -0.140625 0.5q0 0.421875 0.3125 0.703125q0.328125 0.28125 0.9375 0.28125q0.609375 0 1.078125 -0.265625q0.484375 -0.265625 0.703125 -0.734375q0.171875 -0.359375 0.171875 -1.046875l0 -0.390625zm2.5019531 3.640625l1.03125 0.15625q0.0625 0.46875 0.359375 0.6875q0.390625 0.296875 1.0625 0.296875q0.734375 0 1.125 -0.296875q0.40625 -0.296875 0.546875 -0.8125q0.09375 -0.328125 0.078125 -1.359375q-0.6875 0.8125 -1.71875 0.8125q-1.28125 0 -1.984375 -0.921875q-0.703125 -0.9375 -0.703125 -2.21875q0 -0.890625 0.3125 -1.640625q0.328125 -0.765625 0.9375 -1.171875q0.609375 -0.40625 1.4375 -0.40625q1.109375 0 1.828125 0.890625l0 -0.75l0.96875 0l0 5.375q0 1.453125 -0.296875 2.0625q-0.296875 0.609375 -0.9375 0.953125q-0.640625 0.359375 -1.578125 0.359375q-1.109375 0 -1.796875 -0.5q-0.6875 -0.5 -0.671875 -1.515625zm0.875 -3.734375q0 1.21875 0.484375 1.78125q0.484375 0.5625 1.21875 0.5625q0.734375 0 1.21875 -0.5625q0.5 -0.5625 0.5 -1.75q0 -1.140625 -0.515625 -1.71875q-0.5 -0.578125 -1.21875 -0.578125q-0.703125 0 -1.203125 0.578125q-0.484375 0.5625 -0.484375 1.6875zm10.251953 1.21875l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm5.861328 3.703125l0 -6.21875l0.953125 0l0 0.9375q0.359375 -0.65625 0.65625 -0.859375q0.3125 -0.21875 0.6875 -0.21875q0.53125 0 1.078125 0.328125l-0.359375 0.984375q-0.390625 -0.234375 -0.765625 -0.234375q-0.359375 0 -0.640625 0.21875q-0.265625 0.203125 -0.375 0.578125q-0.1875 0.5625 -0.1875 1.21875l0 3.265625l-1.046875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m403.64786 744.1856l0 0l0 13.798828l0 0l0 -13.798828z" fill-rule="nonzero"/><path fill="#000099" d="m356.28653 755.82886l47.36133 0l0 1.0800171l-47.36133 0l0 -1.0800171z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/doc/manager-api.txt?q%3Dmanager-api.txt%26sq%3Dpackage:chromeos_public&sa=D&source=editors&ust=1638577908318000&usg=AOvVaw3ha3kAeFKoB6MsRUbQVgoe" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m357.6342 729.5289l44.666016 0l0 14.400024l-44.666016 0l0 -14.400024z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/doc/manager-api.txt?q%3Dmanager-api.txt%26sq%3Dpackage:chromeos_public&sa=D&source=editors&ust=1638577908318000&usg=AOvVaw3ha3kAeFKoB6MsRUbQVgoe" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m356.28653 743.5289l47.36133 0l0 14.400024l-47.36133 0l0 -14.400024z" fill-rule="nonzero"/></a><path fill="#000000" fill-opacity="0.0" d="m0.0026238845 -0.0131233595l1931.8425 0l0 70.89764l-1931.8425 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m0.0026238845 -0.0131233595l1931.8425 0l0 70.89764l-1931.8425 0z" fill-rule="evenodd"/><path fill="#000000" d="m627.89264 25.714378l3.375 1.0625q-0.78125 2.8125 -2.578125 4.1875q-1.796875 1.359375 -4.5625 1.359375q-3.421875 0 -5.625 -2.34375q-2.203125 -2.34375 -2.203125 -6.390625q0 -4.296875 2.203125 -6.65625q2.21875 -2.375001 5.828125 -2.375001q3.15625 0 5.125 1.859376q1.171875 1.09375 1.765625 3.15625l-3.4375 0.828125q-0.3125 -1.34375 -1.28125 -2.109375q-0.953125 -0.78125 -2.34375 -0.78125q-1.90625 0 -3.09375 1.375q-1.1875 1.375 -1.1875 4.4375q0 3.265625 1.171875 4.65625q1.171875 1.375 3.046875 1.375q1.375 0 2.375 -0.875q1.0 -0.890625 1.421875 -2.765625zm9.597656 -10.875001l0 6.328126q1.59375 -1.875 3.8125 -1.875q1.140625 0 2.046875 0.421875q0.921875 0.421875 1.375 1.078125q0.46875 0.65625 0.640625 1.453125q0.171875 0.796875 0.171875 2.484375l0 7.296875l-3.296875 0l0 -6.578125q0 -1.953125 -0.1875 -2.484375q-0.1875 -0.53125 -0.671875 -0.828125q-0.46875 -0.3125 -1.171875 -0.3125q-0.828125 0 -1.46875 0.40625q-0.640625 0.390625 -0.953125 1.1875q-0.296875 0.796875 -0.296875 2.375l0 6.234375l-3.28125 0l0 -17.1875l3.28125 0zm14.535156 17.1875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.4335938 -6.40625q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm11.800781 -6.234375l3.03125 0l0 1.703125q1.625 -1.984375 3.875 -1.984375q1.203125 0 2.078125 0.5q0.875 0.484375 1.4375 1.484375q0.828125 -1.0 1.765625 -1.484375q0.953125 -0.5 2.03125 -0.5q1.375 0 2.3125 0.5625q0.953125 0.5625 1.421875 1.640625q0.34375 0.796875 0.34375 2.578125l0 7.953125l-3.296875 0l0 -7.109375q0 -1.859375 -0.328125 -2.390625q-0.46875 -0.703125 -1.40625 -0.703125q-0.703125 0 -1.3125 0.421875q-0.609375 0.421875 -0.875 1.234375q-0.265625 0.8125 -0.265625 2.5625l0 5.984375l-3.296875 0l0 -6.828125q0 -1.8125 -0.171875 -2.328125q-0.171875 -0.53125 -0.546875 -0.78125q-0.375 -0.265625 -1.0 -0.265625q-0.765625 0 -1.375 0.40625q-0.609375 0.40625 -0.875 1.1875q-0.265625 0.765625 -0.265625 2.5625l0 6.046875l-3.28125 0l0 -12.453125zm28.792969 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm11.9375 -1.1875q0 -2.625 0.78125 -4.40625q0.59375 -1.3125 1.59375 -2.359375q1.015625 -1.046876 2.234375 -1.546876q1.59375 -0.671875 3.703125 -0.671875q3.796875 0 6.0625 2.359376q2.28125 2.34375 2.28125 6.546875q0 4.15625 -2.265625 6.515625q-2.25 2.34375 -6.03125 2.34375q-3.84375 0 -6.109375 -2.34375q-2.25 -2.34375 -2.25 -6.4375zm3.578125 -0.125q0 2.921875 1.34375 4.4375q1.34375 1.5 3.421875 1.5q2.078125 0 3.40625 -1.484375q1.328125 -1.5 1.328125 -4.5q0 -2.953125 -1.296875 -4.40625q-1.296875 -1.453125 -3.4375 -1.453125q-2.140625 0 -3.453125 1.484375q-1.3125 1.46875 -1.3125 4.421875zm14.917969 3.015625l3.375 -0.328125q0.296875 1.703125 1.21875 2.5q0.9375 0.796875 2.53125 0.796875q1.671875 0 2.515625 -0.703125q0.859375 -0.71875 0.859375 -1.671875q0 -0.609375 -0.359375 -1.03125q-0.359375 -0.421875 -1.25 -0.75q-0.609375 -0.203125 -2.78125 -0.75q-2.78125 -0.6875 -3.90625 -1.6875q-1.59375 -1.421875 -1.59375 -3.46875q0 -1.3125 0.75 -2.453125q0.75 -1.140626 2.140625 -1.734376q1.40625 -0.59375 3.390625 -0.59375q3.234375 0 4.859375 1.421875q1.640625 1.406251 1.71875 3.781251l-3.46875 0.140625q-0.21875 -1.3125 -0.953125 -1.890625q-0.734375 -0.59375 -2.203125 -0.59375q-1.5 0 -2.359375 0.625q-0.546875 0.40625 -0.546875 1.0625q0 0.609375 0.515625 1.046875q0.65625 0.546875 3.1875 1.15625q2.53125 0.59375 3.734375 1.234375q1.21875 0.640625 1.90625 1.75q0.6875 1.09375 0.6875 2.734375q0 1.46875 -0.828125 2.765625q-0.8125 1.28125 -2.3125 1.921875q-1.5 0.625 -3.75 0.625q-3.25 0 -5.0 -1.5q-1.75 -1.515625 -2.078125 -4.40625zm34.535156 -0.71875l3.375 1.0625q-0.78125 2.8125 -2.578125 4.1875q-1.796875 1.359375 -4.5625 1.359375q-3.421875 0 -5.625 -2.34375q-2.203125 -2.34375 -2.203125 -6.390625q0 -4.296875 2.203125 -6.65625q2.21875 -2.375001 5.828125 -2.375001q3.15625 0 5.125 1.859376q1.171875 1.09375 1.765625 3.15625l-3.4375 0.828125q-0.3125 -1.34375 -1.28125 -2.109375q-0.953125 -0.78125 -2.34375 -0.78125q-1.90625 0 -3.09375 1.375q-1.1875 1.375 -1.1875 4.4375q0 3.265625 1.171875 4.65625q1.171875 1.375 3.046875 1.375q1.375 0 2.375 -0.875q1.0 -0.890625 1.421875 -2.765625zm5.5664062 -0.09375q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm23.363281 6.21875l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm14.660156 0l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm10.550781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm16.800781 -1.46875l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm8.207031 -3.6875l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921876l0 4.390626l2.25 0zm2.2734375 -1.6875l0 -3.046876l3.296875 0l0 3.046876l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm10.089844 0l-5.015625 -12.453125l3.46875 0l2.34375 6.359375l0.671875 2.125q0.265625 -0.8125 0.34375 -1.078125q0.15625 -0.515625 0.34375 -1.046875l2.375 -6.359375l3.390625 0l-4.953125 12.453125l-2.96875 0zm9.925781 -14.140625l0 -3.046876l3.296875 0l0 3.046876l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm12.386719 -12.453125l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921876l0 4.390626l2.25 0zm0.7265625 0l3.5 0l2.96875 8.84375l2.90625 -8.84375l3.421875 0l-4.40625 11.984375l-0.78125 2.171875q-0.4375 1.09375 -0.828125 1.65625q-0.390625 0.578125 -0.90625 0.9375q-0.5 0.359375 -1.25 0.546875q-0.734375 0.203125 -1.671875 0.203125q-0.953125 0 -1.875 -0.1875l-0.28125 -2.578125q0.765625 0.140625 1.390625 0.140625q1.140625 0 1.6875 -0.671875q0.5625 -0.671875 0.859375 -1.71875l-4.734375 -12.484375zm21.6875 12.453125l0 -17.046875l3.46875 0l0 14.156251l8.625 0l0 2.890625l-12.09375 0zm17.003906 -8.65625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm4.9257812 -6.46875l3.5 0l2.96875 8.84375l2.90625 -8.84375l3.421875 0l-4.40625 11.984375l-0.78125 2.171875q-0.4375 1.09375 -0.828125 1.65625q-0.390625 0.578125 -0.90625 0.9375q-0.5 0.359375 -1.25 0.546875q-0.734375 0.203125 -1.671875 0.203125q-0.953125 0 -1.875 -0.1875l-0.28125 -2.578125q0.765625 0.140625 1.390625 0.140625q1.140625 0 1.6875 -0.671875q0.5625 -0.671875 0.859375 -1.71875l-4.734375 -12.484375zm22.113281 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm9.097656 7.296875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.0273438 -3.546875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875zm26.640625 8.59375l-2.265625 0q-1.796875 -2.703125 -2.734375 -5.625q-0.9375 -2.921875 -0.9375 -5.640625q0 -3.390625 1.171875 -6.421875q1.0 -2.625 2.546875 -4.828126l2.25 0q-1.609375 3.546876 -2.21875 6.046876q-0.59375 2.484375 -0.59375 5.265625q0 1.921875 0.359375 3.9375q0.359375 2.015625 0.984375 3.84375q0.40625 1.1875 1.4375 3.421875z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m996.59186 10.300315l312.1054 0l0 27.597656l-312.1054 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m998.01373 32.855003l3.765625 0.453125q0.09375 0.65625 0.421875 0.90625q0.46875 0.34375 1.484375 0.34375q1.28125 0 1.9375 -0.390625q0.421875 -0.25 0.65625 -0.828125q0.140625 -0.40625 0.140625 -1.515625l0 -1.8125q-1.46875 2.015625 -3.71875 2.015625q-2.515625 0 -3.96875 -2.125q-1.15625 -1.671875 -1.15625 -4.171875q0 -3.125 1.5 -4.78125q1.515625 -1.65625 3.75 -1.65625q2.3125 0 3.8125 2.03125l0 -1.75l3.078125 0l0 11.171875q0 2.203125 -0.359375 3.296875q-0.359375 1.09375 -1.015625 1.703125q-0.65625 0.625 -1.765625 0.96875q-1.09375 0.359375 -2.765625 0.359375q-3.15625 0 -4.484375 -1.078125q-1.328125 -1.078125 -1.328125 -2.75q0 -0.15625 0.015625 -0.390625zm2.9375 -7.3125q0 1.984375 0.765625 2.90625q0.765625 0.921875 1.890625 0.921875q1.21875 0 2.046875 -0.9375q0.828125 -0.953125 0.828125 -2.8125q0 -1.921875 -0.796875 -2.859375q-0.796875 -0.9375 -2.015625 -0.9375q-1.1875 0 -1.953125 0.921875q-0.765625 0.90625 -0.765625 2.796875zm11.269531 0.078125q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.812439 1.828125 1.812439 4.625q0 2.828125 -1.828064 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm10.285095 6.515625l4.25 -17.765625l2.46875 0l-4.296875 17.765625l-2.421875 0zm19.277344 -9.0625l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm5.6445312 8.765625l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.4335938 -6.40625q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm10.878906 2.671875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875zm14.144531 -1.03125l0 -3.296875l6.46875 0l0 3.296875l-6.46875 0zm19.210938 -4.1875l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm1.7382812 2.359375q0 -1.640625 0.796875 -3.171875q0.8125 -1.53125 2.296875 -2.34375q1.484375 -0.8125 3.3125 -0.8125q2.828125 0 4.625 1.84375q1.8125 1.828125 1.8125 4.625q0 2.828125 -1.828125 4.6875q-1.828125 1.859375 -4.59375 1.859375q-1.703125 0 -3.265625 -0.765625q-1.546875 -0.78125 -2.359375 -2.265625q-0.796875 -1.5 -0.796875 -3.65625zm3.375 0.1875q0 1.84375 0.875 2.828125q0.875 0.984375 2.171875 0.984375q1.28125 0 2.15625 -0.984375q0.875 -0.984375 0.875 -2.859375q0 -1.828125 -0.875 -2.8125q-0.875 -0.984375 -2.15625 -0.984375q-1.296875 0 -2.171875 0.984375q-0.875 0.984375 -0.875 2.84375zm23.363281 6.21875l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm14.660156 0l-3.296875 0l0 -6.359375q0 -2.015625 -0.21875 -2.59375q-0.203125 -0.59375 -0.6875 -0.921875q-0.46875 -0.328125 -1.125 -0.328125q-0.859375 0 -1.546875 0.46875q-0.671875 0.46875 -0.921875 1.25q-0.25 0.765625 -0.25 2.84375l0 5.640625l-3.296875 0l0 -12.453125l3.0625 0l0 1.828125q1.625 -2.109375 4.09375 -2.109375q1.09375 0 1.984375 0.40625q0.90625 0.390625 1.375 1.0q0.46875 0.609375 0.640625 1.390625q0.1875 0.765625 0.1875 2.203125l0 7.734375zm10.550781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm16.800781 -1.46875l-3.25 0.578125q-0.15625 -0.96875 -0.75 -1.453125q-0.578125 -0.5 -1.5 -0.5q-1.234375 0 -1.96875 0.859375q-0.71875 0.84375 -0.71875 2.828125q0 2.21875 0.734375 3.140625q0.75 0.90625 2.0 0.90625q0.9375 0 1.53125 -0.53125q0.609375 -0.53125 0.84375 -1.828125l3.234375 0.546875q-0.5 2.21875 -1.9375 3.359375q-1.421875 1.140625 -3.828125 1.140625q-2.71875 0 -4.34375 -1.71875q-1.625 -1.734375 -1.625 -4.78125q0 -3.078125 1.625 -4.796875q1.625 -1.71875 4.40625 -1.71875q2.28125 0 3.609375 0.984375q1.34375 0.984375 1.9375 2.984375zm8.207031 -3.6875l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921876l0 4.390626l2.25 0zm2.2734375 -1.6875l0 -3.046876l3.296875 0l0 3.046876l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm10.089844 0l-5.015625 -12.453125l3.46875 0l2.34375 6.359375l0.671875 2.125q0.265625 -0.8125 0.34375 -1.078125q0.15625 -0.515625 0.34375 -1.046875l2.375 -6.359375l3.390625 0l-4.953125 12.453125l-2.96875 0zm9.925781 -14.140625l0 -3.046876l3.296875 0l0 3.046876l-3.296875 0zm0 14.140625l0 -12.453125l3.296875 0l0 12.453125l-3.296875 0zm12.386719 -12.453125l0 2.625l-2.25 0l0 5.015625q0 1.53125 0.0625 1.78125q0.0625 0.25 0.28125 0.421875q0.234375 0.15625 0.5625 0.15625q0.453125 0 1.328125 -0.3125l0.28125 2.546875q-1.15625 0.5 -2.609375 0.5q-0.890625 0 -1.609375 -0.296875q-0.703125 -0.296875 -1.046875 -0.765625q-0.328125 -0.484375 -0.453125 -1.296875q-0.109375 -0.578125 -0.109375 -2.3125l0 -5.4375l-1.515625 0l0 -2.625l1.515625 0l0 -2.46875l3.3125 -1.921876l0 4.390626l2.25 0zm0.7265625 0l3.5 0l2.96875 8.84375l2.90625 -8.84375l3.421875 0l-4.40625 11.984375l-0.78125 2.171875q-0.4375 1.09375 -0.828125 1.65625q-0.390625 0.578125 -0.90625 0.9375q-0.5 0.359375 -1.25 0.546875q-0.734375 0.203125 -1.671875 0.203125q-0.953125 0 -1.875 -0.1875l-0.28125 -2.578125q0.765625 0.140625 1.390625 0.140625q1.140625 0 1.6875 -0.671875q0.5625 -0.671875 0.859375 -1.71875l-4.734375 -12.484375zm14.535156 7.875l0 -3.296875l6.46875 0l0 3.296875l-6.46875 0zm8.3515625 4.578125l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm9.136719 -8.65625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm4.9257812 -6.46875l3.5 0l2.96875 8.84375l2.90625 -8.84375l3.421875 0l-4.40625 11.984375l-0.78125 2.171875q-0.4375 1.09375 -0.828125 1.65625q-0.390625 0.578125 -0.90625 0.9375q-0.5 0.359375 -1.25 0.546875q-0.734375 0.203125 -1.671875 0.203125q-0.953125 0 -1.875 -0.1875l-0.28125 -2.578125q0.765625 0.140625 1.390625 0.140625q1.140625 0 1.6875 -0.671875q0.5625 -0.671875 0.859375 -1.71875l-4.734375 -12.484375zm22.113281 8.484375l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm9.097656 7.296875l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm5.0273438 -3.546875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875z" fill-rule="nonzero"/><path fill="#000000" d="m1309.5098 37.073753q0.96875 -2.078125 1.359375 -3.203125q0.40625 -1.109375 0.75 -2.5625q0.34375 -1.453125 0.5 -2.75q0.171875 -1.3125 0.171875 -2.6875q0 -2.78125 -0.609375 -5.265625q-0.59375 -2.5 -2.203125 -6.046876l2.25 0q1.765625 2.515626 2.734375 5.343751q0.984375 2.8125 0.984375 5.71875q0 2.453125 -0.765625 5.25q-0.890625 3.15625 -2.90625 6.203125l-2.265625 0z" fill-rule="nonzero"/><path fill="#000099" d="m996.59186 33.586876l312.1054 0l0 2.1599998l-312.1054 0l0 -2.1599998z" fill-rule="nonzero"/><path fill="#000000" d="m118.89459 52.65188q0 -4.265625 2.296875 -6.6875q2.296875 -2.421875 5.9375 -2.421875q2.375 0 4.28125 1.140625q1.921875 1.125 2.921875 3.171875q1.0 2.03125 1.0 4.609375q0 2.609375 -1.0625 4.671875q-1.046875 2.0625 -2.984375 3.125q-1.9375 1.0625 -4.171875 1.0625q-2.421875 0 -4.34375 -1.171875q-1.90625 -1.171875 -2.890625 -3.203125q-0.984375 -2.03125 -0.984375 -4.296875zm2.34375 0.046875q0 3.09375 1.671875 4.890625q1.671875 1.78125 4.1875 1.78125q2.578125 0 4.234375 -1.796875q1.65625 -1.8125 1.65625 -5.125q0 -2.09375 -0.71875 -3.65625q-0.703125 -1.578125 -2.078125 -2.4375q-1.359375 -0.859375 -3.046875 -0.859375q-2.421875 0 -4.171875 1.65625q-1.734375 1.65625 -1.734375 5.546875zm24.902344 8.328125l0 -1.828125q-1.453125 2.109375 -3.9375 2.109375q-1.109375 0 -2.0625 -0.421875q-0.953125 -0.421875 -1.421875 -1.0625q-0.453125 -0.640625 -0.640625 -1.5625q-0.140625 -0.625 -0.140625 -1.96875l0 -7.71875l2.109375 0l0 6.90625q0 1.65625 0.140625 2.234375q0.1875 0.828125 0.828125 1.3125q0.65625 0.46875 1.609375 0.46875q0.9375 0 1.765625 -0.484375q0.84375 -0.5 1.1875 -1.328125q0.34375 -0.84375 0.34375 -2.4375l0 -6.671875l2.109375 0l0 12.453125l-1.890625 0zm9.800781 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm2.0117188 1.890625l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm5.3945312 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm21.878906 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm17.640625 1.203125q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm12.472656 6.21875l0 -10.8125l-1.875 0l0 -1.640625l1.875 0l0 -1.3125q0 -1.265625 0.21875 -1.875q0.296875 -0.8125 1.0625 -1.3125q0.78125 -0.515625 2.15625 -0.515625q0.890625 0 1.96875 0.203125l-0.3125 1.84375q-0.65625 -0.125 -1.25 -0.125q-0.953125 0 -1.359375 0.421875q-0.390625 0.40625 -0.390625 1.53125l0 1.140625l2.421875 0l0 1.640625l-2.421875 0l0 10.8125l-2.09375 0zm12.8203125 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm21.878906 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm16.363281 5.53125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm4.3554688 1.890625l-3.796875 -12.453125l2.171875 0l1.984375 7.1875l0.734375 2.671875q0.046875 -0.203125 0.640625 -2.5625l1.984375 -7.296875l2.171875 0l1.859375 7.21875l0.625 2.390625l0.71875 -2.40625l2.125 -7.203125l2.046875 0l-3.890625 12.453125l-2.1875 0l-1.984375 -7.453125l-0.46875 -2.125l-2.53125 9.578125l-2.203125 0zm14.253906 -6.21875q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.941406 6.21875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm8.0234375 0l0 -17.1875l2.109375 0l0 9.796875l5.0 -5.0625l2.71875 0l-4.75 4.625l5.234375 7.828125l-2.59375 0l-4.125 -6.359375l-1.484375 1.421875l0 4.9375l-2.109375 0zm12.0 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm12.972656 1.03125l2.046875 0.3125q0.125 0.9375 0.71875 1.375q0.78125 0.59375 2.140625 0.59375q1.46875 0 2.265625 -0.59375q0.796875 -0.578125 1.078125 -1.640625q0.15625 -0.640625 0.140625 -2.703125q-1.375 1.625 -3.4375 1.625q-2.5625 0 -3.96875 -1.84375q-1.40625 -1.859375 -1.40625 -4.453125q0 -1.78125 0.640625 -3.28125q0.640625 -1.515625 1.859375 -2.328125q1.234375 -0.828125 2.890625 -0.828125q2.203125 0 3.625 1.78125l0 -1.5l1.953125 0l0 10.765625q0 2.90625 -0.59375 4.109375q-0.59375 1.21875 -1.875 1.921875q-1.28125 0.703125 -3.15625 0.703125q-2.234375 0 -3.609375 -1.0q-1.359375 -1.0 -1.3125 -3.015625zm1.734375 -7.484375q0 2.453125 0.96875 3.578125q0.984375 1.125 2.453125 1.125q1.453125 0 2.4375 -1.109375q0.984375 -1.125 0.984375 -3.515625q0 -2.28125 -1.015625 -3.4375q-1.015625 -1.171875 -2.453125 -1.171875q-1.40625 0 -2.390625 1.140625q-0.984375 1.140625 -0.984375 3.390625zm18.609375 6.453125l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm13.503906 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3007812 11.046875l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm20.625 -8.8125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm11.738281 7.421875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm7.1640625 -3.71875l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm18.730469 -2.5q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm32.546875 -6.03125l2.28125 0.578125q-0.71875 2.796875 -2.578125 4.28125q-1.859375 1.46875 -4.546875 1.46875q-2.765625 0 -4.515625 -1.125q-1.734375 -1.140625 -2.640625 -3.28125q-0.90625 -2.15625 -0.90625 -4.609375q0 -2.6875 1.015625 -4.6875q1.03125 -2.0 2.921875 -3.03125q1.890625 -1.03125 4.171875 -1.03125q2.578125 0 4.328125 1.3125q1.765625 1.3125 2.453125 3.6875l-2.234375 0.53125q-0.609375 -1.875 -1.75 -2.734375q-1.125 -0.859375 -2.84375 -0.859375q-1.984375 0 -3.3125 0.953125q-1.328125 0.953125 -1.875 2.546875q-0.53125 1.59375 -0.53125 3.296875q0 2.1875 0.625 3.828125q0.640625 1.640625 1.984375 2.453125q1.359375 0.796875 2.921875 0.796875q1.921875 0 3.234375 -1.09375q1.328125 -1.109375 1.796875 -3.28125zm4.8007812 6.03125l0 -17.1875l2.109375 0l0 6.171875q1.484375 -1.71875 3.734375 -1.71875q1.375 0 2.390625 0.546875q1.03125 0.546875 1.46875 1.515625q0.4375 0.953125 0.4375 2.78125l0 7.890625l-2.109375 0l0 -7.890625q0 -1.578125 -0.6875 -2.296875q-0.6875 -0.71875 -1.9375 -0.71875q-0.9375 0 -1.765625 0.484375q-0.828125 0.484375 -1.1875 1.3125q-0.34375 0.828125 -0.34375 2.296875l0 6.8125l-2.109375 0zm13.332031 0l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm7.2265625 -6.21875q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0zm28.523438 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm18.0 -0.953125q0 -4.265625 2.296875 -6.6875q2.296875 -2.421875 5.9375 -2.421875q2.375 0 4.28125 1.140625q1.921875 1.125 2.921875 3.171875q1.0 2.03125 1.0 4.609375q0 2.609375 -1.0625 4.671875q-1.046875 2.0625 -2.984375 3.125q-1.9375 1.0625 -4.171875 1.0625q-2.421875 0 -4.34375 -1.171875q-1.90625 -1.171875 -2.890625 -3.203125q-0.984375 -2.03125 -0.984375 -4.296875zm2.34375 0.046875q0 3.09375 1.671875 4.890625q1.671875 1.78125 4.1875 1.78125q2.578125 0 4.234375 -1.796875q1.65625 -1.8125 1.65625 -5.125q0 -2.09375 -0.71875 -3.65625q-0.703125 -1.578125 -2.078125 -2.4375q-1.359375 -0.859375 -3.046875 -0.859375q-2.421875 0 -4.171875 1.65625q-1.734375 1.65625 -1.734375 5.546875zm16.246094 2.8125l2.140625 -0.1875q0.15625 1.28125 0.703125 2.109375q0.5625 0.828125 1.734375 1.34375q1.171875 0.5 2.640625 0.5q1.296875 0 2.296875 -0.375q1.0 -0.390625 1.484375 -1.0625q0.484375 -0.6875 0.484375 -1.484375q0 -0.796875 -0.46875 -1.40625q-0.46875 -0.609375 -1.546875 -1.015625q-0.6875 -0.265625 -3.0625 -0.828125q-2.359375 -0.578125 -3.3125 -1.078125q-1.234375 -0.640625 -1.84375 -1.59375q-0.59375 -0.96875 -0.59375 -2.140625q0 -1.3125 0.734375 -2.4375q0.75 -1.125 2.15625 -1.703125q1.421875 -0.59375 3.15625 -0.59375q1.90625 0 3.359375 0.609375q1.46875 0.609375 2.25 1.8125q0.796875 1.1875 0.84375 2.703125l-2.171875 0.171875q-0.171875 -1.640625 -1.1875 -2.46875q-1.015625 -0.828125 -3.0 -0.828125q-2.0625 0 -3.015625 0.765625q-0.9375 0.75 -0.9375 1.8125q0 0.921875 0.671875 1.515625q0.65625 0.609375 3.421875 1.234375q2.78125 0.625 3.8125 1.09375q1.5 0.6875 2.203125 1.75q0.71875 1.0625 0.71875 2.4375q0 1.375 -0.78125 2.59375q-0.78125 1.203125 -2.25 1.890625q-1.46875 0.671875 -3.3125 0.671875q-2.328125 0 -3.90625 -0.671875q-1.578125 -0.6875 -2.484375 -2.046875q-0.890625 -1.375 -0.9375 -3.09375zm17.070312 5.515625l0 -2.40625l2.390625 0l0 2.40625q0 1.328125 -0.46875 2.140625q-0.46875 0.8125 -1.484375 1.265625l-0.578125 -0.90625q0.65625 -0.296875 0.96875 -0.875q0.328125 -0.5625 0.359375 -1.625l-1.1875 0zm20.898438 -4.5625l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm3.09375 -1.65625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.910156 6.21875l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm4.5976562 -6.21875q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.941406 6.21875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm22.800781 -4.5625l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm3.09375 -1.65625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm20.035156 6.21875l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375zm20.472656 2.203125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm19.832031 7.421875l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375zm20.5625 6.21875l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.332031 11.109375l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm26.886719 -6.328125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3945312 11.015625l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.425781 10.921875l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.410156 6.15625l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm7.2265625 -6.21875q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm10.550781 6.21875l4.546875 -6.46875l-4.203125 -5.984375l2.640625 0l1.90625 2.921875q0.546875 0.828125 0.875 1.390625q0.515625 -0.765625 0.9375 -1.359375l2.109375 -2.953125l2.515625 0l-4.296875 5.859375l4.625 6.59375l-2.59375 0l-2.546875 -3.875l-0.6875 -1.03125l-3.265625 4.90625l-2.5625 0zm13.421875 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0zm28.117188 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm10.003906 4.359375l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.589844 -2.125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm23.03125 5.53125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.589844 -2.125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm19.878906 5.890625q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3945312 6.25l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0zm26.644531 0l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm16.539062 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm10.910156 3.703125l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.84375 8.484375l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm10.644531 -0.0625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.124939 0 2.062439 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.87493896 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm12.503845 -3.71875l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.859375 -11.03125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm7.2695312 0l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.441406 -8.4375l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.2695312 0l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm5.3945312 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm9.925781 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm1.9648438 6.6875l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm17.183594 -4.5l4.984375 -17.765625l1.6875 0l-4.96875 17.765625l-1.703125 0zm14.9140625 4.46875l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.410156 6.15625l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm8.0234375 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.890625 0l0 1.75q0.59375 -0.90625 1.5625 -1.46875q0.96875 -0.5625 2.21875 -0.5625q1.375 0 2.25 0.578125q0.890625 0.578125 1.265625 1.609375q1.46875 -2.1875 3.84375 -2.1875q1.84375 0 2.84375 1.03125q1.0 1.03125 1.0 3.15625l0 8.546875l-2.109375 0l0 -7.84375q0 -1.265625 -0.203125 -1.8125q-0.203125 -0.5625 -0.75 -0.90625q-0.53125 -0.34375 -1.25 -0.34375q-1.3125 0 -2.1875 0.875q-0.859375 0.875 -0.859375 2.796875l0 7.234375l-2.109375 0l0 -8.09375q0 -1.40625 -0.515625 -2.109375q-0.515625 -0.703125 -1.6875 -0.703125q-0.890625 0 -1.65625 0.46875q-0.75 0.46875 -1.09375 1.375q-0.34375 0.90625 -0.34375 2.609375l0 6.453125l-2.109375 0zm28.117188 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3789062 6.25l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm7.9140625 4.796875l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm18.761719 -0.03125l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm10.644531 -0.0625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.972656 -8.53125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm17.957031 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm7.9453125 -4.328125q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm12.472656 6.21875l0 -10.8125l-1.875 0l0 -1.640625l1.875 0l0 -1.3125q0 -1.265625 0.21875 -1.875q0.296875 -0.8125 1.0625 -1.3125q0.78125 -0.515625 2.15625 -0.515625q0.890625 0 1.96875 0.203125l-0.3125 1.84375q-0.65625 -0.125 -1.25 -0.125q-0.953125 0 -1.359375 0.421875q-0.390625 0.40625 -0.390625 1.53125l0 1.140625l2.421875 0l0 1.640625l-2.421875 0l0 10.8125l-2.09375 0zm20.945312 -4.5625l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm3.09375 -1.65625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm17.957031 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.183594 0.359375q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm13.519531 1.6875l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm8.484375 2.671875l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm2.6679688 1.890625l0 -2.40625l2.390625 0l0 2.40625l-2.390625 0zm12.2265625 -5.515625l2.140625 -0.1875q0.15625 1.28125 0.703125 2.109375q0.5625 0.828125 1.734375 1.34375q1.171875 0.5 2.640625 0.5q1.296875 0 2.296875 -0.375q1.0 -0.390625 1.484375 -1.0625q0.484375 -0.6875 0.484375 -1.484375q0 -0.796875 -0.46875 -1.40625q-0.46875 -0.609375 -1.546875 -1.015625q-0.6875 -0.265625 -3.0625 -0.828125q-2.359375 -0.578125 -3.3125 -1.078125q-1.234375 -0.640625 -1.84375 -1.59375q-0.59375 -0.96875 -0.59375 -2.140625q0 -1.3125 0.734375 -2.4375q0.75 -1.125 2.15625 -1.703125q1.421875 -0.59375 3.15625 -0.59375q1.90625 0 3.359375 0.609375q1.46875 0.609375 2.25 1.8125q0.796875 1.1875 0.84375 2.703125l-2.171875 0.171875q-0.171875 -1.640625 -1.1875 -2.46875q-1.015625 -0.828125 -3.0 -0.828125q-2.0625 0 -3.015625 0.765625q-0.9375 0.75 -0.9375 1.8125q0 0.921875 0.671875 1.515625q0.65625 0.609375 3.421875 1.234375q2.78125 0.625 3.8125 1.09375q1.5 0.6875 2.203125 1.75q0.71875 1.0625 0.71875 2.4375q0 1.375 -0.78125 2.59375q-0.78125 1.203125 -2.25 1.890625q-1.46875 0.671875 -3.3125 0.671875q-2.328125 0 -3.90625 -0.671875q-1.578125 -0.6875 -2.484375 -2.046875q-0.890625 -1.375 -0.9375 -3.09375zm16.507812 10.28125l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm11.378906 6.15625l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm5.3945312 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm9.925781 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.6796875 1.890625l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm10.644531 0.09375q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm10.550781 6.21875l4.546875 -6.46875l-4.203125 -5.984375l2.640625 0l1.90625 2.921875q0.546875 0.828125 0.875 1.390625q0.515625 -0.765625 0.9375 -1.359375l2.109375 -2.953125l2.515625 0l-4.296875 5.859375l4.625 6.59375l-2.59375 0l-2.546875 -3.875l-0.6875 -1.03125l-3.265625 4.90625l-2.5625 0zm21.9375 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm10.910156 3.703125l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm19.527344 -11.03125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.3164062 0l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm21.425781 0l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375zm11.957031 -8.53125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm13.441406 -4.5625l2.078125 0.265625q-0.34375 2.15625 -1.75 3.375q-1.390625 1.203125 -3.4375 1.203125q-2.546875 0 -4.109375 -1.671875q-1.546875 -1.671875 -1.546875 -4.78125q0 -2.015625 0.671875 -3.53125q0.671875 -1.515625 2.03125 -2.265625q1.359375 -0.765625 2.96875 -0.765625q2.03125 0 3.3125 1.03125q1.296875 1.03125 1.65625 2.90625l-2.046875 0.328125q-0.296875 -1.265625 -1.046875 -1.890625q-0.734375 -0.640625 -1.796875 -0.640625q-1.59375 0 -2.59375 1.15625q-0.984375 1.140625 -0.984375 3.609375q0 2.5 0.953125 3.640625q0.96875 1.140625 2.515625 1.140625q1.234375 0 2.0625 -0.765625q0.84375 -0.765625 1.0625 -2.34375zm12.0 3.03125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm10.003906 4.359375l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm10.589844 -2.125l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm17.578125 3.703125l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.84375 3.71875l0 -17.1875l2.109375 0l0 6.171875q1.484375 -1.71875 3.734375 -1.71875q1.375 0 2.390625 0.546875q1.03125 0.546875 1.46875 1.515625q0.4375 0.953125 0.4375 2.78125l0 7.890625l-2.109375 0l0 -7.890625q0 -1.578125 -0.6875 -2.296875q-0.6875 -0.71875 -1.9375 -0.71875q-0.9375 0 -1.765625 0.484375q-0.828125 0.484375 -1.1875 1.3125q-0.34375 0.828125 -0.34375 2.296875l0 6.8125l-2.109375 0zm21.472656 -1.53125q-1.171875 0.984375 -2.265625 1.40625q-1.078125 0.40625 -2.3125 0.40625q-2.046875 0 -3.15625 -1.0q-1.09375 -1.0 -1.09375 -2.5625q0 -0.921875 0.40625 -1.671875q0.421875 -0.75 1.09375 -1.203125q0.671875 -0.46875 1.515625 -0.703125q0.625 -0.15625 1.875 -0.3125q2.5625 -0.3125 3.765625 -0.734375q0.015625 -0.421875 0.015625 -0.546875q0 -1.28125 -0.609375 -1.8125q-0.796875 -0.71875 -2.390625 -0.71875q-1.5 0 -2.203125 0.53125q-0.703125 0.515625 -1.046875 1.84375l-2.0625 -0.28125q0.28125 -1.328125 0.921875 -2.140625q0.640625 -0.8125 1.859375 -1.25q1.21875 -0.453125 2.828125 -0.453125q1.59375 0 2.59375 0.375q1.0 0.375 1.46875 0.953125q0.46875 0.5625 0.65625 1.4375q0.09375 0.53125 0.09375 1.9375l0 2.8125q0 2.9375 0.140625 3.71875q0.140625 0.78125 0.53125 1.5l-2.203125 0q-0.328125 -0.65625 -0.421875 -1.53125zm-0.171875 -4.71875q-1.15625 0.46875 -3.453125 0.796875q-1.296875 0.1875 -1.84375 0.421875q-0.53125 0.234375 -0.828125 0.6875q-0.28125 0.453125 -0.28125 1.0q0 0.84375 0.625 1.40625q0.640625 0.5625 1.875 0.5625q1.21875 0 2.171875 -0.53125q0.953125 -0.53125 1.390625 -1.453125q0.34375 -0.71875 0.34375 -2.109375l0 -0.78125zm5.3789062 6.25l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm16.539062 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm19.832031 7.421875l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375zm18.59375 6.21875l0 -12.453125l1.890625 0l0 1.890625q0.734375 -1.328125 1.34375 -1.75q0.625 -0.421875 1.359375 -0.421875q1.0625 0 2.171875 0.6875l-0.734375 1.953125q-0.765625 -0.453125 -1.546875 -0.453125q-0.6875 0 -1.25 0.421875q-0.546875 0.40625 -0.78125 1.140625q-0.34375 1.125 -0.34375 2.46875l0 6.515625l-2.109375 0zm16.539062 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm10.910156 3.703125l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.84375 8.484375l0 -17.21875l1.921875 0l0 1.625q0.6875 -0.953125 1.53125 -1.421875q0.859375 -0.484375 2.078125 -0.484375q1.59375 0 2.8125 0.828125q1.21875 0.8125 1.84375 2.3125q0.625 1.5 0.625 3.28125q0 1.90625 -0.6875 3.4375q-0.6875 1.53125 -2.0 2.34375q-1.296875 0.8125 -2.734375 0.8125q-1.0625 0 -1.90625 -0.4375q-0.828125 -0.453125 -1.375 -1.140625l0 6.0625l-2.109375 0zm1.921875 -10.921875q0 2.40625 0.96875 3.5625q0.96875 1.140625 2.359375 1.140625q1.40625 0 2.40625 -1.1875q1.0 -1.1875 1.0 -3.6875q0 -2.375 -0.984375 -3.5625q-0.96875 -1.1875 -2.328125 -1.1875q-1.359375 0 -2.390625 1.265625q-1.03125 1.25 -1.03125 3.65625zm10.644531 -0.0625q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.957031 6.21875l0 -12.453125l1.90625 0l0 1.78125q1.375 -2.0625 3.953125 -2.0625q1.125 0 2.0625 0.40625q0.953125 0.40625 1.421875 1.0625q0.46875 0.65625 0.65625 1.5625q0.125 0.578125 0.125 2.046875l0 7.65625l-2.109375 0l0 -7.578125q0 -1.28125 -0.25 -1.921875q-0.25 -0.640625 -0.875 -1.015625q-0.625 -0.390625 -1.46875 -0.390625q-1.34375 0 -2.328125 0.859375q-0.984375 0.859375 -0.984375 3.25l0 6.796875l-2.109375 0zm12.503906 -3.71875l2.09375 -0.328125q0.171875 1.25 0.96875 1.921875q0.8125 0.671875 2.25 0.671875q1.453125 0 2.15625 -0.59375q0.703125 -0.59375 0.703125 -1.390625q0 -0.71875 -0.625 -1.125q-0.421875 -0.28125 -2.15625 -0.71875q-2.3125 -0.578125 -3.21875 -1.0q-0.890625 -0.4375 -1.359375 -1.1875q-0.453125 -0.765625 -0.453125 -1.671875q0 -0.828125 0.375 -1.53125q0.390625 -0.71875 1.046875 -1.1875q0.484375 -0.359375 1.328125 -0.609375q0.859375 -0.265625 1.828125 -0.265625q1.46875 0 2.578125 0.421875q1.109375 0.421875 1.625 1.15625q0.53125 0.71875 0.734375 1.921875l-2.0625 0.28125q-0.140625 -0.96875 -0.8125 -1.5q-0.671875 -0.546875 -1.90625 -0.546875q-1.453125 0 -2.078125 0.484375q-0.625 0.484375 -0.625 1.125q0 0.40625 0.265625 0.734375q0.25 0.34375 0.8125 0.5625q0.3125 0.125 1.859375 0.546875q2.234375 0.59375 3.109375 0.984375q0.890625 0.375 1.390625 1.109375q0.515625 0.71875 0.515625 1.796875q0 1.046875 -0.625 1.984375q-0.609375 0.9375 -1.765625 1.453125q-1.15625 0.5 -2.625 0.5q-2.421875 0 -3.703125 -1.0q-1.265625 -1.015625 -1.625 -3.0zm12.859375 -11.03125l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm7.2695312 0l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.441406 -8.4375l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm5.2695312 0l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm5.3945312 -14.75l0 -2.4375l2.109375 0l0 2.4375l-2.109375 0zm0 14.75l0 -12.453125l2.109375 0l0 12.453125l-2.109375 0zm9.925781 -1.890625l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm1.9648438 6.6875l-0.234375 -1.984375q0.703125 0.1875 1.21875 0.1875q0.703125 0 1.125 -0.234375q0.421875 -0.234375 0.6875 -0.65625q0.203125 -0.3125 0.640625 -1.5625q0.0625 -0.1875 0.1875 -0.515625l-4.71875 -12.484375l2.265625 0l2.59375 7.21875q0.5 1.359375 0.90625 2.875q0.359375 -1.453125 0.859375 -2.828125l2.671875 -7.265625l2.109375 0l-4.734375 12.671875q-0.765625 2.046875 -1.1875 2.8125q-0.5625 1.046875 -1.296875 1.53125q-0.71875 0.484375 -1.734375 0.484375q-0.609375 0 -1.359375 -0.25zm10.921875 -4.796875l0 -2.40625l2.390625 0l0 2.40625l-2.390625 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/cros-connectivity-layers&sa=D&source=editors&ust=1638577908338000&usg=AOvVaw10WcK-TOlAntBY-aoFINqD" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m996.59186 8.986878l312.1054 0l0 28.8l-312.1054 0l0 -28.8z" fill-rule="nonzero"/></a><path fill="#efefef" d="m95.30708 364.93045l225.48033 0l0 193.22836l-225.48033 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m95.30708 364.93045l225.48033 0l0 193.22836l-225.48033 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m158.67615 375.2439l98.74219 0l0 27.597656l-98.74219 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m160.42615 396.97046l0 -17.1875l5.5625 0q3.171875 0 4.125 0.265625q1.484375 0.390625 2.46875 1.6875q1.0 1.28125 1.0 3.34375q0 1.578125 -0.578125 2.65625q-0.5625 1.078125 -1.453125 1.703125q-0.890625 0.609375 -1.796875 0.796875q-1.25 0.25 -3.59375 0.25l-2.265625 0l0 6.484375l-3.46875 0zm3.46875 -14.28125l0 4.875l1.890625 0q2.0625 0 2.75 -0.265625q0.6875 -0.265625 1.078125 -0.84375q0.390625 -0.578125 0.390625 -1.328125q0 -0.9375 -0.546875 -1.546875q-0.546875 -0.609375 -1.390625 -0.765625q-0.625 -0.125 -2.5 -0.125l-1.671875 0zm14.9765625 5.625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm9.628906 5.984375l-3.296875 0l0 -12.453125l3.0625 0l0 1.78125q0.78125 -1.265625 1.40625 -1.65625q0.640625 -0.40625 1.4375 -0.40625q1.125 0 2.15625 0.625l-1.015625 2.875q-0.828125 -0.546875 -1.546875 -0.546875q-0.6875 0 -1.171875 0.390625q-0.484375 0.375 -0.765625 1.375q-0.265625 1.0 -0.265625 4.171875l0 3.84375zm8.652344 -8.65625l-2.984375 -0.53125q0.5 -1.8125 1.71875 -2.671875q1.234375 -0.875 3.671875 -0.875q2.203125 0 3.28125 0.53125q1.078125 0.515625 1.515625 1.328125q0.4375 0.796875 0.4375 2.9375l-0.03125 3.84375q0 1.640625 0.15625 2.421875q0.15625 0.78125 0.59375 1.671875l-3.265625 0q-0.125 -0.328125 -0.3125 -0.96875q-0.078125 -0.296875 -0.125 -0.390625q-0.84375 0.8125 -1.8125 1.234375q-0.953125 0.40625 -2.03125 0.40625q-1.921875 0 -3.03125 -1.046875q-1.109375 -1.046875 -1.109375 -2.640625q0 -1.046875 0.5 -1.875q0.5 -0.828125 1.40625 -1.265625q0.921875 -0.4375 2.625 -0.765625q2.3125 -0.4375 3.203125 -0.8125l0 -0.328125q0 -0.953125 -0.46875 -1.34375q-0.46875 -0.40625 -1.765625 -0.40625q-0.890625 0 -1.390625 0.34375q-0.484375 0.34375 -0.78125 1.203125zm4.40625 2.671875q-0.640625 0.21875 -2.015625 0.515625q-1.359375 0.28125 -1.78125 0.5625q-0.640625 0.46875 -0.640625 1.171875q0 0.6875 0.515625 1.1875q0.515625 0.5 1.3125 0.5q0.890625 0 1.6875 -0.578125q0.609375 -0.453125 0.796875 -1.09375q0.125 -0.421875 0.125 -1.609375l0 -0.65625zm6.4726562 5.984375l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm6.6679688 0l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm13.886719 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm5.9414062 7.296875l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm5.5117188 -3.546875l3.3125 -0.515625q0.203125 0.96875 0.84375 1.46875q0.65625 0.5 1.8125 0.5q1.28125 0 1.921875 -0.46875q0.4375 -0.328125 0.4375 -0.890625q0 -0.375 -0.234375 -0.609375q-0.25 -0.234375 -1.109375 -0.4375q-3.984375 -0.875 -5.046875 -1.609375q-1.484375 -1.0 -1.484375 -2.796875q0 -1.625 1.28125 -2.71875q1.28125 -1.109375 3.96875 -1.109375q2.546875 0 3.78125 0.84375q1.25 0.828125 1.71875 2.453125l-3.109375 0.578125q-0.1875 -0.734375 -0.75 -1.109375q-0.5625 -0.390625 -1.59375 -0.390625q-1.296875 0 -1.859375 0.359375q-0.375 0.265625 -0.375 0.671875q0 0.34375 0.328125 0.59375q0.453125 0.328125 3.078125 0.9375q2.625 0.59375 3.671875 1.453125q1.03125 0.875 1.03125 2.453125q0 1.703125 -1.4375 2.9375q-1.421875 1.234375 -4.21875 1.234375q-2.546875 0 -4.03125 -1.03125q-1.484375 -1.03125 -1.9375 -2.796875z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m257.41833 375.2439l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#000099" d="m158.67615 398.53046l98.74219 0l0 2.1600037l-98.74219 0l0 -2.1600037z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/parallels&sa=D&source=editors&ust=1638577908342000&usg=AOvVaw148vfJn_nrvHzymr64ovGQ" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m158.67615 373.93045l98.74219 0l0 28.799988l-98.74219 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m21.83727 674.395l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.83727 674.395l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m57.467297 686.9142l64.2675 0l0 21.45288l-64.2675 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m58.998547 703.8032l0 -13.359375l9.015629 0l0 1.578125l-7.250004 0l0 4.140625l6.265629 0l0 1.578125l-6.265629 0l0 6.0625l-1.765625 0zm11.09911 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.129196 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.853302 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm10.922592 5.765625l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004196 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.156967 4.859375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.144821 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m121.7348 686.9142l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m57.467297 705.01654l64.2675 0l0 1.6799927l-64.2675 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/firewall.h&sa=D&source=editors&ust=1638577908344000&usg=AOvVaw2PHaKWNBVZQprhZlBvgEYV" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m57.467297 685.8832l64.2675 0l0 22.400024l-64.2675 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m179.40369 674.395l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m179.40369 674.395l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m209.85042 686.9142l74.63411 0l0 21.45288l-74.63411 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m211.2723 703.8032l0 -13.359375l1.8125 0l7.015625 10.484375l0 -10.484375l1.6875 0l0 13.359375l-1.8125 0l-7.015625 -10.5l0 10.5l-1.6875 0zm13.488571 0l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28125l-2.8125 0l0 10.203125zm11.707321 1.578125l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.459198 7.0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.6189117 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.203857 4.84375l3.53125 -5.03125l-3.265625 -4.640625l2.046875 0l1.484375 2.265625q0.421875 0.640625 0.671875 1.078125q0.40625 -0.59375 0.734375 -1.0625l1.640625 -2.28125l1.953125 0l-3.34375 4.546875l3.59375 5.125l-2.015625 0l-1.984375 -3.0l-0.515625 -0.8125l-2.546875 3.8125l-1.984375 0zm10.34375 3.71875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m284.48453 686.9142l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m209.85042 705.01654l74.63411 0l0 1.6799927l-74.63411 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/ndproxy.h&sa=D&source=editors&ust=1638577908346000&usg=AOvVaw1UgsvT1ZsJPSAu_A6eqAH5" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m209.85042 685.8832l74.63411 0l0 22.400024l-74.63411 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#6d9eeb" d="m775.35956 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m775.35956 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m788.8585 795.5769l73.63208 0l0 21.45288l-73.63208 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m790.24915 812.46594l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.203125 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.875 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm21.697021 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.2038574 4.859375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm16.688232 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm3.8913574 5.65625l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625zm15.953796 1.90625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m862.4906 795.5769l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m788.8585 813.67926l73.63208 0l0 1.6799927l-73.63208 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/manager.h&sa=D&source=editors&ust=1638577908348000&usg=AOvVaw2-GEVnopsJQSi2fuFmH9G1" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m788.8585 794.54596l73.63208 0l0 22.399963l-73.63208 0l0 -22.399963z" fill-rule="nonzero"/></a><defs><linearGradient id="p.6" gradientUnits="userSpaceOnUse" gradientTransform="matrix(10.461344931474438 0.0 0.0 10.461344931474438 0.0 0.0)" spreadMethod="pad" x1="75.66739098562421" y1="77.00218558523139" x2="68.27017360807059" y2="69.60482708070391"><stop offset="0.0" stop-color="#dd7e6b"/><stop offset="0.5" stop-color="#dd7e6b"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.6)" d="m663.8819 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m663.8819 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m695.5497 795.5769l37.29431 0l0 21.45288l-37.29431 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m699.3153 812.46594l-3.53125 -13.359375l1.8125 0l2.03125 8.765625q0.328125 1.375 0.5625 2.71875q0.5 -2.140625 0.59375 -2.46875l2.546875 -9.015625l2.125 0l1.921875 6.765625q0.71875 2.515625 1.03125 4.71875q0.265625 -1.265625 0.671875 -2.890625l2.09375 -8.59375l1.78125 0l-3.671875 13.359375l-1.703125 0l-2.8125 -10.171875q-0.359375 -1.28125 -0.421875 -1.5625q-0.203125 0.90625 -0.390625 1.5625l-2.828125 10.171875l-1.8125 0zm15.077454 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.4416504 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m732.844 795.5769l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m695.5497 813.67926l37.29431 0l0 1.6799927l-37.29431 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/wifi/wifi.h&sa=D&source=editors&ust=1638577908354000&usg=AOvVaw3A97TOcedFMCbtI2HLRy1F" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m695.5497 794.54596l37.29431 0l0 22.399963l-37.29431 0l0 -22.399963z" fill-rule="nonzero"/></a><defs><linearGradient id="p.7" gradientUnits="userSpaceOnUse" gradientTransform="matrix(10.461347703443927 0.0 0.0 10.461347703443927 0.0 0.0)" spreadMethod="pad" x1="107.83553121986976" y1="77.00216518176951" x2="100.43830796199" y2="69.60480863733865"><stop offset="0.0" stop-color="#8e7cc3"/><stop offset="0.5" stop-color="#8e7cc3"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.7)" d="m1000.4042 778.47504l100.630005 0l0 54.141785l-100.630005 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m1000.4042 778.47504l100.630005 0l0 54.141785l-100.630005 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1019.0955 795.5769l63.247253 0l0 21.45288l-63.247253 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1030.0643 807.77844l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515686 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484436 -0.8125 3.250061 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578186 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046936 0.625 2.265686 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm10.363525 1.578125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.094482 5.765625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1447754 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519897 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm4.0007324 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.50415 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1882324 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1082.3428 795.5769l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m1019.0955 813.67926l63.247253 0l0 1.6799927l-63.247253 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/cellular/cellular.h&sa=D&source=editors&ust=1638577908356000&usg=AOvVaw1vTwDcu1mpEOqtIHxz2r9g" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1019.0955 794.54596l63.247253 0l0 22.399963l-63.247253 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#6d9eeb" d="m889.57086 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m889.57086 778.47504l100.629944 0l0 54.141785l-100.629944 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m904.623 795.5769l70.525696 0l0 21.45288l-70.525696 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m906.09174 812.46594l0 -13.359375l9.65625 0l0 1.578125l-7.875 0l0 4.09375l7.375 0l0 1.5625l-7.375 0l0 4.546875l8.1875 0l0 1.578125l-9.96875 0zm15.7872925 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051636 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m975.1487 795.5769l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m904.623 813.67926l70.525696 0l0 1.6799927l-70.525696 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/ethernet/ethernet.h&sa=D&source=editors&ust=1638577908358000&usg=AOvVaw3biFSa9mbkEwor6Bzumzgu" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m904.623 794.54596l70.525696 0l0 22.399963l-70.525696 0l0 -22.399963z" fill-rule="nonzero"/></a><defs><linearGradient id="p.8" gradientUnits="userSpaceOnUse" gradientTransform="matrix(10.461347703443927 0.0 0.0 10.461347703443927 0.0 0.0)" spreadMethod="pad" x1="54.50410098866407" y1="76.91786535838355" x2="47.10687773078431" y2="69.52050881395267"><stop offset="0.0" stop-color="#f6b26b"/><stop offset="0.5" stop-color="#f6b26b"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.8)" d="m442.48557 777.5932l100.62991 0l0 54.141724l-100.62991 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m442.48557 777.5932l100.62991 0l0 54.141724l-100.62991 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m473.62048 783.695l38.360077 0l0 21.45288l-38.360077 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m478.87048 800.58405l-5.171875 -13.359375l1.921875 0l3.46875 9.703125q0.421875 1.171875 0.703125 2.1875q0.3125 -1.09375 0.71875 -2.1875l3.609375 -9.703125l1.796875 0l-5.234375 13.359375l-1.8125 0zm8.631073 0l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.662323 7.0l0 -13.359375l1.8125 0l7.015625 10.484375l0 -10.484375l1.6875 0l0 13.359375l-1.8125 0l-7.015625 -10.5l0 10.5l-1.6875 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m511.98056 783.695l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m473.62048 801.79736l38.360077 0l0 1.6799927l-38.360077 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m461.69614 805.695l62.20877 0l0 21.45288l-62.20877 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m462.5399 818.2872l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm19.459198 1.1875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.915802 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457306 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m523.9049 805.695l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m461.69614 823.79736l62.20877 0l0 1.6799927l-62.20877 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/vpn/vpn_service.h&sa=D&source=editors&ust=1638577908363000&usg=AOvVaw2zg2aHxdX1UdzAnDjKObQ7" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m473.62048 782.66406l38.360077 0l0 22.399963l-38.360077 0l0 -22.399963z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/vpn/vpn_service.h&sa=D&source=editors&ust=1638577908363000&usg=AOvVaw2zg2aHxdX1UdzAnDjKObQ7" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m461.69614 804.66406l62.20877 0l0 22.399963l-62.20877 0l0 -22.399963z" fill-rule="nonzero"/></a><defs><linearGradient id="p.9" gradientUnits="userSpaceOnUse" gradientTransform="matrix(10.461347703443927 0.0 0.0 10.461347703443927 0.0 0.0)" spreadMethod="pad" x1="65.32182956639483" y1="76.91786535838355" x2="57.92460630851507" y2="69.52050881395267"><stop offset="0.0" stop-color="#f6b26b"/><stop offset="0.5" stop-color="#f6b26b"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.9)" d="m555.65356 777.5932l100.62988 0l0 54.141724l-100.62988 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m555.65356 777.5932l100.62988 0l0 54.141724l-100.62988 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m570.191 794.695l71.55505 0l0 21.45288l-71.55505 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m571.92535 811.58405l0 -13.359375l1.765625 0l0 13.359375l-1.765625 0zm4.8864136 0l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm20.209167 2.3125l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.1292114 -0.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297607 4.84375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.766357 0l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.7926636 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm3.8323364 0.796875l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m641.74603 794.695l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m570.191 812.79736l71.55505 0l0 1.6799927l-71.55505 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/ipconfig.h&sa=D&source=editors&ust=1638577908365000&usg=AOvVaw3IXATGun4oVNE2J1C9srPL" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m570.191 793.66406l71.55505 0l0 22.399963l-71.55505 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#b6d7a8" d="m85.13386 1028.1326l197.66931 0l0 79.149536l-197.66931 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m85.13386 1028.1326l197.66931 0l0 79.149536l-197.66931 0z" fill-rule="evenodd"/><path fill="#000000" d="m143.72734 1058.7556l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.844467 4.78125l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.504196 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.9958038 1.46875l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.183304 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281967 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm23.697052 -1.578125l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm0.9851074 1.8125l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m123.308365 1060.1636l121.32028 0l0 21.45288l-121.32028 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m123.745865 1074.2869l2.5625 -0.390625q0.171875 0.75 0.671875 1.140625q0.5 0.390625 1.40625 0.390625q0.984375 0 1.484375 -0.375q0.34375 -0.25 0.34375 -0.671875q0 -0.296875 -0.1875 -0.484375q-0.1875 -0.1875 -0.859375 -0.34375q-3.09375 -0.6875 -3.921875 -1.25q-1.140625 -0.78125 -1.140625 -2.171875q0 -1.265625 0.984375 -2.109375q1.0 -0.859375 3.078125 -0.859375q1.984375 0 2.953125 0.65625q0.96875 0.640625 1.328125 1.90625l-2.40625 0.4375q-0.15625 -0.5625 -0.59375 -0.859375q-0.421875 -0.296875 -1.234375 -0.296875q-1.0 0 -1.4375 0.28125q-0.296875 0.203125 -0.296875 0.515625q0 0.265625 0.25 0.46875q0.34375 0.25 2.390625 0.71875q2.046875 0.453125 2.859375 1.140625q0.796875 0.671875 0.796875 1.890625q0 1.34375 -1.109375 2.296875q-1.109375 0.953125 -3.28125 0.953125q-1.984375 0 -3.140625 -0.796875q-1.140625 -0.8125 -1.5 -2.1875zm10.063217 -6.90625l2.71875 0l2.328125 6.859375l2.25 -6.859375l2.65625 0l-3.421875 9.3125l-0.609375 1.6875q-0.328125 0.84375 -0.640625 1.28125q-0.3125 0.453125 -0.703125 0.71875q-0.390625 0.28125 -0.96875 0.4375q-0.578125 0.15625 -1.3125 0.15625q-0.734375 0 -1.453125 -0.15625l-0.21875 -2.0q0.59375 0.125 1.078125 0.125q0.890625 0 1.3125 -0.53125q0.4375 -0.515625 0.671875 -1.328125l-3.6875 -9.703125zm10.688217 6.90625l2.5625 -0.390625q0.171875 0.75 0.671875 1.140625q0.5 0.390625 1.40625 0.390625q0.984375 0 1.484375 -0.375q0.34375 -0.25 0.34375 -0.671875q0 -0.296875 -0.1875 -0.484375q-0.1875 -0.1875 -0.859375 -0.34375q-3.09375 -0.6875 -3.921875 -1.25q-1.140625 -0.78125 -1.140625 -2.171875q0 -1.265625 0.984375 -2.109375q1.0 -0.859375 3.078125 -0.859375q1.984375 0 2.953125 0.65625q0.96875 0.640625 1.328125 1.90625l-2.40625 0.4375q-0.15625 -0.5625 -0.59375 -0.859375q-0.421875 -0.296875 -1.234375 -0.296875q-1.0 0 -1.4375 0.28125q-0.296875 0.203125 -0.296875 0.515625q0 0.265625 0.25 0.46875q0.34375 0.25 2.390625 0.71875q2.046875 0.453125 2.859375 1.140625q0.796875 0.671875 0.796875 1.890625q0 1.34375 -1.109375 2.296875q-1.109375 0.953125 -3.28125 0.953125q-1.984375 0 -3.140625 -0.796875q-1.140625 -0.8125 -1.5 -2.1875zm15.719467 -6.90625l0 2.03125l-1.75 0l0 3.90625q0 1.1875 0.046875 1.390625q0.046875 0.1875 0.21875 0.3125q0.1875 0.125 0.4375 0.125q0.359375 0 1.03125 -0.25l0.21875 2.0q-0.890625 0.375 -2.015625 0.375q-0.703125 0 -1.265625 -0.234375q-0.546875 -0.234375 -0.8125 -0.59375q-0.25 -0.375 -0.34375 -1.0q-0.09375 -0.453125 -0.09375 -1.8125l0 -4.21875l-1.171875 0l0 -2.03125l1.171875 0l0 -1.921875l2.578125 -1.5l0 3.421875l1.75 0zm7.368927 6.59375l2.546875 0.421875q-0.484375 1.40625 -1.546875 2.140625q-1.0625 0.734375 -2.65625 0.734375q-2.515625 0 -3.734375 -1.65625q-0.953125 -1.3125 -0.953125 -3.328125q0 -2.40625 1.25 -3.765625q1.265625 -1.359375 3.1875 -1.359375q2.15625 0 3.40625 1.421875q1.25 1.421875 1.1875 4.375l-6.40625 0q0.03125 1.140625 0.609375 1.78125q0.59375 0.625 1.484375 0.625q0.59375 0 1.0 -0.328125q0.421875 -0.328125 0.625 -1.0625zm0.15625 -2.59375q-0.03125 -1.109375 -0.578125 -1.6875q-0.546875 -0.578125 -1.328125 -0.578125q-0.84375 0 -1.390625 0.609375q-0.546875 0.609375 -0.53125 1.65625l3.828125 0zm4.422592 -4.0l2.359375 0l0 1.3125q1.265625 -1.53125 3.015625 -1.53125q0.9375 0 1.609375 0.390625q0.6875 0.375 1.125 1.140625q0.640625 -0.765625 1.375 -1.140625q0.75 -0.390625 1.578125 -0.390625q1.0625 0 1.796875 0.4375q0.75 0.421875 1.109375 1.265625q0.265625 0.625 0.265625 2.0l0 6.1875l-2.5625 0l0 -5.53125q0 -1.4375 -0.265625 -1.859375q-0.34375 -0.546875 -1.09375 -0.546875q-0.53125 0 -1.015625 0.328125q-0.46875 0.328125 -0.671875 0.96875q-0.203125 0.625 -0.203125 2.0l0 4.640625l-2.5625 0l0 -5.296875q0 -1.421875 -0.140625 -1.828125q-0.140625 -0.40625 -0.421875 -0.609375q-0.28125 -0.203125 -0.78125 -0.203125q-0.59375 0 -1.0625 0.328125q-0.46875 0.3125 -0.6875 0.921875q-0.203125 0.59375 -0.203125 1.984375l0 4.703125l-2.5625 0l0 -9.671875zm16.494644 6.109375l0 -2.5625l5.03125 0l0 2.5625l-5.03125 0zm6.431427 -6.109375l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm11.395981 5.0l-2.5625 0l0 -9.671875l2.375 0l0 1.375q0.609375 -0.984375 1.09375 -1.28125q0.484375 -0.3125 1.109375 -0.3125q0.875 0 1.6875 0.484375l-0.796875 2.234375q-0.640625 -0.421875 -1.203125 -0.421875q-0.53125 0 -0.90625 0.296875q-0.375 0.296875 -0.59375 1.078125q-0.203125 0.765625 -0.203125 3.234375l0 2.984375zm4.2134094 -4.96875q0 -1.28125 0.625 -2.46875q0.625 -1.203125 1.78125 -1.828125q1.15625 -0.625 2.578125 -0.625q2.1875 0 3.59375 1.421875q1.40625 1.421875 1.40625 3.609375q0 2.1875 -1.421875 3.640625q-1.421875 1.4375 -3.5625 1.4375q-1.328125 0 -2.546875 -0.59375q-1.203125 -0.609375 -1.828125 -1.765625q-0.625 -1.171875 -0.625 -2.828125zm2.625 0.125q0 1.453125 0.671875 2.21875q0.6875 0.75 1.6875 0.75q1.0 0 1.671875 -0.75q0.6875 -0.765625 0.6875 -2.234375q0 -1.421875 -0.6875 -2.1875q-0.671875 -0.765625 -1.671875 -0.765625q-1.0 0 -1.6875 0.765625q-0.671875 0.765625 -0.671875 2.203125zm8.130341 4.84375l3.484375 -4.984375l-3.34375 -4.6875l3.125 0l1.71875 2.65625l1.796875 -2.65625l3.015625 0l-3.28125 4.578125l3.578125 5.09375l-3.140625 0l-1.96875 -3.0l-1.984375 3.0l-3.0 0zm10.391357 -9.671875l2.71875 0l2.328125 6.859375l2.25 -6.859375l2.65625 0l-3.421875 9.3125l-0.609375 1.6875q-0.328125 0.84375 -0.640625 1.28125q-0.3125 0.453125 -0.703125 0.71875q-0.390625 0.28125 -0.96875 0.4375q-0.578125 0.15625 -1.3125 0.15625q-0.734375 0 -1.453125 -0.15625l-0.21875 -2.0q0.59375 0.125 1.078125 0.125q0.890625 0 1.3125 -0.53125q0.4375 -0.515625 0.671875 -1.328125l-3.6875 -9.703125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m244.62865 1060.1636l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m123.308365 1078.2659l121.32028 0l0 1.6800537l-121.32028 0l0 -1.6800537z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://cs/chromeos_public/src/platform2/system-proxy/&sa=D&source=editors&ust=1638577908370000&usg=AOvVaw1HYYmp8XSa68x_8Z7y_ow5" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m123.308365 1059.1326l121.32028 0l0 22.400024l-121.32028 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m395.38846 285.48294l148.85037 0l0 37.5748l-148.85037 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m395.38846 285.48294l148.85037 0l0 37.5748l-148.85037 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m411.28503 295.21735l117.05719 0l0 15.32605l-117.05719 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m416.67566 304.75168l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm1.7109375 -0.921875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm11.1024475 2.65625l0 -9.5625l1.078125 0l0 0.890625q0.375 -0.53125 0.84375 -0.78125q0.484375 -0.265625 1.15625 -0.265625q0.875 0 1.546875 0.453125q0.6875 0.453125 1.03125 1.28125q0.34375 0.828125 0.34375 1.828125q0 1.046875 -0.375 1.90625q-0.375 0.84375 -1.109375 1.296875q-0.71875 0.453125 -1.53125 0.453125q-0.578125 0 -1.046875 -0.25q-0.46875 -0.25 -0.765625 -0.625l0 3.375l-1.171875 0zm1.0625 -6.078125q0 1.34375 0.53125 1.984375q0.546875 0.625 1.3125 0.625q0.78125 0 1.34375 -0.65625q0.5625 -0.65625 0.5625 -2.046875q0 -1.3125 -0.546875 -1.96875q-0.546875 -0.671875 -1.296875 -0.671875q-0.75 0 -1.328125 0.703125q-0.578125 0.703125 -0.578125 2.03125zm5.9124756 -0.03125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5218506 4.125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm9.974976 -1.046875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.6717224 -1.015625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm6.2578125 2.21875l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm9.093628 -1.015625q-0.65625 0.5625 -1.265625 0.796875q-0.59375 0.21875 -1.28125 0.21875q-1.140625 0 -1.75 -0.546875q-0.609375 -0.5625 -0.609375 -1.4375q0 -0.5 0.21875 -0.921875q0.234375 -0.421875 0.609375 -0.671875q0.375 -0.25 0.84375 -0.390625q0.34375 -0.078125 1.046875 -0.171875q1.421875 -0.171875 2.09375 -0.40625q0 -0.234375 0 -0.296875q0 -0.71875 -0.328125 -1.015625q-0.453125 -0.390625 -1.34375 -0.390625q-0.8125 0 -1.21875 0.296875q-0.390625 0.28125 -0.578125 1.015625l-1.140625 -0.15625q0.15625 -0.734375 0.515625 -1.1875q0.359375 -0.453125 1.03125 -0.6875q0.671875 -0.25 1.5625 -0.25q0.890625 0 1.4375 0.203125q0.5625 0.203125 0.8125 0.53125q0.265625 0.3125 0.375 0.796875q0.046875 0.296875 0.046875 1.078125l0 1.5625q0 1.625 0.078125 2.0625q0.078125 0.4375 0.296875 0.828125l-1.21875 0q-0.1875 -0.359375 -0.234375 -0.859375zm-0.09375 -2.609375q-0.640625 0.265625 -1.921875 0.4375q-0.71875 0.109375 -1.015625 0.25q-0.296875 0.125 -0.46875 0.375q-0.15625 0.25 -0.15625 0.546875q0 0.46875 0.34375 0.78125q0.359375 0.3125 1.046875 0.3125q0.671875 0 1.203125 -0.296875q0.53125 -0.296875 0.78125 -0.8125q0.1875 -0.390625 0.1875 -1.171875l0 -0.421875zm2.9749756 3.46875l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm8.9696045 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm1.2734375 2.6875l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm4.578003 -0.15625l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm12.146851 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m528.3422 295.21735l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m411.28503 308.1496l117.05725 0l0 1.2000122l-117.05725 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:components/arc/net/&sa=D&source=editors&ust=1638577908373000&usg=AOvVaw3lw2gV5L-Q06nkyJFODoJn" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m411.28503 294.48294l117.05725 0l0 16.0l-117.05725 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#dd7e6b" d="m629.29395 1198.9606l115.37012 0l0 31.716553l-115.37012 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m629.29395 1198.9606l115.37012 0l0 31.716553l-115.37012 0z" fill-rule="evenodd"/><path fill="#000000" d="m645.8408 1218.192l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm3.40625 3.546875l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.4802246 0.796875l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625zm11.391296 -2.21875q-1.015625 -0.375 -1.515625 -1.0625q-0.484375 -0.703125 -0.484375 -1.671875q0 -1.453125 1.046875 -2.4375q1.046875 -1.0 2.78125 -1.0q1.75 0 2.8125 1.015625q1.078125 1.015625 1.078125 2.46875q0 0.9375 -0.5 1.625q-0.484375 0.6875 -1.46875 1.0625q1.21875 0.390625 1.859375 1.28125q0.65625 0.890625 0.65625 2.140625q0 1.703125 -1.21875 2.875q-1.21875 1.171875 -3.1875 1.171875q-1.984375 0 -3.203125 -1.171875q-1.203125 -1.171875 -1.203125 -2.921875q0 -1.3125 0.65625 -2.1875q0.671875 -0.875 1.890625 -1.1875zm-0.328125 -2.78125q0 0.9375 0.609375 1.546875q0.609375 0.59375 1.59375 0.59375q0.9375 0 1.546875 -0.59375q0.609375 -0.59375 0.609375 -1.453125q0 -0.90625 -0.625 -1.515625q-0.625 -0.625 -1.5625 -0.625q-0.9375 0 -1.5625 0.609375q-0.609375 0.59375 -0.609375 1.4375zm-0.53125 6.15625q0 0.703125 0.328125 1.359375q0.34375 0.65625 1.0 1.015625q0.65625 0.359375 1.40625 0.359375q1.171875 0 1.9375 -0.75q0.765625 -0.75 0.765625 -1.921875q0 -1.1875 -0.796875 -1.953125q-0.78125 -0.78125 -1.953125 -0.78125q-1.15625 0 -1.921875 0.765625q-0.765625 0.765625 -0.765625 1.90625zm8.719482 -2.734375q0 -2.359375 0.484375 -3.796875q0.484375 -1.453125 1.4375 -2.234375q0.96875 -0.78125 2.421875 -0.78125q1.078125 0 1.890625 0.4375q0.8125 0.421875 1.328125 1.25q0.53125 0.8125 0.828125 1.984375q0.3125 1.15625 0.3125 3.140625q0 2.359375 -0.484375 3.8125q-0.484375 1.4375 -1.453125 2.234375q-0.953125 0.78125 -2.421875 0.78125q-1.921875 0 -3.03125 -1.390625q-1.3125 -1.671875 -1.3125 -5.4375zm1.671875 0q0 3.296875 0.765625 4.390625q0.78125 1.078125 1.90625 1.078125q1.140625 0 1.90625 -1.09375q0.765625 -1.09375 0.765625 -4.375q0 -3.296875 -0.765625 -4.375q-0.765625 -1.078125 -1.921875 -1.078125q-1.125 0 -1.796875 0.953125q-0.859375 1.21875 -0.859375 4.5zm17.313232 5.015625l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm7.9382324 1.578125l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625zm8.990295 0l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625z" fill-rule="nonzero"/><path fill="#dd7e6b" d="m762.1312 1198.9895l115.37012 0l0 31.716553l-115.37012 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m762.1312 1198.9895l115.37012 0l0 31.716553l-115.37012 0z" fill-rule="evenodd"/><path fill="#000000" d="m772.3656 1221.7678l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.853333 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm10.516296 1.3125l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm5.078125 -3.6875q-1.015625 -0.375 -1.515625 -1.0625q-0.484375 -0.703125 -0.484375 -1.671875q0 -1.453125 1.046875 -2.4375q1.046875 -1.0 2.78125 -1.0q1.75 0 2.8125 1.015625q1.078125 1.015625 1.078125 2.46875q0 0.9375 -0.5 1.625q-0.484375 0.6875 -1.46875 1.0625q1.21875 0.390625 1.859375 1.28125q0.65625 0.890625 0.65625 2.140625q0 1.703125 -1.21875 2.875q-1.21875 1.171875 -3.1875 1.171875q-1.984375 0 -3.203125 -1.171875q-1.203125 -1.171875 -1.203125 -2.921875q0 -1.3125 0.65625 -2.1875q0.671875 -0.875 1.890625 -1.1875zm-0.328125 -2.78125q0 0.9375 0.609375 1.546875q0.609375 0.59375 1.59375 0.59375q0.9375 0 1.546875 -0.59375q0.609375 -0.59375 0.609375 -1.453125q0 -0.90625 -0.625 -1.515625q-0.625 -0.625 -1.5625 -0.625q-0.9375 0 -1.5625 0.609375q-0.609375 0.59375 -0.609375 1.4375zm-0.53125 6.15625q0 0.703125 0.328125 1.359375q0.34375 0.65625 1.0 1.015625q0.65625 0.359375 1.40625 0.359375q1.171875 0 1.9375 -0.75q0.765625 -0.75 0.765625 -1.921875q0 -1.1875 -0.796875 -1.953125q-0.78125 -0.78125 -1.953125 -0.78125q-1.15625 0 -1.921875 0.765625q-0.765625 0.765625 -0.765625 1.90625zm8.719482 -2.734375q0 -2.359375 0.484375 -3.796875q0.484375 -1.453125 1.4375 -2.234375q0.96875 -0.78125 2.421875 -0.78125q1.078125 0 1.890625 0.4375q0.8125 0.421875 1.328125 1.25q0.53125 0.8125 0.828125 1.984375q0.3125 1.15625 0.3125 3.140625q0 2.359375 -0.484375 3.8125q-0.484375 1.4375 -1.453125 2.234375q-0.953125 0.78125 -2.421875 0.78125q-1.921875 0 -3.03125 -1.390625q-1.3125 -1.671875 -1.3125 -5.4375zm1.671875 0q0 3.296875 0.765625 4.390625q0.78125 1.078125 1.90625 1.078125q1.140625 0 1.90625 -1.09375q0.765625 -1.09375 0.765625 -4.375q0 -3.296875 -0.765625 -4.375q-0.765625 -1.078125 -1.921875 -1.078125q-1.125 0 -1.796875 0.953125q-0.859375 1.21875 -0.859375 4.5zm17.313232 5.015625l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm7.9382324 1.578125l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625zm8.990295 0l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625z" fill-rule="nonzero"/><path fill="#d9d9d9" d="m797.91864 1082.5487l0 0c0 -2.9195557 -2.3666992 -5.286255 -5.286194 -5.286255l-117.837036 0c-1.4020386 0 -2.746582 0.55700684 -3.737915 1.5483398c-0.99139404 0.991333 -1.5482788 2.3359375 -1.5482788 3.737915l0 21.144043c0 2.9195557 2.3666992 5.286255 5.286194 5.286255l117.837036 0c2.9194946 0 5.286194 -2.3666992 5.286194 -5.286255z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m797.91864 1082.5487l0 0c0 -2.9195557 -2.3666992 -5.286255 -5.286194 -5.286255l-117.837036 0c-1.4020386 0 -2.746582 0.55700684 -3.737915 1.5483398c-0.99139404 0.991333 -1.5482788 2.3359375 -1.5482788 3.737915l0 21.144043c0 2.9195557 2.3666992 5.286255 5.286194 5.286255l117.837036 0c2.9194946 0 5.286194 -2.3666992 5.286194 -5.286255z" fill-rule="evenodd"/><path fill="#000000" d="m681.2918 1100.0408l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.328857 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm6.2542114 -7.234375q-1.015625 -0.375 -1.515625 -1.0625q-0.484375 -0.703125 -0.484375 -1.671875q0 -1.453125 1.046875 -2.4375q1.046875 -1.0 2.78125 -1.0q1.75 0 2.8125 1.015625q1.078125 1.015625 1.078125 2.46875q0 0.9375 -0.5 1.625q-0.484375 0.6875 -1.46875 1.0625q1.21875 0.390625 1.859375 1.28125q0.65625 0.890625 0.65625 2.140625q0 1.703125 -1.21875 2.875q-1.21875 1.171875 -3.1875 1.171875q-1.984375 0 -3.203125 -1.171875q-1.203125 -1.171875 -1.203125 -2.921875q0 -1.3125 0.65625 -2.1875q0.671875 -0.875 1.890625 -1.1875zm-0.328125 -2.78125q0 0.9375 0.609375 1.546875q0.609375 0.59375 1.59375 0.59375q0.9375 0 1.546875 -0.59375q0.609375 -0.59375 0.609375 -1.453125q0 -0.90625 -0.625 -1.515625q-0.625 -0.625 -1.5625 -0.625q-0.9375 0 -1.5625 0.609375q-0.609375 0.59375 -0.609375 1.4375zm-0.53125 6.15625q0 0.703125 0.328125 1.359375q0.34375 0.65625 1.0 1.015625q0.65625 0.359375 1.40625 0.359375q1.171875 0 1.9375 -0.75q0.765625 -0.75 0.765625 -1.921875q0 -1.1875 -0.796875 -1.953125q-0.78125 -0.78125 -1.953125 -0.78125q-1.15625 0 -1.921875 0.765625q-0.765625 0.765625 -0.765625 1.90625zm8.719482 -2.734375q0 -2.359375 0.484375 -3.796875q0.484375 -1.453125 1.4375 -2.234375q0.96875 -0.78125 2.421875 -0.78125q1.078125 0 1.890625 0.4375q0.8125 0.421875 1.328125 1.25q0.53125 0.8125 0.828125 1.984375q0.3125 1.15625 0.3125 3.140625q0 2.359375 -0.484375 3.8125q-0.484375 1.4375 -1.453125 2.234375q-0.953125 0.78125 -2.421875 0.78125q-1.921875 0 -3.03125 -1.390625q-1.3125 -1.671875 -1.3125 -5.4375zm1.671875 0q0 3.296875 0.765625 4.390625q0.78125 1.078125 1.90625 1.078125q1.140625 0 1.90625 -1.09375q0.765625 -1.09375 0.765625 -4.375q0 -3.296875 -0.765625 -4.375q-0.765625 -1.078125 -1.921875 -1.078125q-1.125 0 -1.796875 0.953125q-0.859375 1.21875 -0.859375 4.5zm17.313171 5.015625l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm7.9382324 1.578125l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625zm8.990295 0l-1.640625 0l0 -10.453125q-0.59375 0.5625 -1.5625 1.140625q-0.953125 0.5625 -1.71875 0.84375l0 -1.59375q1.375 -0.640625 2.40625 -1.5625q1.03125 -0.921875 1.453125 -1.78125l1.0625 0l0 13.40625z" fill-rule="nonzero"/><defs><linearGradient id="p.10" gradientUnits="userSpaceOnUse" gradientTransform="matrix(11.918226986797135 0.0 0.0 11.918226986797135 0.0 0.0)" spreadMethod="pad" x1="68.35226382061998" y1="72.74442591275768" x2="59.92488040065302" y2="64.31689108923511"><stop offset="0.0" stop-color="#dd7e6b"/><stop offset="0.5" stop-color="#dd7e6b"/><stop offset="0.51" stop-color="#6d9eeb"/><stop offset="1.0" stop-color="#6d9eeb"/></linearGradient></defs><path fill="url(#p.10)" d="m632.54333 848.19684l163.30707 0l0 37.57483l-163.30707 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m632.54333 848.19684l163.30707 0l0 37.57483l-163.30707 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m654.5752 857.01526l119.24335 0l0 21.45282l-119.24335 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m656.0127 873.90424l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm9.8654175 2.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281982 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.8064575 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.9176636 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1569824 4.859375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.3947754 0l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28125l-2.8125 0l0 10.203125zm18.129211 -1.53125l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm8.230164 -1.640625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm15.453857 2.21875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm6.59375 2.078125l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.9957886 -3.375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281982 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m773.81854 857.01526l0 0l0 21.45282l0 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m654.5752 875.11755l119.243286 0l0 1.6800537l-119.243286 0l0 -1.6800537z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/shill/portal_detector.h?q%3Dportal%26sq%3Dpackage:chromeos_public&sa=D&source=editors&ust=1638577908382000&usg=AOvVaw3bS8kQbkxq0I9hP8Z4-PB1" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m654.5752 855.98425l119.243286 0l0 22.400024l-119.243286 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#d9d9d9" d="m470.15485 1082.6628l0 0c0 -2.9194336 2.3667297 -5.286255 5.286194 -5.286255l98.71893 0c1.4020386 0 2.746582 0.55700684 3.737915 1.5483398c0.99139404 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286133 -5.286194 5.286133l-98.71893 0c-2.919464 0 -5.286194 -2.3666992 -5.286194 -5.286133z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m470.15485 1082.6628l0 0c0 -2.9194336 2.3667297 -5.286255 5.286194 -5.286255l98.71893 0c1.4020386 0 2.746582 0.55700684 3.737915 1.5483398c0.99139404 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286133 -5.286194 5.286133l-98.71893 0c-2.919464 0 -5.286194 -2.3666992 -5.286194 -5.286133z" fill-rule="evenodd"/><path fill="#000000" d="m499.0708 1100.1549l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.1250305 0 -3.3750305 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.2656555 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.2187805 0q0.09375 1.59375 0.90625 2.453125q0.8125305 0.84375 2.0156555 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.3906555 -2.65625l5.4062805 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.9062805 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719452 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5583496 1.46875l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1916504 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1448364 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.375732 0l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0z" fill-rule="nonzero"/><path fill="#f6b26b" d="m21.83727 731.7635l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.83727 731.7635l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m52.79868 733.28265l73.60474 0l0 21.45288l-73.60474 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m54.189304 750.1717l0 -13.359375l2.65625 0l3.15625 9.453125q0.4375 1.328125 0.640625 1.984375q0.234375 -0.734375 0.703125 -2.140625l3.2031288 -9.296875l2.375 0l0 13.359375l-1.703125 0l0 -11.171875l-3.8750038 11.171875l-1.59375 0l-3.859375 -11.375l0 11.375l-1.703125 0zm21.71268 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm4.000717 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm7.769821 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051788 -10.0l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457321 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.328125 2.359375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm3.5475922 1.96875l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm13.5625 1.421875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m126.40342 733.28265l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m52.79868 751.385l73.60474 0l0 1.6799927l-73.60474 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m47.096134 755.28265l85.00983 0l0 21.45288l-85.00983 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m48.627384 772.1717l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm10.489731 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0000038 0 3.2656288 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.3281288 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.2187538 0 2.0312538 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.0312538 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281971 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.009552 0l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004196 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.188217 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.493927 0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906967 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.4687424 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.6249924 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m132.10596 755.28265l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m47.096134 773.385l85.00983 0l0 1.6799927l-85.00983 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/multicast_forwarder.h?q%3Dmulticast%26ss%3Dpiper%252FGoogle%252Fchromeos_public:src%252Fplatform2%252Fpatchpanel%252F&sa=D&source=editors&ust=1638577908387000&usg=AOvVaw3KmT_wONhySwXI6hSr8WwW" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m52.79868 732.25165l73.60474 0l0 22.400024l-73.60474 0l0 -22.400024z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/multicast_forwarder.h?q%3Dmulticast%26ss%3Dpiper%252FGoogle%252Fchromeos_public:src%252Fplatform2%252Fpatchpanel%252F&sa=D&source=editors&ust=1638577908387000&usg=AOvVaw3KmT_wONhySwXI6hSr8WwW" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m47.096134 754.25165l85.00983 0l0 22.400024l-85.00983 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m179.40369 731.7644l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m179.40369 731.7644l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m204.14331 744.2836l86.04831 0l0 21.45282l-86.04831 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m204.11206 761.1726l5.125 -13.359375l1.90625 0l5.46875 13.359375l-2.015625 0l-1.546875 -4.046875l-5.59375 0l-1.46875 4.046875l-1.875 0zm3.859375 -5.484375l4.53125 0l-1.40625 -3.703125q-0.625 -1.6875 -0.9375 -2.765625q-0.265625 1.28125 -0.71875 2.546875l-1.46875 3.921875zm10.052948 5.484375l0 -13.359375l4.609375 0q1.546875 0 2.375 0.203125q1.140625 0.25 1.953125 0.953125q1.0625 0.890625 1.578125 2.28125q0.53125 1.390625 0.53125 3.171875q0 1.515625 -0.359375 2.703125q-0.359375 1.171875 -0.921875 1.9375q-0.546875 0.765625 -1.203125 1.21875q-0.65625 0.4375 -1.59375 0.671875q-0.9375 0.21875 -2.140625 0.21875l-4.828125 0zm1.765625 -1.578125l2.859375 0q1.3125 0 2.0625 -0.234375q0.75 -0.25 1.203125 -0.703125q0.625 -0.625 0.96875 -1.6875q0.359375 -1.0625 0.359375 -2.578125q0 -2.09375 -0.6875 -3.21875q-0.6875 -1.125 -1.671875 -1.5q-0.703125 -0.28125 -2.28125 -0.28125l-2.8125 0l0 10.203125zm11.629196 1.578125l0 -13.359375l5.015625 0q1.53125 0 2.453125 0.40625q0.921875 0.40625 1.4375 1.25q0.53125 0.84375 0.53125 1.765625q0 0.859375 -0.46875 1.625q-0.453125 0.75 -1.390625 1.203125q1.203125 0.359375 1.859375 1.21875q0.65625 0.859375 0.65625 2.015625q0 0.9375 -0.40625 1.75q-0.390625 0.796875 -0.984375 1.234375q-0.578125 0.4375 -1.453125 0.671875q-0.875 0.21875 -2.15625 0.21875l-5.09375 0zm1.78125 -7.75l2.875 0q1.1875 0 1.6875 -0.140625q0.671875 -0.203125 1.015625 -0.671875q0.34375 -0.46875 0.34375 -1.171875q0 -0.65625 -0.328125 -1.15625q-0.3125 -0.515625 -0.90625 -0.703125q-0.59375 -0.1875 -2.03125 -0.1875l-2.65625 0l0 4.03125zm0 6.171875l3.3125 0q0.859375 0 1.203125 -0.0625q0.609375 -0.109375 1.015625 -0.359375q0.421875 -0.265625 0.6875 -0.75q0.265625 -0.484375 0.265625 -1.125q0 -0.75 -0.390625 -1.296875q-0.375 -0.546875 -1.0625 -0.765625q-0.671875 -0.234375 -1.953125 -0.234375l-3.078125 0l0 4.59375zm10.740448 1.578125l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.459213 7.0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.618927 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.203827 4.84375l3.53125 -5.03125l-3.265625 -4.640625l2.046875 0l1.484375 2.265625q0.421875 0.640625 0.671875 1.078125q0.40625 -0.59375 0.734375 -1.0625l1.640625 -2.28125l1.953125 0l-3.34375 4.546875l3.59375 5.125l-2.015625 0l-1.984375 -3.0l-0.515625 -0.8125l-2.546875 3.8125l-1.984375 0zm10.34375 3.71875l-0.1875 -1.53125q0.546875 0.140625 0.9375 0.140625q0.546875 0 0.875 -0.1875q0.328125 -0.171875 0.546875 -0.5q0.15625 -0.25 0.5 -1.21875q0.046875 -0.140625 0.140625 -0.40625l-3.671875 -9.6875l1.765625 0l2.015625 5.59375q0.390625 1.078125 0.703125 2.25q0.28125 -1.125 0.671875 -2.203125l2.078125 -5.640625l1.640625 0l-3.6875 9.828125q-0.59375 1.609375 -0.921875 2.203125q-0.4375 0.8125 -1.0 1.1875q-0.5625 0.375 -1.34375 0.375q-0.484375 0 -1.0625 -0.203125z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m290.19162 744.2836l0 0l0 21.45282l0 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m204.14331 762.3859l86.04831 0l0 1.6799927l-86.04831 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/adb_proxy.h;l%3D28&sa=D&source=editors&ust=1638577908389000&usg=AOvVaw0gVT2WOXF8koo6WRO5yC4V" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m204.14331 743.2526l86.04831 0l0 22.399963l-86.04831 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m21.83727 789.13324l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.83727 789.13324l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m51.751087 790.65247l75.69992 0l0 21.45282l-75.69992 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m62.719837 802.85394l1.7656288 0.453125q-0.5625038 2.171875 -2.0000038 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.9062538 2.875l-1.7343788 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.1292 -0.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.625717 4.84375l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm4.047592 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm13.953842 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm8.230179 -1.640625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.572052 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m127.45101 790.65247l0 0l0 21.45282l0 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m51.751087 808.75476l75.69992 0l0 1.6799927l-75.69992 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m58.49667 812.65247l62.20876 0l0 21.45282l-62.20876 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m59.34042 825.24457l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625038 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.8281288 -0.453125 -2.5625038 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.4531288 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.6093788 0 -2.3437538 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.6562538 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125038 0 -3.0468788 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm19.459202 1.1875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.915802 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457321 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m120.70543 812.65247l0 0l0 21.45282l0 0l0 -21.45282z" fill-rule="nonzero"/><path fill="#000099" d="m58.49667 830.75476l62.20876 0l0 1.6799927l-62.20876 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/counters_service.h&sa=D&source=editors&ust=1638577908391000&usg=AOvVaw0YAbPUSZ8IkHfxKvVtjF2X" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m51.751087 789.62146l75.69992 0l0 22.399963l-75.69992 0l0 -22.399963z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/counters_service.h&sa=D&source=editors&ust=1638577908391000&usg=AOvVaw0YAbPUSZ8IkHfxKvVtjF2X" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m58.49667 811.62146l62.20876 0l0 22.399963l-62.20876 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m179.40369 789.13513l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m179.40369 789.13513l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m215.0155 790.6543l64.303925 0l0 21.45288l-64.303925 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m216.48425 807.54333l0 -13.359375l5.921875 0q1.78125 0 2.703125 0.359375q0.9375 0.359375 1.484375 1.28125q0.5625 0.90625 0.5625 2.015625q0 1.40625 -0.921875 2.390625q-0.921875 0.96875 -2.84375 1.234375q0.703125 0.34375 1.078125 0.671875q0.765625 0.703125 1.453125 1.765625l2.328125 3.640625l-2.21875 0l-1.765625 -2.78125q-0.78125 -1.203125 -1.28125 -1.828125q-0.5 -0.640625 -0.90625 -0.890625q-0.390625 -0.265625 -0.796875 -0.359375q-0.296875 -0.078125 -0.984375 -0.078125l-2.046875 0l0 5.9375l-1.765625 0zm1.765625 -7.453125l3.796875 0q1.21875 0 1.890625 -0.25q0.6875 -0.265625 1.046875 -0.8125q0.359375 -0.546875 0.359375 -1.1875q0 -0.953125 -0.6875 -1.5625q-0.6875 -0.609375 -2.1875 -0.609375l-4.21875 0l0 4.421875zm10.863571 2.609375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.625717 4.84375l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm7.625717 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051788 -10.0l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.144806 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.063232 0.796875l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m279.31943 790.6543l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m215.0155 808.75665l64.303925 0l0 1.6799927l-64.303925 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m216.0631 812.6543l62.208755 0l0 21.45288l-62.208755 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m216.90685 825.24646l1.65625 -0.140625q0.125 1.0 0.546875 1.640625q0.4375 0.640625 1.34375 1.046875q0.921875 0.390625 2.0625 0.390625q1.0 0 1.78125 -0.296875q0.78125 -0.296875 1.15625 -0.8125q0.375 -0.53125 0.375 -1.15625q0 -0.625 -0.375 -1.09375q-0.359375 -0.46875 -1.1875 -0.796875q-0.546875 -0.203125 -2.390625 -0.640625q-1.828125 -0.453125 -2.5625 -0.84375q-0.96875 -0.5 -1.4375 -1.234375q-0.46875 -0.75 -0.46875 -1.671875q0 -1.0 0.578125 -1.875q0.578125 -0.890625 1.671875 -1.34375q1.109375 -0.453125 2.453125 -0.453125q1.484375 0 2.609375 0.484375q1.140625 0.46875 1.75 1.40625q0.609375 0.921875 0.65625 2.09375l-1.6875 0.125q-0.140625 -1.265625 -0.9375 -1.90625q-0.78125 -0.65625 -2.3125 -0.65625q-1.609375 0 -2.34375 0.59375q-0.734375 0.59375 -0.734375 1.421875q0 0.71875 0.53125 1.171875q0.5 0.46875 2.65625 0.96875q2.15625 0.484375 2.953125 0.84375q1.171875 0.53125 1.71875 1.359375q0.5625 0.828125 0.5625 1.90625q0 1.0625 -0.609375 2.015625q-0.609375 0.9375 -1.75 1.46875q-1.140625 0.515625 -2.578125 0.515625q-1.8125 0 -3.046875 -0.53125q-1.21875 -0.53125 -1.921875 -1.59375q-0.6875 -1.0625 -0.71875 -2.40625zm19.459198 1.1875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125717 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm8.915802 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457306 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m278.27185 812.6543l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m216.0631 830.75665l62.208755 0l0 1.6799927l-62.208755 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/routing_service.h&sa=D&source=editors&ust=1638577908396000&usg=AOvVaw3mNpdQWHUGqgQAz3RILJEc" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m215.0155 789.62335l64.303925 0l0 22.399963l-64.303925 0l0 -22.399963z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/routing_service.h&sa=D&source=editors&ust=1638577908396000&usg=AOvVaw3mNpdQWHUGqgQAz3RILJEc" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m216.0631 811.62335l62.208755 0l0 22.399963l-62.208755 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#d9d9d9" d="m346.93045 1082.6642l0 0c0 -2.9195557 2.3666992 -5.286255 5.286194 -5.286255l98.71893 0c1.402008 0 2.7465515 0.55700684 3.737915 1.5483398c0.9913635 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286133 -5.286194 5.286133l-98.71893 0c-2.9194946 0 -5.286194 -2.3666992 -5.286194 -5.286133z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m346.93045 1082.6642l0 0c0 -2.9195557 2.3666992 -5.286255 5.286194 -5.286255l98.71893 0c1.402008 0 2.7465515 0.55700684 3.737915 1.5483398c0.9913635 0.991333 1.5482788 2.3359375 1.5482788 3.737915l0 21.144165c0 2.9194336 -2.3666992 5.286133 -5.286194 5.286133l-98.71893 0c-2.9194946 0 -5.286194 -2.3666992 -5.286194 -5.286133z" fill-rule="evenodd"/><path fill="#000000" d="m370.13275 1100.1562l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm9.806427 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051941 1.46875l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000702 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5582886 1.46875l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1917114 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.144806 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm10.375732 0l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0z" fill-rule="nonzero"/><path fill="#d9d9d9" d="m300.44504 1148.4199l202.36221 0l0 37.57483l-202.36221 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m300.44504 1148.4199l202.36221 0l0 37.57483l-202.36221 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m335.78268 1157.2383l131.68689 0l0 21.45288l-131.68689 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m337.25143 1174.1273l0 -13.359375l9.65625 0l0 1.578125l-7.875 0l0 4.09375l7.375 0l0 1.5625l-7.375 0l0 4.546875l8.1875 0l0 1.578125l-9.96875 0zm15.787323 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051941 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0zm17.000702 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000702 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm13.054108 1.46875l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm9.266327 4.828125l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm6.8323364 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125702 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.572052 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m467.46957 1157.2383l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m335.78268 1175.3407l131.68689 0l0 1.6799316l-131.68689 0l0 -1.6799316z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://go/cros-ethernet-status&sa=D&source=editors&ust=1638577908401000&usg=AOvVaw2fX3wgsR5SJmGKFQewWcOA" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m335.78268 1156.2074l131.68689 0l0 22.399902l-131.68689 0l0 -22.399902z" fill-rule="nonzero"/></a><path fill="#d9d9d9" d="m300.34647 1200.2257l202.36218 0l0 37.57483l-202.36218 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m300.34647 1200.2257l202.36218 0l0 37.57483l-202.36218 0z" fill-rule="evenodd"/><path fill="#000000" d="m350.24847 1225.9331l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.677948 7.0l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm10.677948 7.0l0 -13.359375l5.046875 0q1.328125 0 2.03125 0.125q0.96875 0.171875 1.640625 0.640625q0.671875 0.453125 1.078125 1.28125q0.40625 0.828125 0.40625 1.828125q0 1.703125 -1.09375 2.890625q-1.078125 1.171875 -3.921875 1.171875l-3.421875 0l0 5.421875l-1.765625 0zm1.765625 -7.0l3.453125 0q1.71875 0 2.4375 -0.640625q0.71875 -0.640625 0.71875 -1.796875q0 -0.84375 -0.421875 -1.4375q-0.421875 -0.59375 -1.125 -0.78125q-0.4375 -0.125 -1.640625 -0.125l-3.421875 0l0 4.78125zm21.586517 7.0l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.906982 1.71875l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm11.828827 5.765625l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm10.457336 -3.546875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm9.640625 0.4375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm8.485107 2.875l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#f6b26b" d="m442.48557 929.6273l148.85037 0l0 37.574768l-148.85037 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m442.48557 929.6273l148.85037 0l0 37.574768l-148.85037 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m459.8671 938.4457l114.08731 0l0 21.45288l-114.08731 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m463.78897 955.3347l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 3.703125l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.891327 4.78125l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm8.860107 3.703125l0 -1.1875l10.859375 0l0 1.1875l-10.859375 0zm11.891327 -3.703125l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.4531555 0 2.2187805 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.42190552 -0.265625 -0.9844055 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm21.853302 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.2038574 4.859375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm16.688232 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm3.8912964 5.65625l1.59375 0.234375q0.109375 0.75 0.5625 1.078125q0.609375 0.453125 1.671875 0.453125q1.140625 0 1.75 -0.453125q0.625 -0.453125 0.84375 -1.265625q0.125 -0.5 0.109375 -2.109375q-1.0625 1.265625 -2.671875 1.265625q-2.0 0 -3.09375 -1.4375q-1.09375 -1.4375 -1.09375 -3.453125q0 -1.390625 0.5 -2.5625q0.515625 -1.171875 1.453125 -1.796875q0.953125 -0.640625 2.25 -0.640625q1.703125 0 2.8125 1.375l0 -1.15625l1.515625 0l0 8.359375q0 2.265625 -0.46875 3.203125q-0.453125 0.9375 -1.453125 1.484375q-0.984375 0.546875 -2.453125 0.546875q-1.71875 0 -2.796875 -0.78125q-1.0625 -0.765625 -1.03125 -2.34375zm1.359375 -5.8125q0 1.90625 0.75 2.78125q0.765625 0.875 1.90625 0.875q1.125 0 1.890625 -0.859375q0.765625 -0.875 0.765625 -2.734375q0 -1.78125 -0.796875 -2.671875q-0.78125 -0.90625 -1.890625 -0.90625q-1.09375 0 -1.859375 0.890625q-0.765625 0.875 -0.765625 2.625zm15.953857 1.90625l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m573.9544 938.4457l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m459.8671 956.54803l114.08731 0l0 1.6799927l-114.08731 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/vpn-manager/&sa=D&source=editors&ust=1638577908405000&usg=AOvVaw29nBVuUvKpGgtY8klmLoQL" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m459.8671 937.4147l114.08731 0l0 22.400024l-114.08731 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m21.83727 846.50336l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m21.83727 846.50336l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m31.00421 859.0225l117.19368 0l0 21.45288l-117.19368 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m30.97296 875.9115l5.124998 -13.359375l1.90625 0l5.46875 13.359375l-2.015625 0l-1.546875 -4.046875l-5.59375 0l-1.46875 4.046875l-1.8749981 0zm3.859373 -5.484375l4.53125 0l-1.40625 -3.703125q-0.625 -1.6875 -0.9375 -2.765625q-0.265625 1.28125 -0.71875 2.546875l-1.46875 3.921875zm10.084198 5.484375l0 -13.359375l5.921875 0q1.78125 0 2.703125 0.359375q0.9375 0.359375 1.484375 1.28125q0.5625 0.90625 0.5625 2.015625q0 1.40625 -0.921875 2.390625q-0.921875 0.96875 -2.84375 1.234375q0.703125 0.34375 1.078125 0.671875q0.765625 0.703125 1.453125 1.765625l2.328125 3.640625l-2.21875 0l-1.765625 -2.78125q-0.78125 -1.203125 -1.28125 -1.828125q-0.5 -0.640625 -0.90625 -0.890625q-0.390625 -0.265625 -0.796875 -0.359375q-0.296875 -0.078125 -0.984375 -0.078125l-2.046875 0l0 5.9375l-1.765625 0zm1.765625 -7.453125l3.796875 0q1.21875 0 1.890625 -0.25q0.6875 -0.265625 1.046875 -0.8125q0.359375 -0.546875 0.359375 -1.1875q0 -0.953125 -0.6875 -1.5625q-0.6875 -0.609375 -2.1875 -0.609375l-4.21875 0l0 4.421875zm21.207325 2.765625l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.1562538 0 -3.5156288 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.2500038 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.5468788 0 -2.5781288 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.4843788 0 2.5156288 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm15.1875 4.6875l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.594467 3.640625q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.917679 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.203842 8.5625l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.203842 3.59375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051788 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m148.19789 859.0225l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m31.00421 877.1249l117.19368 0l0 1.6799927l-117.19368 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/arc_service.cc&sa=D&source=editors&ust=1638577908407000&usg=AOvVaw17_FBoPhwjcPMyT4rj__nw" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m31.00421 857.9915l117.19368 0l0 22.400024l-117.19368 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m179.4042 846.50336l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m179.4042 846.50336l135.52756 0l0 44.97638l-135.52756 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m217.11119 848.0225l60.11357 0l0 21.45288l-60.11357 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m224.65807 861.3646l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm3.0 3.546875l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.618927 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.641342 1.953125l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm12.671875 2.890625l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm6.640625 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m277.22476 848.0225l5.183319 0l0 21.45288l-5.183319 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m217.11119 866.1249l60.11357 0l0 1.6799927l-60.11357 0l0 -1.6799927z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m210.85753 870.0225l72.620895 0l0 21.45288l-72.620895 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m218.35753 886.9115l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm15.594467 3.640625q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm7.917679 0.28125q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.203842 8.5625l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4374847 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53123474 1.1875 -1.5468597 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm15.203842 3.59375q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781952 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6051941 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m283.47842 870.0225l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m210.85753 888.1249l72.620895 0l0 1.6799927l-72.620895 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/crostini_service.cc&sa=D&source=editors&ust=1638577908412000&usg=AOvVaw368D12PAiv9TC2m5vGYbiK" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m217.11119 846.9915l65.29689 0l0 22.400024l-65.29689 0l0 -22.400024z" fill-rule="nonzero"/></a><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/platform2/patchpanel/crostini_service.cc&sa=D&source=editors&ust=1638577908412000&usg=AOvVaw368D12PAiv9TC2m5vGYbiK" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m210.85753 868.9915l72.620895 0l0 22.400024l-72.620895 0l0 -22.400024z" fill-rule="nonzero"/></a><path fill="#f6b26b" d="m85.13386 932.13257l197.66931 0l0 79.1496l-197.66931 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m85.13386 932.13257l197.66931 0l0 79.1496l-197.66931 0z" fill-rule="evenodd"/><path fill="#000000" d="m143.72734 962.7557l0 -13.375l1.484375 0l0 1.25q0.53125 -0.734375 1.1875 -1.09375q0.671875 -0.375 1.625 -0.375q1.234375 0 2.171875 0.640625q0.953125 0.625 1.4375 1.796875q0.484375 1.15625 0.484375 2.546875q0 1.484375 -0.53125 2.671875q-0.53125 1.1875 -1.546875 1.828125q-1.015625 0.625 -2.140625 0.625q-0.8125 0 -1.46875 -0.34375q-0.65625 -0.34375 -1.0625 -0.875l0 4.703125l-1.640625 0zm1.484375 -8.484375q0 1.859375 0.75 2.765625q0.765625 0.890625 1.828125 0.890625q1.09375 0 1.875 -0.921875q0.78125 -0.9375 0.78125 -2.875q0 -1.84375 -0.765625 -2.765625q-0.75 -0.921875 -1.8125 -0.921875q-1.046875 0 -1.859375 0.984375q-0.796875 0.96875 -0.796875 2.84375zm8.844467 4.78125l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.504196 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm7.781967 3.390625l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.9958038 1.46875l0 -8.40625l-1.453125 0l0 -1.265625l1.453125 0l0 -1.03125q0 -0.96875 0.171875 -1.453125q0.234375 -0.640625 0.828125 -1.03125q0.59375 -0.390625 1.671875 -0.390625q0.6875 0 1.53125 0.15625l-0.25 1.4375q-0.5 -0.09375 -0.953125 -0.09375q-0.75 0 -1.0625 0.328125q-0.3125 0.3125 -0.3125 1.1875l0 0.890625l1.890625 0l0 1.265625l-1.890625 0l0 8.40625l-1.625 0zm4.183304 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.281967 4.84375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.228302 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm23.697052 -1.578125l0 1.578125l-8.828125 0q-0.015625 -0.59375 0.1875 -1.140625q0.34375 -0.90625 1.078125 -1.78125q0.75 -0.875 2.15625 -2.015625q2.171875 -1.78125 2.9375 -2.828125q0.765625 -1.046875 0.765625 -1.96875q0 -0.984375 -0.703125 -1.640625q-0.6875 -0.671875 -1.8125 -0.671875q-1.1875 0 -1.90625 0.71875q-0.703125 0.703125 -0.703125 1.953125l-1.6875 -0.171875q0.171875 -1.890625 1.296875 -2.875q1.140625 -0.984375 3.03125 -0.984375q1.921875 0 3.046875 1.0625q1.125 1.0625 1.125 2.640625q0 0.796875 -0.328125 1.578125q-0.328125 0.78125 -1.09375 1.640625q-0.75 0.84375 -2.53125 2.34375q-1.46875 1.234375 -1.890625 1.6875q-0.421875 0.4375 -0.6875 0.875l6.546875 0zm0.9851074 1.8125l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m138.8765 964.1635l90.18404 0l0 21.45288l-90.18404 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m149.09525 981.05255l-2.390625 0l0 -1.421875q-0.59375 0.828125 -1.40625 1.234375q-0.796875 0.40625 -1.609375 0.40625q-1.671875 0 -2.859375 -1.34375q-1.1875 -1.34375 -1.1875 -3.75q0 -2.453125 1.15625 -3.734375q1.15625 -1.28125 2.921875 -1.28125q1.625 0 2.8125 1.34375l0 -4.8125l2.5625 0l0 13.359375zm-6.84375 -5.046875q0 1.546875 0.4375 2.234375q0.609375 1.015625 1.71875 1.015625q0.890625 0 1.5 -0.75q0.625 -0.765625 0.625 -2.25q0 -1.671875 -0.609375 -2.40625q-0.59375 -0.734375 -1.53125 -0.734375q-0.90625 0 -1.53125 0.734375q-0.609375 0.71875 -0.609375 2.15625zm18.161606 5.046875l-2.5625 0l0 -4.9375q0 -1.5625 -0.171875 -2.015625q-0.15625 -0.46875 -0.53125 -0.71875q-0.359375 -0.265625 -0.875 -0.265625q-0.671875 0 -1.203125 0.375q-0.53125 0.359375 -0.734375 0.96875q-0.1875 0.59375 -0.1875 2.21875l0 4.375l-2.546875 0l0 -9.671875l2.375 0l0 1.421875q1.265625 -1.640625 3.1875 -1.640625q0.84375 0 1.546875 0.3125q0.703125 0.296875 1.0625 0.78125q0.359375 0.46875 0.5 1.078125q0.140625 0.59375 0.140625 1.703125l0 6.015625zm1.6928558 -2.765625l2.5625 -0.390625q0.171875 0.75 0.671875 1.140625q0.5 0.390625 1.40625 0.390625q0.984375 0 1.484375 -0.375q0.34375 -0.25 0.34375 -0.671875q0 -0.296875 -0.1875 -0.484375q-0.1875 -0.1875 -0.859375 -0.34375q-3.09375 -0.6875 -3.921875 -1.25q-1.140625 -0.78125 -1.140625 -2.171875q0 -1.265625 0.984375 -2.109375q1.0 -0.859375 3.078125 -0.859375q1.984375 0 2.953125 0.65625q0.96875 0.640625 1.328125 1.90625l-2.40625 0.4375q-0.15625 -0.5625 -0.59375 -0.859375q-0.421875 -0.296875 -1.234375 -0.296875q-1.0 0 -1.4375 0.28125q-0.296875 0.203125 -0.296875 0.515625q0 0.265625 0.25 0.46875q0.34375 0.25 2.390625 0.71875q2.046875 0.453125 2.859375 1.140625q0.796875 0.671875 0.796875 1.890625q0 1.34375 -1.109375 2.296875q-1.109375 0.953125 -3.28125 0.953125q-1.984375 0 -3.140625 -0.796875q-1.140625 -0.8125 -1.5 -2.1875zm10.985092 -0.796875l0 -2.5625l5.03125 0l0 2.5625l-5.03125 0zm6.431427 -6.109375l2.390625 0l0 1.421875q0.46875 -0.734375 1.25 -1.1875q0.796875 -0.453125 1.765625 -0.453125q1.6875 0 2.859375 1.328125q1.171875 1.3125 1.171875 3.671875q0 2.421875 -1.1875 3.765625q-1.1875 1.34375 -2.859375 1.34375q-0.8125 0 -1.46875 -0.3125q-0.640625 -0.328125 -1.359375 -1.09375l0 4.875l-2.5625 0l0 -13.359375zm2.53125 4.671875q0 1.625 0.640625 2.40625q0.65625 0.78125 1.578125 0.78125q0.90625 0 1.484375 -0.71875q0.59375 -0.71875 0.59375 -2.34375q0 -1.515625 -0.609375 -2.25q-0.609375 -0.75 -1.515625 -0.75q-0.9375 0 -1.5625 0.734375q-0.609375 0.71875 -0.609375 2.140625zm11.395981 5.0l-2.5625 0l0 -9.671875l2.375 0l0 1.375q0.609375 -0.984375 1.09375 -1.28125q0.484375 -0.3125 1.109375 -0.3125q0.875 0 1.6875 0.484375l-0.796875 2.234375q-0.640625 -0.421875 -1.203125 -0.421875q-0.53125 0 -0.90625 0.296875q-0.375 0.296875 -0.59375 1.078125q-0.203125 0.765625 -0.203125 3.234375l0 2.984375zm4.213394 -4.96875q0 -1.28125 0.625 -2.46875q0.625 -1.203125 1.78125 -1.828125q1.15625 -0.625 2.578125 -0.625q2.1875 0 3.59375 1.421875q1.40625 1.421875 1.40625 3.609375q0 2.1875 -1.421875 3.640625q-1.421875 1.4375 -3.5625 1.4375q-1.328125 0 -2.546875 -0.59375q-1.203125 -0.609375 -1.828125 -1.765625q-0.625 -1.171875 -0.625 -2.828125zm2.625 0.125q0 1.453125 0.671875 2.21875q0.6875 0.75 1.6875 0.75q1.0 0 1.671875 -0.75q0.6875 -0.765625 0.6875 -2.234375q0 -1.421875 -0.6875 -2.1875q-0.671875 -0.765625 -1.671875 -0.765625q-1.0 0 -1.6875 0.765625q-0.671875 0.765625 -0.671875 2.203125zm8.130356 4.84375l3.484375 -4.984375l-3.34375 -4.6875l3.125 0l1.7187653 2.65625l1.796875 -2.65625l3.015625 0l-3.28125 4.578125l3.578125 5.09375l-3.140625 0l-1.96875 -3.0l-1.9843903 3.0l-3.0 0zm10.391342 -9.671875l2.71875 0l2.328125 6.859375l2.25 -6.859375l2.65625 0l-3.421875 9.3125l-0.609375 1.6875q-0.328125 0.84375 -0.640625 1.28125q-0.3125 0.453125 -0.703125 0.71875q-0.390625 0.28125 -0.96875 0.4375q-0.578125 0.15625 -1.3125 0.15625q-0.734375 0 -1.453125 -0.15625l-0.21875 -2.0q0.59375 0.125 1.078125 0.125q0.890625 0 1.3125 -0.53125q0.4375 -0.515625 0.671875 -1.328125l-3.6875 -9.703125z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m229.06053 964.1635l0 0l0 21.45288l0 0l0 -21.45288z" fill-rule="nonzero"/><path fill="#000099" d="m138.8765 982.26587l90.18402 0l0 1.6799927l-90.18402 0l0 -1.6799927z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=http://cs/chromeos_public/src/platform2/dns-proxy/&sa=D&source=editors&ust=1638577908415000&usg=AOvVaw05VCZTJoPTgaCYwBYFBZj2" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m138.8765 963.13257l90.18402 0l0 22.399963l-90.18402 0l0 -22.399963z" fill-rule="nonzero"/></a><path fill="#4a4aff" d="m1051.8176 88.39772l202.45667 0l0 59.685043l-202.45667 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1051.8176 88.39772l202.45667 0l0 59.685043l-202.45667 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1086.2451 112.75772l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.953125 6.015625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm8.9921875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.7109375 1.265625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm3.5859375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.71875 -6.703125l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0zm8.609375 0l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0z" fill-rule="nonzero"/><defs><linearGradient id="p.11" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.676676705825558 0.0 0.0 14.676676705825558 0.0 0.0)" spreadMethod="pad" x1="118.92581205697938" y1="33.811077392713536" x2="108.54792943839362" y2="23.433004764225224"><stop offset="0.0" stop-color="#4a4aff"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.11)" d="m1480.3806 456.65878l225.48022 0l0 79.14963l-225.48022 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1480.3806 456.65878l225.48022 0l0 79.14963l-225.48022 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1526.8021 466.3932l132.6372 0l0 15.32605l-132.6372 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1532.1615 478.4588l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm11.365601 1.234375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm8.443726 4.125l-2.625 -6.90625l1.234375 0l1.484375 4.140625q0.234375 0.65625 0.4375 1.390625q0.15625 -0.546875 0.4375 -1.3125l1.53125 -4.21875l1.21875 0l-2.625 6.90625l-1.09375 0zm4.7578125 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm7.4611816 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm6.8828125 0.3125l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm5.6468506 4.28125l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm5.656128 -0.15625l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5079346 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.7030029 -2.40625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.2093506 0q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm9.209351 2.40625l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm1.1405029 1.046875l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm6.5374756 0.15625l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm5.656006 -0.15625l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5080566 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm5.9124756 4.125l0 -0.953125l4.390625 -5.046875q-0.75 0.03125 -1.3125 0.03125l-2.828125 0l0 -0.9375l5.65625 0l0 0.765625l-3.75 4.390625l-0.71875 0.796875q0.796875 -0.0625 1.484375 -0.0625l3.1875 0l0 1.015625l-6.109375 0z" fill-rule="nonzero"/><path fill="#000099" d="m1526.8021 479.32547l132.6372 0l0 1.1999817l-132.6372 0l0 -1.1999817z" fill-rule="nonzero"/><path fill="#ffffff" d="m1512.4567 497.0188l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm7.8046875 0l4.40625 -11.453125l1.640625 0l4.6875 11.453125l-1.734375 0l-1.328125 -3.46875l-4.796875 0l-1.25 3.46875l-1.625 0zm3.3125 -4.703125l3.890625 0l-1.203125 -3.171875q-0.546875 -1.453125 -0.8125 -2.375q-0.21875 1.09375 -0.609375 2.1875l-1.265625 3.359375zm13.828125 4.703125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm13.3671875 3.109375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 7.359375l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm10.6953125 2.84375l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.453125 0l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.0859375 4.953125l0 -1.140625l5.28125 -6.0625q-0.890625 0.046875 -1.578125 0.046875l-3.390625 0l0 -1.140625l6.78125 0l0 0.921875l-4.484375 5.265625l-0.875 0.96875q0.953125 -0.078125 1.78125 -0.078125l3.828125 0l0 1.21875l-7.34375 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m1516.0231 516.0188l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm9.0703125 0l0 -11.453125l3.953125 0q1.328125 0 2.03125 0.15625q0.984375 0.234375 1.6875 0.828125q0.90625 0.765625 1.34375 1.953125q0.453125 1.1875 0.453125 2.71875q0 1.3125 -0.3125 2.328125q-0.296875 1.0 -0.78125 1.65625q-0.46875 0.65625 -1.03125 1.046875q-0.5625 0.375 -1.375 0.578125q-0.796875 0.1875 -1.828125 0.1875l-4.140625 0zm1.515625 -1.359375l2.453125 0q1.125 0 1.765625 -0.203125q0.65625 -0.21875 1.03125 -0.59375q0.546875 -0.546875 0.84375 -1.453125q0.296875 -0.90625 0.296875 -2.203125q0 -1.796875 -0.59375 -2.765625q-0.578125 -0.96875 -1.421875 -1.296875q-0.609375 -0.234375 -1.96875 -0.234375l-2.40625 0l0 8.75zm15.5390625 -1.3125l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.1328125 4.953125l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm5.703125 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9609375 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm8.265625 0.375l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.9453125 4.953125l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.0859375 4.953125l0 -1.140625l5.28125 -6.0625q-0.890625 0.046875 -1.578125 0.046875l-3.390625 0l0 -1.140625l6.78125 0l0 0.921875l-4.484375 5.265625l-0.875 0.96875q0.953125 -0.078125 1.78125 -0.078125l3.828125 0l0 1.21875l-7.34375 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:device/bluetooth/bluez&sa=D&source=editors&ust=1638577908425000&usg=AOvVaw1FheNV4kZMYC4PNgKTxSYP" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1526.8021 465.65878l132.6372 0l0 16.0l-132.6372 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#4a4aff" d="m1525.0105 634.3768l0 0c0 -2.9194946 2.3666992 -5.286194 5.286255 -5.286194l125.64807 0c1.4019775 0 2.74646 0.55688477 3.737915 1.5482788c0.991333 0.991333 1.5482178 2.3358765 1.5482178 3.737915l0 21.144104c0 2.9194946 -2.3666992 5.286194 -5.286133 5.286194l-125.64807 0c-2.9195557 0 -5.286255 -2.3666992 -5.286255 -5.286194z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1525.0105 634.3768l0 0c0 -2.9194946 2.3666992 -5.286194 5.286255 -5.286194l125.64807 0c1.4019775 0 2.74646 0.55688477 3.737915 1.5482788c0.991333 0.991333 1.5482178 2.3358765 1.5482178 3.737915l0 21.144104c0 2.9194946 -2.3666992 5.286194 -5.286133 5.286194l-125.64807 0c-2.9195557 0 -5.286255 -2.3666992 -5.286255 -5.286194z" fill-rule="evenodd"/><path fill="#ffffff" d="m1574.6976 649.74884l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5080566 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm5.9124756 4.125l0 -0.953125l4.390625 -5.046875q-0.75 0.03125 -1.3125 0.03125l-2.828125 0l0 -0.9375l5.65625 0l0 0.765625l-3.75 4.390625l-0.71875 0.796875q0.796875 -0.0625 1.484375 -0.0625l3.1875 0l0 1.015625l-6.109375 0zm7.6015625 0l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm2.921753 -7.796875l0.296875 -0.921875q1.03125 0.375 1.5 0.640625q-0.125 -1.1875 -0.125 -1.625l0.9375 0q-0.015625 0.640625 -0.140625 1.609375q0.65625 -0.328125 1.53125 -0.625l0.296875 0.921875q-0.828125 0.28125 -1.625 0.375q0.40625 0.34375 1.125 1.21875l-0.78125 0.5625q-0.375 -0.515625 -0.890625 -1.40625q-0.484375 0.921875 -0.84375 1.40625l-0.765625 -0.5625q0.75 -0.921875 1.078125 -1.21875q-0.84375 -0.171875 -1.59375 -0.375z" fill-rule="nonzero"/><defs><linearGradient id="p.12" gradientUnits="userSpaceOnUse" gradientTransform="matrix(14.004211477023244 0.0 0.0 14.004211477023244 0.0 0.0)" spreadMethod="pad" x1="123.80396466675418" y1="41.32674835506461" x2="113.9015840124829" y2="31.424183209047992"><stop offset="0.0" stop-color="#4a4aff"/><stop offset="0.5" stop-color="#6d9eeb"/><stop offset="0.51" stop-color="#9fc5e8"/><stop offset="1.0" stop-color="#9fc5e8"/></linearGradient></defs><path fill="url(#p.12)" d="m1478.9108 556.2598l232.37793 0l0 44.97638l-232.37793 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1478.9108 556.2598l232.37793 0l0 44.97638l-232.37793 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1489.8933 565.99426l129.67603 0l0 15.32605l-129.67603 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1495.2527 578.0598l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm11.365601 1.234375l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm8.443726 4.125l-2.625 -6.90625l1.234375 0l1.484375 4.140625q0.234375 0.65625 0.4375 1.390625q0.15625 -0.546875 0.4375 -1.3125l1.53125 -4.21875l1.21875 0l-2.625 6.90625l-1.09375 0zm4.7578125 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm7.4611816 -2.53125l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm6.8828125 0.3125l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm5.6468506 4.28125l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm5.656006 -0.15625l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5080566 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.7030029 -2.40625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.2093506 0q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm9.209351 2.40625l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm1.1403809 1.046875l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm6.5374756 0.15625l2.765625 -9.859375l0.9375 0l-2.765625 9.859375l-0.9375 0zm9.062378 -0.15625l0 -0.875q-0.65625 1.03125 -1.9375 1.03125q-0.8125 0 -1.515625 -0.453125q-0.6875 -0.453125 -1.078125 -1.265625q-0.375 -0.828125 -0.375 -1.890625q0 -1.03125 0.34375 -1.875q0.34375 -0.84375 1.03125 -1.28125q0.703125 -0.453125 1.546875 -0.453125q0.625 0 1.109375 0.265625q0.5 0.25 0.796875 0.671875l0 -3.421875l1.171875 0l0 9.546875l-1.09375 0zm-3.703125 -3.453125q0 1.328125 0.5625 1.984375q0.5625 0.65625 1.328125 0.65625q0.765625 0 1.296875 -0.625q0.53125 -0.625 0.53125 -1.90625q0 -1.421875 -0.546875 -2.078125q-0.546875 -0.671875 -1.34375 -0.671875q-0.78125 0 -1.3125 0.640625q-0.515625 0.625 -0.515625 2.0zm7.7093506 3.453125l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm10.865601 3.5l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625z" fill-rule="nonzero"/><path fill="#000000" d="m1624.3036 578.0598l0 -9.546875l3.28125 0q1.109375 0 1.703125 0.140625q0.8125 0.1875 1.390625 0.6875q0.765625 0.640625 1.140625 1.640625q0.375 0.984375 0.375 2.25q0 1.09375 -0.265625 1.9375q-0.25 0.828125 -0.65625 1.390625q-0.390625 0.546875 -0.859375 0.859375q-0.46875 0.3125 -1.140625 0.484375q-0.65625 0.15625 -1.53125 0.15625l-3.4375 0zm1.265625 -1.125l2.03125 0q0.9375 0 1.46875 -0.171875q0.546875 -0.1875 0.875 -0.5q0.4375 -0.453125 0.6875 -1.203125q0.25 -0.765625 0.25 -1.84375q0 -1.5 -0.5 -2.296875q-0.484375 -0.8125 -1.1875 -1.078125q-0.5 -0.203125 -1.625 -0.203125l-2.0 0l0 7.296875zm8.296997 1.125l0 -9.546875l3.59375 0q1.09375 0 1.75 0.296875q0.65625 0.28125 1.03125 0.890625q0.375 0.609375 0.375 1.265625q0 0.609375 -0.34375 1.15625q-0.328125 0.53125 -0.984375 0.859375q0.859375 0.25 1.328125 0.875q0.46875 0.609375 0.46875 1.4375q0 0.671875 -0.296875 1.25q-0.28125 0.578125 -0.703125 0.890625q-0.40625 0.3125 -1.03125 0.46875q-0.625 0.15625 -1.546875 0.15625l-3.640625 0zm1.265625 -5.53125l2.0625 0q0.84375 0 1.203125 -0.109375q0.484375 -0.140625 0.71875 -0.46875q0.25 -0.34375 0.25 -0.84375q0 -0.46875 -0.234375 -0.828125q-0.21875 -0.359375 -0.640625 -0.5q-0.421875 -0.140625 -1.453125 -0.140625l-1.90625 0l0 2.890625zm0 4.40625l2.375 0q0.609375 0 0.859375 -0.046875q0.4375 -0.078125 0.734375 -0.25q0.296875 -0.1875 0.484375 -0.53125q0.1875 -0.359375 0.1875 -0.8125q0 -0.53125 -0.28125 -0.921875q-0.265625 -0.40625 -0.75 -0.5625q-0.484375 -0.15625 -1.40625 -0.15625l-2.203125 0l0 3.28125zm12.0616455 1.125l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm2.4124756 -2.0625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm17.78894 -1.28125l1.265625 0.3125q-0.390625 1.5625 -1.421875 2.375q-1.03125 0.8125 -2.53125 0.8125q-1.53125 0 -2.5 -0.625q-0.96875 -0.625 -1.484375 -1.8125q-0.5 -1.1875 -0.5 -2.5625q0 -1.484375 0.5625 -2.59375q0.578125 -1.109375 1.625 -1.6875q1.0625 -0.578125 2.328125 -0.578125q1.421875 0 2.390625 0.734375q0.984375 0.71875 1.375 2.046875l-1.25 0.296875q-0.328125 -1.046875 -0.96875 -1.515625q-0.625 -0.484375 -1.578125 -0.484375q-1.09375 0 -1.84375 0.53125q-0.734375 0.53125 -1.03125 1.421875q-0.296875 0.875 -0.296875 1.828125q0 1.21875 0.34375 2.125q0.359375 0.90625 1.109375 1.359375q0.75 0.4375 1.625 0.4375q1.0625 0 1.796875 -0.609375q0.734375 -0.609375 0.984375 -1.8125zm2.656372 3.34375l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm2.9924316 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm7.6798096 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.5218506 4.125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm9.974976 -1.046875l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.6717529 -1.015625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625z" fill-rule="nonzero"/><path fill="#000099" d="m1489.8933 578.9265l129.67603 0l0 1.2000122l-129.67603 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:device/bluetooth/dbus&sa=D&source=editors&ust=1638577908431000&usg=AOvVaw34LLFqKMJX0U3fwON_IxNW" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1489.8933 565.2598l129.67603 0l0 16.0l-129.67603 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#9fc5e8" d="m1445.042 301.05774l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1445.042 301.05774l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path fill="#000000" d="m1470.2968 325.41776l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0zm21.03125 -11.453125l1.515625 0l0 6.609375q0 1.734375 -0.390625 2.75q-0.390625 1.015625 -1.40625 1.65625q-1.015625 0.640625 -2.671875 0.640625q-1.609375 0 -2.640625 -0.5625q-1.015625 -0.5625 -1.453125 -1.609375q-0.4375 -1.046875 -0.4375 -2.875l0 -6.609375l1.515625 0l0 6.609375q0 1.484375 0.265625 2.203125q0.28125 0.703125 0.953125 1.09375q0.6875 0.375 1.65625 0.375q1.671875 0 2.375 -0.75q0.71875 -0.765625 0.71875 -2.921875l0 -6.609375zm4.3046875 11.453125l0 -11.453125l1.515625 0l0 11.453125l-1.515625 0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1600.1207 301.05774l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1600.1207 301.05774l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path fill="#000000" d="m1635.5981 325.41776l0 -11.453125l4.296875 0q1.3125 0 2.109375 0.34375q0.796875 0.34375 1.234375 1.078125q0.453125 0.71875 0.453125 1.5q0 0.734375 -0.40625 1.390625q-0.390625 0.640625 -1.1875 1.046875q1.03125 0.296875 1.59375 1.03125q0.5625 0.734375 0.5625 1.734375q0 0.8125 -0.34375 1.5q-0.34375 0.6875 -0.84375 1.0625q-0.5 0.375 -1.25 0.578125q-0.75 0.1875 -1.84375 0.1875l-4.375 0zm1.515625 -6.640625l2.484375 0q1.0 0 1.4375 -0.140625q0.578125 -0.171875 0.875 -0.5625q0.296875 -0.40625 0.296875 -1.0q0 -0.578125 -0.28125 -1.0q-0.265625 -0.4375 -0.78125 -0.59375q-0.5 -0.171875 -1.734375 -0.171875l-2.296875 0l0 3.46875zm0 5.28125l2.859375 0q0.734375 0 1.03125 -0.046875q0.515625 -0.09375 0.859375 -0.3125q0.359375 -0.21875 0.578125 -0.640625q0.234375 -0.421875 0.234375 -0.96875q0 -0.640625 -0.328125 -1.109375q-0.328125 -0.46875 -0.90625 -0.65625q-0.578125 -0.203125 -1.671875 -0.203125l-2.65625 0l0 3.9375zm9.015625 1.359375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.0234375 0l0 -1.21875q-0.96875 1.40625 -2.640625 1.40625q-0.734375 0 -1.375 -0.28125q-0.625 -0.28125 -0.9375 -0.703125q-0.3125 -0.4375 -0.4375 -1.046875q-0.078125 -0.421875 -0.078125 -1.3125l0 -5.140625l1.40625 0l0 4.59375q0 1.109375 0.078125 1.484375q0.140625 0.5625 0.5625 0.875q0.4375 0.3125 1.0625 0.3125q0.640625 0 1.1875 -0.3125q0.5625 -0.328125 0.78125 -0.890625q0.234375 -0.5625 0.234375 -1.625l0 -4.4375l1.40625 0l0 8.296875l-1.25 0zm9.1328125 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.4453125 0q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm11.0390625 2.890625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 1.265625l0 -11.453125l1.40625 0l0 4.109375q0.984375 -1.140625 2.484375 -1.140625q0.921875 0 1.59375 0.359375q0.6875 0.359375 0.96875 1.0q0.296875 0.640625 0.296875 1.859375l0 5.265625l-1.40625 0l0 -5.265625q0 -1.046875 -0.453125 -1.53125q-0.453125 -0.484375 -1.296875 -0.484375q-0.625 0 -1.171875 0.328125q-0.546875 0.328125 -0.78125 0.890625q-0.234375 0.546875 -0.234375 1.515625l0 4.546875l-1.40625 0z" fill-rule="nonzero"/><path fill="#000000" d="m1636.7192 341.74588l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm6.8984375 4.953125l3.03125 -4.3125l-2.8125 -3.984375l1.765625 0l1.265625 1.9375q0.359375 0.5625 0.578125 0.9375q0.34375 -0.515625 0.640625 -0.921875l1.390625 -1.953125l1.6875 0l-2.875 3.90625l3.09375 4.390625l-1.734375 0l-1.703125 -2.578125l-0.453125 -0.703125l-2.171875 3.28125l-1.703125 0zm12.0 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8359375 4.953125l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.5625 -7.359375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm3.0234375 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm8.3359375 -2.484375l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0z" fill-rule="nonzero"/><path fill="#b6d7a8" d="m1557.0092 88.39895l202.45667 0l0 59.685036l-202.45667 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1557.0092 88.39895l202.45667 0l0 59.685036l-202.45667 0z" fill-rule="evenodd"/><path fill="#000000" d="m1573.3743 109.07145l1.4375 -0.125q0.09375 0.859375 0.46875 1.421875q0.375 0.546875 1.15625 0.890625q0.78125 0.328125 1.75 0.328125q0.875 0 1.53125 -0.25q0.671875 -0.265625 0.984375 -0.703125q0.328125 -0.453125 0.328125 -0.984375q0 -0.546875 -0.3125 -0.9375q-0.3125 -0.40625 -1.03125 -0.6875q-0.453125 -0.171875 -2.03125 -0.546875q-1.578125 -0.390625 -2.21875 -0.71875q-0.8125 -0.4375 -1.21875 -1.0625q-0.40625 -0.640625 -0.40625 -1.4375q0 -0.859375 0.484375 -1.609375q0.5 -0.765625 1.4375 -1.15625q0.953125 -0.390625 2.109375 -0.390625q1.28125 0 2.25 0.421875q0.96875 0.40625 1.484375 1.203125q0.53125 0.796875 0.578125 1.796875l-1.453125 0.109375q-0.125 -1.078125 -0.796875 -1.625q-0.671875 -0.5625 -2.0 -0.5625q-1.375 0 -2.0 0.5q-0.625 0.5 -0.625 1.21875q0 0.609375 0.4375 1.015625q0.4375 0.390625 2.28125 0.8125q1.859375 0.421875 2.546875 0.734375q1.0 0.453125 1.46875 1.171875q0.484375 0.703125 0.484375 1.625q0 0.90625 -0.53125 1.71875q-0.515625 0.8125 -1.5 1.265625q-0.984375 0.453125 -2.203125 0.453125q-1.5625 0 -2.609375 -0.453125q-1.046875 -0.46875 -1.65625 -1.375q-0.59375 -0.90625 -0.625 -2.0625zm10.484375 -0.46875q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm8.3046875 4.15625l0 -7.203125l-1.234375 0l0 -1.09375l1.234375 0l0 -0.890625q0 -0.828125 0.15625 -1.234375q0.203125 -0.546875 0.703125 -0.890625q0.515625 -0.34375 1.4375 -0.34375q0.59375 0 1.3125 0.140625l-0.203125 1.234375q-0.4375 -0.078125 -0.828125 -0.078125q-0.640625 0 -0.90625 0.28125q-0.265625 0.265625 -0.265625 1.015625l0 0.765625l1.609375 0l0 1.09375l-1.609375 0l0 7.203125l-1.40625 0zm7.1796875 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm15.4296875 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5859375 4.171875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm11.015625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm8.2265625 -1.75l0 -1.59375l1.59375 0l0 1.59375l-1.59375 0zm0 6.703125l0 -1.609375l1.59375 0l0 1.609375l-1.59375 0zm16.84375 -4.015625l1.515625 0.375q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375 -0.609375 -3.078125q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.171875zm2.6796875 -0.140625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9765625 4.15625l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm13.328125 0l0 -8.296875l1.25 0l0 1.15625q0.390625 -0.609375 1.03125 -0.96875q0.65625 -0.375 1.484375 -0.375q0.921875 0 1.515625 0.390625q0.59375 0.375 0.828125 1.0625q0.984375 -1.453125 2.5625 -1.453125q1.234375 0 1.890625 0.6875q0.671875 0.671875 0.671875 2.09375l0 5.703125l-1.390625 0l0 -5.234375q0 -0.84375 -0.140625 -1.203125q-0.140625 -0.375 -0.5 -0.59375q-0.359375 -0.234375 -0.84375 -0.234375q-0.875 0 -1.453125 0.578125q-0.578125 0.578125 -0.578125 1.859375l0 4.828125l-1.40625 0l0 -5.390625q0 -0.9375 -0.34375 -1.40625q-0.34375 -0.46875 -1.125 -0.46875q-0.59375 0 -1.09375 0.3125q-0.5 0.3125 -0.734375 0.921875q-0.21875 0.59375 -0.21875 1.71875l0 4.3125l-1.40625 0zm19.0 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8203125 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm10.75 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.59375 -6.796875l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9609375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5703125 4.171875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm15.4375 -5.015625l-7.59375 3.25l0 -1.40625l6.015625 -2.484375l-6.015625 -2.46875l0 -1.40625l7.59375 3.203125l0 1.3125z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1597.3196 117.274574l121.83594 0l0 18.398445l-121.83594 0l0 -18.398445z" fill-rule="nonzero"/><path fill="#000099" d="m1606.7258 127.743324l1.515625 0.37500763q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375076 -0.609375 -3.0781326q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625076q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.1718826zm2.6796875 -0.140625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.5937576 -0.484375 2.5156326q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.2343826zm1.453125 0q0 1.5937576 0.6875 2.3906326q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375076q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.1562576l0 -8.296883l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.3437576l-1.40625 0zm11.015625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.1406326q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.3750076 0.765625 2.1093826q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.2812576l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm20.625 0.9375l1.515625 0.37500763q-0.46875 1.875 -1.71875 2.859375q-1.234375 0.984375 -3.015625 0.984375q-1.859375 0 -3.015625 -0.75q-1.15625 -0.765625 -1.765625 -2.1875q-0.609375 -1.4375076 -0.609375 -3.0781326q0 -1.796875 0.6875 -3.125q0.6875 -1.328125 1.9375 -2.015625q1.265625 -0.703125 2.78125 -0.703125q1.71875 0 2.890625 0.875q1.171875 0.875 1.640625 2.46875l-1.5 0.34375q-0.390625 -1.25 -1.15625 -1.8125q-0.75 -0.578125 -1.90625 -0.578125q-1.3125 0 -2.203125 0.640625q-0.890625 0.625 -1.25 1.703125q-0.359375 1.0625 -0.359375 2.1875q0 1.46875 0.421875 2.5625076q0.4375 1.078125 1.328125 1.625q0.90625 0.53125 1.953125 0.53125q1.265625 0 2.140625 -0.734375q0.890625 -0.734375 1.203125 -2.1718826zm8.6171875 2.9843826q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.5156326 0.71875 -0.8125076q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.8750076q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.1406326q-0.765625 0.3125 -2.296875 0.5312576q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.5156326zm3.6015625 7.3593826l0 -11.484383l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.2812576 -0.46875 2.2968826q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.2968826q0 1.6093826 0.640625 2.3750076q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.4531326q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm13.0390625 3.0781326q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.5156326 0.71875 -0.8125076q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.8750076q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.1406326q-0.765625 0.3125 -2.296875 0.5312576q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.5156326zm4.8984375 4.1718826l-1.3125 0l0 -11.453133l1.40625 0l0 4.078125q0.890625 -1.109375 2.28125 -1.109375q0.765625 0 1.4375 0.3125q0.6875 0.296875 1.125 0.859375q0.453125 0.5625 0.703125 1.359375q0.25 0.78125 0.25 1.671875q0 2.1406326 -1.0625 3.3125076q-1.046875 1.15625 -2.53125 1.15625q-1.46875 0 -2.296875 -1.234375l0 1.046875zm-0.015625 -4.2187576q0 1.5000076 0.40625 2.1562576q0.65625 1.09375 1.796875 1.09375q0.921875 0 1.59375 -0.796875q0.671875 -0.8125 0.671875 -2.3906326q0 -1.625 -0.65625 -2.390625q-0.640625 -0.78125 -1.546875 -0.78125q-0.921875 0 -1.59375 0.796875q-0.671875 0.796875 -0.671875 2.3125zm7.6171875 -5.625l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm3.5234375 0l0 -11.453133l1.40625 0l0 11.453133l-1.40625 0zm3.5859375 -9.843758l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm6.6171875 -1.265625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.7656326l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.8437576q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm1.3828125 -8.578133l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.843758l0 -8.296883l1.40625 0l0 8.296883l-1.40625 0zm9.2265625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.1406326q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.3750076 0.765625 2.1093826q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.2812576l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.4687576l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.39063263 -2.15625 -0.6718826q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.7343826q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0z" fill-rule="nonzero"/><path fill="#000000" fill-opacity="0.0" d="m1719.1555 117.274574l0 0l0 18.398445l0 0l0 -18.398445z" fill-rule="nonzero"/><path fill="#000099" d="m1597.3196 132.79895l121.83594 0l0 1.4400024l-121.83594 0l0 -1.4400024z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://moma.corp.google.com/team/1412950271243&sa=D&source=editors&ust=1638577908440000&usg=AOvVaw02UIGcrLQ6SEg9u4plFokz" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1597.3196 116.39895l121.83594 0l0 19.200005l-121.83594 0l0 -19.200005z" fill-rule="nonzero"/></a><path fill="#b6d7a8" d="m405.87665 349.05774l163.30707 0l0 131.18109l-163.30707 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m405.87665 349.05774l163.30707 0l0 131.18109l-163.30707 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m421.74112 358.93338l35.554688 0l0 18.398438l-35.554688 0l0 -18.398438z" fill-rule="nonzero"/><path fill="#000099" d="m422.44424 367.7615q0 -1.75 0.515625 -2.9375q0.390625 -0.875 1.0625 -1.5625q0.6875 -0.703125 1.484375 -1.046875q1.078125 -0.453125 2.46875 -0.453125q2.53125 0 4.046875 1.578125q1.53125 1.5625 1.53125 4.359375q0 2.78125 -1.515625 4.359375q-1.5 1.5625 -4.03125 1.5625q-2.546875 0 -4.0625 -1.5625q-1.5 -1.5625 -1.5 -4.296875zm2.375 -0.078125q0 1.9375 0.890625 2.953125q0.90625 1.0 2.296875 1.0q1.375 0 2.265625 -1.0q0.890625 -1.0 0.890625 -2.984375q0 -1.96875 -0.875 -2.9375q-0.859375 -0.96875 -2.28125 -0.96875q-1.4375 0 -2.3125 0.984375q-0.875 0.96875 -0.875 2.953125zm10.5546875 5.734375l0 -11.453125l2.25 0l4.6875 7.640625l0 -7.640625l2.15625 0l0 11.453125l-2.328125 0l-4.609375 -7.46875l0 7.46875l-2.15625 0zm18.867188 -4.21875l2.234375 0.71875q-0.515625 1.875 -1.71875 2.796875q-1.1875 0.90625 -3.03125 0.90625q-2.28125 0 -3.75 -1.5625q-1.46875 -1.5625 -1.46875 -4.265625q0 -2.859375 1.46875 -4.4375q1.484375 -1.59375 3.890625 -1.59375q2.09375 0 3.40625 1.25q0.78125 0.734375 1.171875 2.109375l-2.28125 0.546875q-0.203125 -0.890625 -0.859375 -1.40625q-0.640625 -0.515625 -1.5625 -0.515625q-1.265625 0 -2.0625 0.921875q-0.796875 0.90625 -0.796875 2.953125q0 2.171875 0.78125 3.09375q0.78125 0.921875 2.03125 0.921875q0.921875 0 1.578125 -0.578125q0.671875 -0.59375 0.96875 -1.859375z" fill-rule="nonzero"/><path fill="#000000" d="m462.913 373.41776l0 -11.453125l3.703125 0q2.109375 0 2.75 0.171875q0.984375 0.25 1.640625 1.125q0.671875 0.859375 0.671875 2.21875q0 1.0625 -0.390625 1.78125q-0.375 0.71875 -0.96875 1.125q-0.578125 0.40625 -1.1875 0.546875q-0.828125 0.15625 -2.40625 0.15625l-1.5 0l0 4.328125l-2.3125 0zm2.3125 -9.515625l0 3.25l1.265625 0q1.359375 0 1.8125 -0.171875q0.46875 -0.1875 0.734375 -0.5625q0.265625 -0.390625 0.265625 -0.90625q0 -0.625 -0.375 -1.03125q-0.359375 -0.40625 -0.921875 -0.5q-0.421875 -0.078125 -1.671875 -0.078125l-1.109375 0zm7.828125 5.25q0 -1.09375 0.53125 -2.109375q0.546875 -1.03125 1.53125 -1.5625q1.0 -0.546875 2.21875 -0.546875q1.875 0 3.078125 1.21875q1.203125 1.21875 1.203125 3.09375q0 1.875 -1.21875 3.125q-1.203125 1.234375 -3.046875 1.234375q-1.140625 0 -2.1875 -0.515625q-1.03125 -0.515625 -1.578125 -1.515625q-0.53125 -1.0 -0.53125 -2.421875zm2.25 0.109375q0 1.234375 0.578125 1.890625q0.59375 0.65625 1.453125 0.65625q0.859375 0 1.4375 -0.65625q0.59375 -0.65625 0.59375 -1.90625q0 -1.21875 -0.59375 -1.875q-0.578125 -0.65625 -1.4375 -0.65625q-0.859375 0 -1.453125 0.65625q-0.578125 0.65625 -0.578125 1.890625zm8.0390625 4.15625l0 -11.453125l2.1875 0l0 11.453125l-2.1875 0zm4.4453125 -9.421875l0 -2.03125l2.1875 0l0 2.03125l-2.1875 0zm0 9.421875l0 -8.296875l2.1875 0l0 8.296875l-2.1875 0zm11.6796875 -5.84375l-2.171875 0.390625q-0.109375 -0.65625 -0.5 -0.984375q-0.375 -0.328125 -1.0 -0.328125q-0.8125 0 -1.3125 0.578125q-0.484375 0.5625 -0.484375 1.890625q0 1.46875 0.5 2.078125q0.5 0.609375 1.328125 0.609375q0.625 0 1.015625 -0.34375q0.40625 -0.359375 0.578125 -1.234375l2.15625 0.375q-0.34375 1.484375 -1.296875 2.25q-0.953125 0.75 -2.546875 0.75q-1.828125 0 -2.90625 -1.140625q-1.078125 -1.15625 -1.078125 -3.1875q0 -2.0625 1.078125 -3.203125q1.09375 -1.140625 2.9375 -1.140625q1.515625 0 2.40625 0.65625q0.90625 0.640625 1.296875 1.984375zm0.6171875 -2.453125l2.34375 0l1.984375 5.890625l1.9375 -5.890625l2.265625 0l-2.921875 7.984375l-0.53125 1.453125q-0.28125 0.71875 -0.546875 1.09375q-0.265625 0.390625 -0.609375 0.625q-0.328125 0.25 -0.828125 0.375q-0.5 0.140625 -1.125 0.140625q-0.625 0 -1.234375 -0.140625l-0.203125 -1.71875q0.515625 0.109375 0.9375 0.109375q0.765625 0 1.125 -0.453125q0.375 -0.453125 0.5625 -1.140625l-3.15625 -8.328125zm21.734406 4.078125l2.234375 0.71875q-0.515625 1.875 -1.71875 2.796875q-1.1875 0.90625 -3.03125 0.90625q-2.28125 0 -3.75 -1.5625q-1.46875 -1.5625 -1.46875 -4.265625q0 -2.859375 1.46875 -4.4375q1.484375 -1.59375 3.890625 -1.59375q2.09375 0 3.40625 1.25q0.78125 0.734375 1.171875 2.109375l-2.28125 0.546875q-0.203125 -0.890625 -0.859375 -1.40625q-0.640625 -0.515625 -1.5625 -0.515625q-1.265625 0 -2.0625 0.921875q-0.796875 0.90625 -0.796875 2.953125q0 2.171875 0.78125 3.09375q0.78125 0.921875 2.03125 0.921875q0.921875 0 1.578125 -0.578125q0.671875 -0.59375 0.96875 -1.859375zm3.6953125 -0.046875q0 -1.09375 0.53125 -2.109375q0.546875 -1.03125 1.53125 -1.5625q1.0 -0.546875 2.21875 -0.546875q1.875 0 3.078125 1.21875q1.203064 1.21875 1.203064 3.09375q0 1.875 -1.218689 3.125q-1.203125 1.234375 -3.046875 1.234375q-1.140625 0 -2.1875 -0.515625q-1.03125 -0.515625 -1.578125 -1.515625q-0.53125 -1.0 -0.53125 -2.421875zm2.25 0.109375q0 1.234375 0.578125 1.890625q0.59375 0.65625 1.453125 0.65625q0.859375 0 1.4375 -0.65625q0.59375 -0.65625 0.59375 -1.90625q0 -1.21875 -0.59375 -1.875q-0.578125 -0.65625 -1.4375 -0.65625q-0.859375 0 -1.453125 0.65625q-0.578125 0.65625 -0.578125 1.890625zm15.648376 4.15625l-2.046875 0l0 -1.21875q-0.5 0.703125 -1.203125 1.0625q-0.6875 0.34375 -1.390625 0.34375q-1.421875 0 -2.453125 -1.15625q-1.015625 -1.15625 -1.015625 -3.21875q0 -2.109375 0.984375 -3.203125q1.0 -1.09375 2.515625 -1.09375q1.390625 0 2.40625 1.15625l0 -4.125l2.203125 0l0 11.453125zm-5.859375 -4.328125q0 1.328125 0.359375 1.921875q0.53125 0.859375 1.484375 0.859375q0.765625 0 1.296875 -0.640625q0.53125 -0.65625 0.53125 -1.9375q0 -1.421875 -0.515625 -2.046875q-0.515625 -0.640625 -1.328125 -0.640625q-0.78125 0 -1.3125 0.625q-0.515625 0.625 -0.515625 1.859375zm12.8203125 1.6875l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0z" fill-rule="nonzero"/><path fill="#000099" d="m421.74112 374.45773l35.554688 0l0 1.4400024l-35.554688 0l0 -1.4400024z" fill-rule="nonzero"/><path fill="#000000" d="m430.95206 411.41776l0 -11.453125l4.328125 0q1.140625 0 1.734375 0.109375q0.84375 0.140625 1.40625 0.53125q0.578125 0.390625 0.921875 1.109375q0.359375 0.703125 0.359375 1.5625q0 1.453125 -0.9375 2.46875q-0.921875 1.015625 -3.359375 1.015625l-2.9375 0l0 4.65625l-1.515625 0zm1.515625 -6.015625l2.96875 0q1.46875 0 2.078125 -0.546875q0.625 -0.546875 0.625 -1.53125q0 -0.71875 -0.375 -1.234375q-0.359375 -0.515625 -0.953125 -0.671875q-0.375 -0.109375 -1.40625 -0.109375l-2.9375 0l0 4.09375zm8.453125 1.859375q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9453125 4.15625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5859375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9609375 -3.046875l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.59375 -6.796875l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm9.2265625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.2734375 2.46875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm18.414062 1.453125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 7.359375l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.6328125 7.296875l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625305 0 1.8750305 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.8281555 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375305 0 1.6094055 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625305 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm7.601593 4.109375l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5859375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm9.2265625 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.210876 4.953125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.82806396 -0.546875 -1.296814 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.249939 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm8.3203125 4.140625l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0z" fill-rule="nonzero"/><path fill="#000000" d="m441.07315 430.41776l-3.15625 -8.296875l1.484375 0l1.78125 4.96875q0.296875 0.796875 0.53125 1.671875q0.1875 -0.65625 0.53125 -1.578125l1.84375 -5.0625l1.4375 0l-3.140625 8.296875l-1.3125 0zm11.109375 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.5703125 4.171875l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm3.5859375 -9.84375l0 -1.609375l1.40625 0l0 1.609375l-1.40625 0zm0 9.84375l0 -8.296875l1.40625 0l0 8.296875l-1.40625 0zm8.9296875 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm13.3671875 3.109375q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm6.6640625 2.90625l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm7.0546875 -1.40625l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2109375 4.953125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm8.3203125 4.140625l0 -1.609375l1.609375 0l0 1.609375q0 0.890625 -0.3125 1.421875q-0.3125 0.546875 -1.0 0.84375l-0.390625 -0.59375q0.453125 -0.203125 0.65625 -0.578125q0.21875 -0.375 0.234375 -1.09375l-0.796875 0zm13.9375305 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.1094055 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.7187805 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.3750305 -0.1875q0.1875 -0.875 0.6094055 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.640625 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.90625 0 -1.5625 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.273376 0l0 -1.046875q-0.78125 1.234375 -2.312439 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59368896 0.3125 0.95306396 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.437439 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.562439 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65618896 -0.796875 -1.624939 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875z" fill-rule="nonzero"/><path fill="#000000" d="m453.90128 452.60526l0 -11.484375l1.28125 0l0 1.078125q0.453125 -0.640625 1.015625 -0.953125q0.578125 -0.3125 1.390625 -0.3125q1.0625 0 1.875 0.546875q0.8125 0.546875 1.21875 1.546875q0.421875 0.984375 0.421875 2.171875q0 1.28125 -0.46875 2.296875q-0.453125 1.015625 -1.328125 1.5625q-0.859375 0.546875 -1.828125 0.546875q-0.703125 0 -1.265625 -0.296875q-0.546875 -0.296875 -0.90625 -0.75l0 4.046875l-1.40625 0zm1.265625 -7.296875q0 1.609375 0.640625 2.375q0.65625 0.765625 1.578125 0.765625q0.9375 0 1.609375 -0.796875q0.671875 -0.796875 0.671875 -2.453125q0 -1.59375 -0.65625 -2.375q-0.65625 -0.796875 -1.5625 -0.796875q-0.890625 0 -1.59375 0.84375q-0.6875 0.84375 -0.6875 2.4375zm13.0390625 3.078125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.0390625 1.6875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm8.0 0l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0zm14.234375 -0.1875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm13.2109375 4.953125l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm15.4687805 2.875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.7656555 0 -1.1875305 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.4062805 0l0 1.09375l-1.4062805 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.17190552 0.09375 0.48440552 0.09375q0.234375 0 0.609375 -0.0625zm0.8515625 -2.890625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375z" fill-rule="nonzero"/><path fill="#000000" d="m429.6122 468.41776l0 -11.453125l1.5625 0l6.015625 8.984375l0 -8.984375l1.453125 0l0 11.453125l-1.5625 0l-6.015625 -9.0l0 9.0l-1.453125 0zm17.070312 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359375 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.65625 0 2.703125 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.1875 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78125 0 1.328125 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609375 -2.28125l4.625 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734375 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm10.8984375 3.6875l0.203125 1.25q-0.59375 0.125 -1.0625 0.125q-0.765625 0 -1.1875 -0.234375q-0.421875 -0.25 -0.59375 -0.640625q-0.171875 -0.40625 -0.171875 -1.671875l0 -4.765625l-1.03125 0l0 -1.09375l1.03125 0l0 -2.0625l1.40625 -0.84375l0 2.90625l1.40625 0l0 1.09375l-1.40625 0l0 4.84375q0 0.609375 0.0625 0.78125q0.078125 0.171875 0.25 0.28125q0.171875 0.09375 0.484375 0.09375q0.234375 0 0.609375 -0.0625zm2.9140625 1.265625l-2.546875 -8.296875l1.453125 0l1.328125 4.78125l0.484375 1.78125q0.03125 -0.125 0.4375 -1.703125l1.3125 -4.859375l1.453125 0l1.234375 4.8125l0.421875 1.578125l0.46875 -1.59375l1.421875 -4.796875l1.375 0l-2.59375 8.296875l-1.46875 0l-1.3125 -4.96875l-0.328125 -1.421875l-1.671875 6.390625l-1.46875 0zm9.4921875 -4.15625q0 -2.296875 1.28125 -3.40625q1.078125 -0.921875 2.609375 -0.921875q1.71875 0 2.796875 1.125q1.09375 1.109375 1.09375 3.09375q0 1.59375 -0.484375 2.515625q-0.484375 0.921875 -1.40625 1.4375q-0.90625 0.5 -2.0 0.5q-1.734375 0 -2.8125 -1.109375q-1.078125 -1.125 -1.078125 -3.234375zm1.453125 0q0 1.59375 0.6875 2.390625q0.703125 0.796875 1.75 0.796875q1.046875 0 1.734375 -0.796875q0.703125 -0.796875 0.703125 -2.4375q0 -1.53125 -0.703125 -2.328125q-0.6875 -0.796875 -1.734375 -0.796875q-1.046875 0 -1.75 0.796875q-0.6875 0.78125 -0.6875 2.375zm7.9609375 4.15625l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm5.34375 0l0 -11.453125l1.40625 0l0 6.53125l3.328125 -3.375l1.828125 0l-3.171875 3.078125l3.484375 5.21875l-1.734375 0l-2.734375 -4.25l-1.0 0.953125l0 3.296875l-1.40625 0zm8.21875 0l0 -11.453125l1.515625 0l0 4.703125l5.953125 0l0 -4.703125l1.515625 0l0 11.453125l-1.515625 0l0 -5.40625l-5.953125 0l0 5.40625l-1.515625 0zm16.742188 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.6015625 4.171875l0 -8.296875l1.265625 0l0 1.171875q0.90625 -1.359375 2.6406555 -1.359375q0.75 0 1.375 0.265625q0.625 0.265625 0.9375 0.703125q0.3125 0.4375 0.4375 1.046875q0.078125 0.390625 0.078125 1.359375l0 5.109375l-1.40625 0l0 -5.046875q0 -0.859375 -0.171875 -1.28125q-0.15625 -0.4375 -0.578125 -0.6875q-0.40625 -0.25 -0.96875 -0.25q-0.9062805 0 -1.5625305 0.578125q-0.640625 0.5625 -0.640625 2.15625l0 4.53125l-1.40625 0zm14.273468 0l0 -1.046875q-0.78125 1.234375 -2.3125 1.234375q-1.0 0 -1.828125 -0.546875q-0.828125 -0.546875 -1.296875 -1.53125q-0.453125 -0.984375 -0.453125 -2.25q0 -1.25 0.40625 -2.25q0.421875 -1.015625 1.25 -1.546875q0.828125 -0.546875 1.859375 -0.546875q0.75 0 1.328125 0.3125q0.59375 0.3125 0.953125 0.828125l0 -4.109375l1.40625 0l0 11.453125l-1.3125 0zm-4.4375 -4.140625q0 1.59375 0.671875 2.390625q0.671875 0.78125 1.578125 0.78125q0.921875 0 1.5625 -0.75q0.65625 -0.765625 0.65625 -2.3125q0 -1.703125 -0.65625 -2.5q-0.65625 -0.796875 -1.625 -0.796875q-0.9375 0 -1.5625 0.765625q-0.625 0.765625 -0.625 2.421875zm7.9296875 4.140625l0 -11.453125l1.40625 0l0 11.453125l-1.40625 0zm9.257751 -2.671875l1.453125 0.171875q-0.34375 1.28125 -1.28125 1.984375q-0.921875 0.703125 -2.359314 0.703125q-1.828125 0 -2.890625 -1.125q-1.0625 -1.125 -1.0625 -3.140625q0 -2.09375 1.078125 -3.25q1.078125 -1.15625 2.796875 -1.15625q1.656189 0 2.703064 1.140625q1.0625 1.125 1.0625 3.171875q0 0.125 0 0.375l-6.187439 0q0.078125 1.375 0.765625 2.109375q0.703125 0.71875 1.734375 0.71875q0.78118896 0 1.328064 -0.40625q0.546875 -0.40625 0.859375 -1.296875zm-4.609314 -2.28125l4.624939 0q-0.09375 -1.046875 -0.53125 -1.5625q-0.671875 -0.8125 -1.734314 -0.8125q-0.96875 0 -1.640625 0.65625q-0.65625 0.640625 -0.71875 1.71875zm7.8202515 4.953125l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm4.8515625 0l0 -1.609375l1.609375 0l0 1.609375l-1.609375 0z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:components/onc/docs/onc_spec.md?q%3Donc_spec.md%26ss%3Dchromium&sa=D&source=editors&ust=1638577908448000&usg=AOvVaw2gP4DCQLjPpnEUVaYfcomF" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m421.74112 358.05774l35.554688 0l0 19.200012l-35.554688 0l0 -19.200012z" fill-rule="nonzero"/></a><path fill="#b6d7a8" d="m404.81628 492.5643l163.30707 0l0 54.141754l-163.30707 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m404.81628 492.5643l163.30707 0l0 54.141754l-163.30707 0z" fill-rule="evenodd"/><path fill="#000000" d="m423.3878 512.70557l2.234375 0.71875q-0.515625 1.875 -1.71875 2.796875q-1.1875 0.90625 -3.03125 0.90625q-2.28125 0 -3.75 -1.5625q-1.46875 -1.5625 -1.46875 -4.265625q0 -2.859375 1.46875 -4.4375q1.484375 -1.59375 3.890625 -1.59375q2.09375 0 3.40625 1.25q0.78125 0.734375 1.171875 2.109375l-2.28125 0.546875q-0.203125 -0.890625 -0.859375 -1.40625q-0.640625 -0.515625 -1.5625 -0.515625q-1.265625 0 -2.0625 0.921875q-0.796875 0.90625 -0.796875 2.953125q0 2.171875 0.78125 3.09375q0.78125 0.921875 2.03125 0.921875q0.921875 0 1.578125 -0.578125q0.671875 -0.59375 0.96875 -1.859375zm9.0078125 1.578125l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm6.0703125 4.859375l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625zm7.9296875 -8.296875l0 1.75l-1.5 0l0 3.34375q0 1.015625 0.046875 1.1875q0.046875 0.15625 0.1875 0.265625q0.15625 0.109375 0.375 0.109375q0.3125 0 0.890625 -0.203125l0.1875 1.703125q-0.765625 0.328125 -1.734375 0.328125q-0.59375 0 -1.078125 -0.203125q-0.46875 -0.203125 -0.703125 -0.515625q-0.21875 -0.3125 -0.296875 -0.859375q-0.078125 -0.375 -0.078125 -1.546875l0 -3.609375l-1.0 0l0 -1.75l1.0 0l0 -1.65625l2.203125 -1.28125l0 2.9375l1.5 0zm1.53125 -1.125l0 -2.03125l2.1875 0l0 2.03125l-2.1875 0zm0 9.421875l0 -8.296875l2.1875 0l0 8.296875l-2.1875 0zm3.4765625 -8.296875l1.21875 0l0 -0.625q0 -1.046875 0.21875 -1.5625q0.234375 -0.515625 0.828125 -0.84375q0.59375 -0.328125 1.515625 -0.328125q0.9375 0 1.828125 0.28125l-0.296875 1.53125q-0.515625 -0.125 -1.0 -0.125q-0.484375 0 -0.6875 0.234375q-0.203125 0.21875 -0.203125 0.84375l0 0.59375l1.640625 0l0 1.71875l-1.640625 0l0 6.578125l-2.203125 0l0 -6.578125l-1.21875 0l0 -1.71875zm6.296875 -1.125l0 -2.03125l2.1875 0l0 2.03125l-2.1875 0zm0 9.421875l0 -8.296875l2.1875 0l0 8.296875l-2.1875 0zm11.6796875 -5.84375l-2.171875 0.390625q-0.109375 -0.65625 -0.5 -0.984375q-0.375 -0.328125 -1.0 -0.328125q-0.8125 0 -1.3125 0.578125q-0.484375 0.5625 -0.484375 1.890625q0 1.46875 0.5 2.078125q0.5 0.609375 1.328125 0.609375q0.625 0 1.015625 -0.34375q0.40625 -0.359375 0.578125 -1.234375l2.15625 0.375q-0.34375 1.484375 -1.296875 2.25q-0.953125 0.75 -2.546875 0.75q-1.828125 0 -2.90625 -1.140625q-1.078125 -1.15625 -1.078125 -3.1875q0 -2.0625 1.078125 -3.203125q1.09375 -1.140625 2.9375 -1.140625q1.515625 0 2.40625 0.65625q0.90625 0.640625 1.296875 1.984375zm3.3046875 0.078125l-2.0 -0.359375q0.34375 -1.203125 1.15625 -1.78125q0.828125 -0.578125 2.4375 -0.578125q1.46875 0 2.1875 0.34375q0.71875 0.34375 1.015625 0.890625q0.296875 0.53125 0.296875 1.953125l-0.03125 2.5625q0 1.09375 0.109375 1.625q0.109375 0.515625 0.390625 1.109375l-2.171875 0q-0.078125 -0.21875 -0.203125 -0.65625q-0.0625 -0.1875 -0.078125 -0.25q-0.5625 0.546875 -1.203125 0.828125q-0.640625 0.265625 -1.375 0.265625q-1.28125 0 -2.015625 -0.6875q-0.734375 -0.703125 -0.734375 -1.765625q0 -0.703125 0.328125 -1.25q0.34375 -0.5625 0.9375 -0.84375q0.609375 -0.296875 1.75 -0.515625q1.546875 -0.296875 2.140625 -0.546875l0 -0.21875q0 -0.625 -0.3125 -0.890625q-0.3125 -0.28125 -1.1875 -0.28125q-0.578125 0 -0.90625 0.234375q-0.328125 0.234375 -0.53125 0.8125zm2.9375 1.78125q-0.421875 0.140625 -1.34375 0.34375q-0.90625 0.1875 -1.1875 0.375q-0.4375 0.296875 -0.4375 0.765625q0 0.46875 0.34375 0.8125q0.34375 0.328125 0.875 0.328125q0.59375 0 1.140625 -0.390625q0.390625 -0.296875 0.515625 -0.734375q0.09375 -0.28125 0.09375 -1.0625l0 -0.4375zm8.1171875 -4.3125l0 1.75l-1.5 0l0 3.34375q0 1.015625 0.046875 1.1875q0.046875 0.15625 0.1875 0.265625q0.15625 0.109375 0.375 0.109375q0.3125 0 0.890625 -0.203125l0.1875 1.703125q-0.765625 0.328125 -1.734375 0.328125q-0.59375 0 -1.078125 -0.203125q-0.46875 -0.203125 -0.703125 -0.515625q-0.21875 -0.3125 -0.296875 -0.859375q-0.078125 -0.375 -0.078125 -1.546875l0 -3.609375l-1.0 0l0 -1.75l1.0 0l0 -1.65625l2.203125 -1.28125l0 2.9375l1.5 0zm6.328125 5.65625l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm3.9921875 4.859375l0 -11.453125l3.703125 0q2.109375 0 2.75 0.171875q0.984375 0.25 1.640625 1.125q0.671875 0.859375 0.671875 2.21875q0 1.0625 -0.390625 1.78125q-0.375 0.71875 -0.96875 1.125q-0.578125 0.40625 -1.1875 0.546875q-0.828125 0.15625 -2.40625 0.15625l-1.5 0l0 4.328125l-2.3125 0zm2.3125 -9.515625l0 3.25l1.265625 0q1.359375 0 1.8125 -0.171875q0.46875 -0.1875 0.734375 -0.5625q0.265625 -0.390625 0.265625 -0.90625q0 -0.625 -0.375 -1.03125q-0.359375 -0.40625 -0.921875 -0.5q-0.421875 -0.078125 -1.671875 -0.078125l-1.109375 0zm10.4375 9.515625l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625zm3.6171875 -4.265625q0 -1.09375 0.53125 -2.109375q0.546875 -1.03125 1.5312195 -1.5625q1.0 -0.546875 2.21875 -0.546875q1.875 0 3.078125 1.21875q1.203125 1.21875 1.203125 3.09375q0 1.875 -1.21875 3.125q-1.203125 1.234375 -3.046875 1.234375q-1.140625 0 -2.1875 -0.515625q-1.0312195 -0.515625 -1.5780945 -1.515625q-0.53125 -1.0 -0.53125 -2.421875zm2.2499695 0.109375q0 1.234375 0.578125 1.890625q0.59375 0.65625 1.453125 0.65625q0.859375 0 1.4375 -0.65625q0.59375 -0.65625 0.59375 -1.90625q0 -1.21875 -0.59375 -1.875q-0.578125 -0.65625 -1.4375 -0.65625q-0.859375 0 -1.453125 0.65625q-0.578125 0.65625 -0.578125 1.890625zm10.3203125 4.15625l-3.34375 -8.296875l2.296875 0l1.5625 4.234375l0.453125 1.40625q0.1875 -0.53125 0.234375 -0.703125q0.109375 -0.359375 0.234375 -0.703125l1.578125 -4.234375l2.25 0l-3.296875 8.296875l-1.96875 0zm6.6171875 -9.421875l0 -2.03125l2.1875 0l0 2.03125l-2.1875 0zm0 9.421875l0 -8.296875l2.1875 0l0 8.296875l-2.1875 0zm12.0546875 0l-2.046875 0l0 -1.21875q-0.5 0.703125 -1.203125 1.0625q-0.6875 0.34375 -1.390625 0.34375q-1.421875 0 -2.453125 -1.15625q-1.015625 -1.15625 -1.015625 -3.21875q0 -2.109375 0.984375 -3.203125q1.0 -1.09375 2.515625 -1.09375q1.390625 0 2.40625 1.15625l0 -4.125l2.203125 0l0 11.453125zm-5.859375 -4.328125q0 1.328125 0.359375 1.921875q0.53125 0.859375 1.484375 0.859375q0.765625 0 1.296875 -0.640625q0.53125 -0.65625 0.53125 -1.9375q0 -1.421875 -0.515625 -2.046875q-0.515625 -0.640625 -1.328125 -0.640625q-0.78125 0 -1.3125 0.625q-0.515625 0.625 -0.515625 1.859375zm12.8203125 1.6875l2.1875 0.359375q-0.421875 1.203125 -1.328125 1.84375q-0.90625 0.625 -2.28125 0.625q-2.15625 0 -3.203125 -1.421875q-0.8125 -1.125 -0.8125 -2.859375q0 -2.0625 1.078125 -3.21875q1.078125 -1.171875 2.71875 -1.171875q1.859375 0 2.921875 1.21875q1.078125 1.21875 1.03125 3.75l-5.5 0q0.015625 0.96875 0.515625 1.515625q0.515625 0.546875 1.28125 0.546875q0.515625 0 0.859375 -0.28125q0.359375 -0.28125 0.53125 -0.90625zm0.125 -2.21875q-0.015625 -0.953125 -0.484375 -1.453125q-0.46875 -0.5 -1.140625 -0.5q-0.71875 0 -1.1875 0.53125q-0.46875 0.515625 -0.46875 1.421875l3.28125 0zm6.0703125 4.859375l-2.1875 0l0 -8.296875l2.03125 0l0 1.171875q0.53125 -0.828125 0.9375 -1.09375q0.421875 -0.265625 0.953125 -0.265625q0.75 0 1.453125 0.40625l-0.6875 1.921875q-0.546875 -0.359375 -1.03125 -0.359375q-0.453125 0 -0.78125 0.25q-0.3125 0.25 -0.5 0.921875q-0.1875 0.65625 -0.1875 2.78125l0 2.5625z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1472.627 404.8479l0 0c0 -3.4587402 2.803955 -6.2626038 6.2626953 -6.2626038l219.85266 0c1.6610107 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8343506 2.7673645 1.8343506 4.428314l0 25.049622c0 3.4587097 -2.803955 6.2625732 -6.2626953 6.2625732l-219.85266 0c-3.4587402 0 -6.2626953 -2.8038635 -6.2626953 -6.2625732z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1472.627 404.8479l0 0c0 -3.4587402 2.803955 -6.2626038 6.2626953 -6.2626038l219.85266 0c1.6610107 0 3.2539062 0.65982056 4.4283447 1.8342896c1.1744385 1.1744385 1.8343506 2.7673645 1.8343506 4.428314l0 25.049622c0 3.4587097 -2.803955 6.2625732 -6.2626953 6.2625732l-219.85266 0c-3.4587402 0 -6.2626953 -2.8038635 -6.2626953 -6.2625732z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1486.9481 410.15396l203.73572 0l0 15.32605l-203.73572 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1492.3387 419.6883l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm2.1484375 2.53125l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm7.3968506 0l0 -6.90625l1.0625 0l0 1.046875q0.40625 -0.734375 0.734375 -0.96875q0.34375 -0.234375 0.765625 -0.234375q0.59375 0 1.203125 0.375l-0.40625 1.078125q-0.4375 -0.25 -0.859375 -0.25q-0.390625 0 -0.703125 0.234375q-0.296875 0.234375 -0.421875 0.640625q-0.203125 0.625 -0.203125 1.359375l0 3.625l-1.171875 0zm4.0164795 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm15.836792 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm6.0843506 0.671875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.1781006 1.390625l1.15625 -0.1875q0.109375 0.703125 0.546875 1.078125q0.453125 0.359375 1.25 0.359375q0.8125 0 1.203125 -0.328125q0.390625 -0.328125 0.390625 -0.765625q0 -0.390625 -0.359375 -0.625q-0.234375 -0.15625 -1.1875 -0.390625q-1.296875 -0.328125 -1.796875 -0.5625q-0.484375 -0.25 -0.75 -0.65625q-0.25 -0.421875 -0.25 -0.9375q0 -0.453125 0.203125 -0.84375q0.21875 -0.40625 0.578125 -0.671875q0.28125 -0.1875 0.75 -0.328125q0.46875 -0.140625 1.015625 -0.140625q0.8125 0 1.421875 0.234375q0.609375 0.234375 0.90625 0.640625q0.296875 0.390625 0.40625 1.0625l-1.140625 0.15625q-0.078125 -0.53125 -0.453125 -0.828125q-0.375 -0.3125 -1.0625 -0.3125q-0.8125 0 -1.15625 0.265625q-0.34375 0.265625 -0.34375 0.625q0 0.234375 0.140625 0.421875q0.15625 0.1875 0.453125 0.3125q0.171875 0.0625 1.03125 0.296875q1.25 0.328125 1.734375 0.546875q0.5 0.203125 0.78125 0.609375q0.28125 0.40625 0.28125 1.0q0 0.59375 -0.34375 1.109375q-0.34375 0.515625 -1.0 0.796875q-0.640625 0.28125 -1.453125 0.28125q-1.34375 0 -2.046875 -0.5625q-0.703125 -0.5625 -0.90625 -1.65625zm7.4609375 2.0625l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm4.453003 0l-1.078125 0l0 -9.546875l1.171875 0l0 3.40625q0.734375 -0.921875 1.890625 -0.921875q0.640625 0 1.203125 0.265625q0.578125 0.25 0.9375 0.71875q0.375 0.453125 0.578125 1.109375q0.203125 0.65625 0.203125 1.40625q0 1.78125 -0.875 2.75q-0.875 0.96875 -2.109375 0.96875q-1.21875 0 -1.921875 -1.015625l0 0.859375zm0 -3.5q0 1.234375 0.328125 1.78125q0.5625 0.90625 1.5 0.90625q0.765625 0 1.328125 -0.65625q0.5625 -0.671875 0.5625 -2.0q0 -1.34375 -0.546875 -1.984375q-0.53125 -0.65625 -1.296875 -0.65625q-0.765625 0 -1.328125 0.671875q-0.546875 0.671875 -0.546875 1.9375zm6.3187256 3.5l0 -9.546875l1.171875 0l0 9.546875l-1.171875 0zm7.5080566 0l0 -1.015625q-0.8125 1.171875 -2.1875 1.171875q-0.609375 0 -1.140625 -0.234375q-0.53125 -0.234375 -0.796875 -0.578125q-0.25 -0.359375 -0.359375 -0.875q-0.0625 -0.34375 -0.0625 -1.09375l0 -4.28125l1.171875 0l0 3.828125q0 0.921875 0.0625 1.234375q0.109375 0.46875 0.46875 0.734375q0.359375 0.25 0.890625 0.25q0.515625 0 0.984375 -0.265625q0.46875 -0.265625 0.65625 -0.734375q0.1875 -0.46875 0.1875 -1.34375l0 -3.703125l1.171875 0l0 6.90625l-1.046875 0zm7.6156006 -2.21875l1.203125 0.140625q-0.28125 1.0625 -1.0625 1.65625q-0.765625 0.578125 -1.96875 0.578125q-1.515625 0 -2.40625 -0.9375q-0.890625 -0.9375 -0.890625 -2.609375q0 -1.75 0.890625 -2.703125q0.90625 -0.96875 2.34375 -0.96875q1.390625 0 2.265625 0.9375q0.875 0.9375 0.875 2.65625q0 0.109375 0 0.3125l-5.15625 0q0.0625 1.140625 0.640625 1.75q0.578125 0.59375 1.4375 0.59375q0.65625 0 1.109375 -0.328125q0.453125 -0.34375 0.71875 -1.078125zm-3.84375 -1.90625l3.859375 0q-0.078125 -0.859375 -0.4375 -1.296875q-0.5625 -0.6875 -1.453125 -0.6875q-0.8125 0 -1.359375 0.546875q-0.546875 0.53125 -0.609375 1.4375zm9.084351 3.078125l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm0.70288086 -2.40625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.2093506 0q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm9.209351 2.40625l0.171875 1.03125q-0.5 0.109375 -0.890625 0.109375q-0.640625 0 -1.0 -0.203125q-0.34375 -0.203125 -0.484375 -0.53125q-0.140625 -0.328125 -0.140625 -1.390625l0 -3.96875l-0.859375 0l0 -0.90625l0.859375 0l0 -1.71875l1.171875 -0.703125l0 2.421875l1.171875 0l0 0.90625l-1.171875 0l0 4.046875q0 0.5 0.046875 0.640625q0.0625 0.140625 0.203125 0.234375q0.140625 0.078125 0.40625 0.078125q0.203125 0 0.515625 -0.046875zm1.1405029 1.046875l0 -9.546875l1.171875 0l0 3.421875q0.828125 -0.9375 2.078125 -0.9375q0.765625 0 1.328125 0.296875q0.5625 0.296875 0.8125 0.84375q0.25 0.53125 0.25 1.546875l0 4.375l-1.171875 0l0 -4.375q0 -0.890625 -0.390625 -1.28125q-0.375 -0.40625 -1.078125 -0.40625q-0.515625 0 -0.984375 0.28125q-0.453125 0.265625 -0.65625 0.734375q-0.1875 0.453125 -0.1875 1.265625l0 3.78125l-1.171875 0zm6.3343506 2.65625l0 -0.859375l7.765625 0l0 0.859375l-7.765625 0zm13.006226 -5.1875l1.15625 0.15625q-0.1875 1.1875 -0.96875 1.859375q-0.78125 0.671875 -1.921875 0.671875q-1.40625 0 -2.28125 -0.921875q-0.859375 -0.9375 -0.859375 -2.65625q0 -1.125 0.375 -1.96875q0.375 -0.84375 1.125 -1.25q0.765625 -0.421875 1.65625 -0.421875q1.125 0 1.84375 0.578125q0.71875 0.5625 0.921875 1.609375l-1.140625 0.171875q-0.171875 -0.703125 -0.59375 -1.046875q-0.40625 -0.359375 -0.984375 -0.359375q-0.890625 0 -1.453125 0.640625q-0.546875 0.640625 -0.546875 2.0q0 1.40625 0.53125 2.03125q0.546875 0.625 1.40625 0.625q0.6875 0 1.140625 -0.421875q0.46875 -0.421875 0.59375 -1.296875zm1.7109375 -0.921875q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.0625 0l0 0.984375q0.75 -1.140625 2.1875 -1.140625q0.625 0 1.15625 0.21875q0.53125 0.21875 0.78125 0.59375q0.265625 0.359375 0.375 0.859375q0.0625 0.328125 0.0625 1.140625l0 4.25l-1.171875 0l0 -4.203125q0 -0.71875 -0.140625 -1.0625q-0.140625 -0.359375 -0.484375 -0.5625q-0.34375 -0.21875 -0.8125 -0.21875q-0.75 0 -1.296875 0.46875q-0.546875 0.46875 -0.546875 1.796875l0 3.78125l-1.171875 0zm7.6937256 0l0 -6.0l-1.03125 0l0 -0.90625l1.03125 0l0 -0.734375q0 -0.703125 0.125 -1.046875q0.171875 -0.453125 0.59375 -0.734375q0.421875 -0.28125 1.203125 -0.28125q0.484375 0 1.09375 0.109375l-0.1875 1.03125q-0.359375 -0.0625 -0.6875 -0.0625q-0.53125 0 -0.75 0.234375q-0.21875 0.21875 -0.21875 0.84375l0 0.640625l1.34375 0l0 0.90625l-1.34375 0l0 6.0l-1.171875 0zm3.437378 -8.1875l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm0 8.1875l0 -6.90625l1.171875 0l0 6.90625l-1.171875 0zm2.7266846 0.578125l1.140625 0.15625q0.078125 0.53125 0.40625 0.78125q0.4375 0.3125 1.1875 0.3125q0.8125 0 1.25 -0.328125q0.453125 -0.3125 0.609375 -0.90625q0.09375 -0.359375 0.078125 -1.5q-0.765625 0.90625 -1.90625 0.90625q-1.4375 0 -2.21875 -1.03125q-0.78125 -1.03125 -0.78125 -2.46875q0 -0.984375 0.359375 -1.8125q0.359375 -0.84375 1.03125 -1.296875q0.6875 -0.453125 1.609375 -0.453125q1.21875 0 2.015625 0.984375l0 -0.828125l1.078125 0l0 5.96875q0 1.609375 -0.328125 2.28125q-0.328125 0.6875 -1.046875 1.078125q-0.703125 0.390625 -1.75 0.390625q-1.234375 0 -2.0 -0.5625q-0.75 -0.5625 -0.734375 -1.671875zm0.984375 -4.15625q0 1.359375 0.53125 1.984375q0.546875 0.625 1.359375 0.625q0.796875 0 1.34375 -0.625q0.546875 -0.625 0.546875 -1.953125q0 -1.265625 -0.5625 -1.90625q-0.5625 -0.640625 -1.359375 -0.640625q-0.765625 0 -1.3125 0.640625q-0.546875 0.625 -0.546875 1.875zm6.9749756 3.578125l0 -1.328125l1.34375 0l0 1.328125l-1.34375 0zm3.374878 0l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0zm10.664917 -3.453125q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 -4.734375l0 -1.359375l1.171875 0l0 1.359375l-1.171875 0zm-1.484375 10.875l0.21875 -1.0q0.359375 0.09375 0.546875 0.09375q0.359375 0 0.53125 -0.25q0.1875 -0.234375 0.1875 -1.1875l0 -7.25l1.171875 0l0 7.28125q0 1.28125 -0.328125 1.78125q-0.4375 0.65625 -1.40625 0.65625q-0.484375 0 -0.921875 -0.125zm4.0080566 -6.140625q0 -1.921875 1.078125 -2.84375q0.890625 -0.765625 2.171875 -0.765625q1.421875 0 2.328125 0.9375q0.90625 0.921875 0.90625 2.578125q0 1.328125 -0.40625 2.09375q-0.390625 0.765625 -1.15625 1.1875q-0.765625 0.421875 -1.671875 0.421875q-1.453125 0 -2.359375 -0.921875q-0.890625 -0.9375 -0.890625 -2.6875zm1.203125 0q0 1.328125 0.578125 1.984375q0.59375 0.65625 1.46875 0.65625q0.875 0 1.453125 -0.65625q0.578125 -0.671875 0.578125 -2.03125q0 -1.28125 -0.59375 -1.9375q-0.578125 -0.65625 -1.4375 -0.65625q-0.875 0 -1.46875 0.65625q-0.578125 0.65625 -0.578125 1.984375zm6.6468506 3.453125l0 -6.90625l1.046875 0l0 0.96875q0.328125 -0.515625 0.859375 -0.8125q0.546875 -0.3125 1.234375 -0.3125q0.78125 0 1.265625 0.3125q0.484375 0.3125 0.6875 0.890625q0.828125 -1.203125 2.140625 -1.203125q1.03125 0 1.578125 0.578125q0.5625 0.5625 0.5625 1.734375l0 4.75l-1.171875 0l0 -4.359375q0 -0.703125 -0.125 -1.0q-0.109375 -0.3125 -0.40625 -0.5q-0.296875 -0.1875 -0.703125 -0.1875q-0.71875 0 -1.203125 0.484375q-0.484375 0.484375 -0.484375 1.546875l0 4.015625l-1.171875 0l0 -4.484375q0 -0.78125 -0.296875 -1.171875q-0.28125 -0.390625 -0.921875 -0.390625q-0.5 0 -0.921875 0.265625q-0.421875 0.25 -0.609375 0.75q-0.1875 0.5 -0.1875 1.453125l0 3.578125l-1.171875 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1690.6838 410.15396l0 0l0 15.32605l0 0l0 -15.32605z" fill-rule="nonzero"/><path fill="#000099" d="m1486.9481 423.0862l203.73572 0l0 1.2000122l-203.73572 0l0 -1.2000122z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.chromium.org/chromium/chromium/src/%2B/master:chromeos/services/bluetooth_config/public/mojom/cros_bluetooth_config.mojom;drc%3Df9be5b6a5e75d03f58a9c62fd3649fc7801b2a2e&sa=D&source=editors&ust=1638577908456000&usg=AOvVaw3uOJWnLrnW4k6VWbEkyM_B" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1486.9481 409.41956l203.73572 0l0 16.0l-203.73572 0l0 -16.0z" fill-rule="nonzero"/></a><path fill="#4a4aff" d="m1456.1392 674.9134l322.07874 0l0 347.65356l-322.07874 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1456.1392 674.9134l322.07874 0l0 347.65356l-322.07874 0z" fill-rule="evenodd"/><path fill="#000000" fill-opacity="0.0" d="m1585.1746 685.2268l64.00781 0l0 27.597656l-64.00781 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#ffffff" d="m1586.9402 689.76587l6.859375 0q2.046875 0 3.046875 0.171875q1.0 0.171875 1.78125 0.71875q0.796875 0.53125 1.328125 1.4375q0.53125 0.890625 0.53125 2.0q0 1.203125 -0.65625 2.21875q-0.65625 1.0 -1.765625 1.515625q1.578125 0.453125 2.421875 1.5625q0.84375 1.09375 0.84375 2.578125q0 1.171875 -0.546875 2.28125q-0.546875 1.109375 -1.5 1.78125q-0.9375 0.65625 -2.3125 0.796875q-0.875 0.09375 -4.1875 0.125l-5.84375 0l0 -17.1875zm3.46875 2.859375l0 3.984375l2.265625 0q2.03125 0 2.515625 -0.0625q0.890625 -0.109375 1.40625 -0.609375q0.515625 -0.515625 0.515625 -1.34375q0 -0.796875 -0.453125 -1.296875q-0.4375 -0.5 -1.296875 -0.609375q-0.515625 -0.0625 -2.96875 -0.0625l-1.984375 0zm0 6.84375l0 4.59375l3.203125 0q1.875 0 2.375 -0.109375q0.78125 -0.140625 1.265625 -0.6875q0.484375 -0.546875 0.484375 -1.453125q0 -0.78125 -0.375 -1.3125q-0.375 -0.546875 -1.09375 -0.78125q-0.703125 -0.25 -3.0625 -0.25l-2.796875 0zm13.816406 7.484375l0 -17.1875l3.296875 0l0 17.1875l-3.296875 0zm14.871094 0l0 -1.859375q-0.6875 0.984375 -1.796875 1.5625q-1.109375 0.578125 -2.328125 0.578125q-1.265625 0 -2.265625 -0.546875q-0.984375 -0.5625 -1.4375 -1.546875q-0.4375 -1.0 -0.4375 -2.765625l0 -7.875l3.296875 0l0 5.71875q0 2.625 0.171875 3.21875q0.1875 0.59375 0.65625 0.9375q0.484375 0.34375 1.234375 0.34375q0.84375 0 1.5 -0.453125q0.671875 -0.46875 0.921875 -1.15625q0.25 -0.6875 0.25 -3.359375l0 -5.25l3.28125 0l0 12.453125l-3.046875 0zm13.675781 -3.96875l3.28125 0.5625q-0.640625 1.796875 -2.015625 2.75q-1.359375 0.9375 -3.40625 0.9375q-3.25 0 -4.796875 -2.125q-1.234375 -1.703125 -1.234375 -4.28125q0 -3.09375 1.609375 -4.84375q1.625 -1.765625 4.09375 -1.765625q2.78125 0 4.375 1.84375q1.609375 1.828125 1.546875 5.609375l-8.25 0q0.03125 1.46875 0.796875 2.28125q0.765625 0.8125 1.890625 0.8125q0.78125 0 1.296875 -0.421875q0.53125 -0.421875 0.8125 -1.359375zm0.1875 -3.328125q-0.046875 -1.421875 -0.75 -2.15625q-0.703125 -0.75 -1.703125 -0.75q-1.078125 0 -1.78125 0.78125q-0.703125 0.78125 -0.6875 2.125l4.921875 0zm4.6289062 7.296875l0 -2.5625l4.65625 -5.359375q1.15625 -1.3125 1.703125 -1.859375q-0.578125 0.03125 -1.515625 0.046875l-4.390625 0.015625l0 -2.734375l10.28125 0l0 2.34375l-4.75 5.484375l-1.671875 1.8125q1.359375 -0.078125 1.6875 -0.078125l5.109375 0l0 2.890625l-11.109375 0z" fill-rule="nonzero"/><path fill="#010000" fill-opacity="0.0" d="m1649.1824 685.2268l0 0l0 27.597656l0 0l0 -27.597656z" fill-rule="nonzero"/><path fill="#ffffff" d="m1585.1746 708.51337l64.00781 0l0 2.1600342l-64.00781 0l0 -2.1600342z" fill-rule="nonzero"/><a xlink:href="https://www.google.com/url?q=https://source.corp.google.com/chromeos_public/src/third_party/bluez/&sa=D&source=editors&ust=1638577908458000&usg=AOvVaw2XcANOYvAC_PQRsMRV31ge" target="_blank" rel="noreferrer"><path fill="transparent" fill-opacity="0" d="m1585.1746 683.9134l64.00781 0l0 28.799988l-64.00781 0l0 -28.799988z" fill-rule="nonzero"/></a><path fill="#4a4aff" d="m1533.8398 1140.8188l197.66931 0l0 54.141724l-197.66931 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1533.8398 1140.8188l197.66931 0l0 54.141724l-197.66931 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1579.967 1167.7389l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm17.000732 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.37072754 1.703125l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0zm7.9177246 -0.234375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.844482 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519775 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm10.672607 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.9958496 -3.375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.68811 0q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm12.875732 3.375l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6052246 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#4a4aff" d="m1493.042 1291.8818l295.11816 0l0 79.14966l-295.11816 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1493.042 1291.8818l295.11816 0l0 79.14966l-295.11816 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1630.0406 1318.8019l0 -13.359375l5.015625 0q1.53125 0 2.453125 0.40625q0.921875 0.40625 1.4375 1.25q0.53125 0.84375 0.53125 1.765625q0 0.859375 -0.46875 1.625q-0.453125 0.75 -1.390625 1.203125q1.203125 0.359375 1.859375 1.21875q0.65625 0.859375 0.65625 2.015625q0 0.9375 -0.40625 1.75q-0.390625 0.796875 -0.984375 1.234375q-0.578125 0.4375 -1.453125 0.671875q-0.875 0.21875 -2.15625 0.21875l-5.09375 0zm1.78125 -7.75l2.875 0q1.1875 0 1.6875 -0.140625q0.671875 -0.203125 1.015625 -0.671875q0.34375 -0.46875 0.34375 -1.171875q0 -0.65625 -0.328125 -1.15625q-0.3125 -0.515625 -0.90625 -0.703125q-0.59375 -0.1875 -2.03125 -0.1875l-2.65625 0l0 4.03125zm0 6.171875l3.3125 0q0.859375 0 1.203125 -0.0625q0.609375 -0.109375 1.015625 -0.359375q0.421875 -0.265625 0.6875 -0.75q0.265625 -0.484375 0.265625 -1.125q0 -0.75 -0.390625 -1.296875q-0.375 -0.546875 -1.0625 -0.765625q-0.671875 -0.234375 -1.953125 -0.234375l-3.078125 0l0 4.59375zm14.1467285 1.578125l0 -11.78125l-4.40625 0l0 -1.578125l10.578125 0l0 1.578125l-4.40625 0l0 11.78125l-1.765625 0z" fill-rule="nonzero"/><path fill="#ffffff" d="m1556.8534 1344.7238q-1.359375 -1.703125 -2.296875 -4.0q-0.9375 -2.296875 -0.9375 -4.765625q0 -2.15625 0.703125 -4.140625q0.828125 -2.3125 2.53125 -4.59375l1.171875 0q-1.09375 1.890625 -1.453125 2.703125q-0.546875 1.25 -0.875 2.625q-0.390625 1.703125 -0.390625 3.421875q0 4.375 2.71875 8.75l-1.171875 0zm12.8220215 -8.609375l1.765625 0.453125q-0.5625 2.171875 -2.0 3.328125q-1.4375 1.140625 -3.53125 1.140625q-2.15625 0 -3.515625 -0.875q-1.34375 -0.890625 -2.0625 -2.546875q-0.703125 -1.671875 -0.703125 -3.59375q0 -2.078125 0.796875 -3.625q0.796875 -1.5625 2.265625 -2.359375q1.484375 -0.8125 3.25 -0.8125q2.0 0 3.359375 1.015625q1.375 1.015625 1.90625 2.875l-1.734375 0.40625q-0.46875 -1.453125 -1.359375 -2.109375q-0.875 -0.671875 -2.203125 -0.671875q-1.546875 0 -2.578125 0.734375q-1.03125 0.734375 -1.453125 1.984375q-0.421875 1.234375 -0.421875 2.5625q0 1.703125 0.5 2.96875q0.5 1.265625 1.546875 1.90625q1.046875 0.625 2.265625 0.625q1.484375 0 2.515625 -0.859375q1.03125 -0.859375 1.390625 -2.546875zm3.1291504 -0.15625q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.297607 4.84375l0 -9.671875l1.46875 0l0 1.375q1.0625 -1.59375 3.078125 -1.59375q0.875 0 1.609375 0.3125q0.734375 0.3125 1.09375 0.828125q0.375 0.5 0.515625 1.203125q0.09375 0.453125 0.09375 1.59375l0 5.953125l-1.640625 0l0 -5.890625q0 -1.0 -0.203125 -1.484375q-0.1875 -0.5 -0.671875 -0.796875q-0.484375 -0.296875 -1.140625 -0.296875q-1.046875 0 -1.8125 0.671875q-0.75 0.65625 -0.75 2.515625l0 5.28125l-1.640625 0zm13.953857 -1.46875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.5895996 1.46875l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.6188965 -4.84375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm9.250732 4.84375l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm4.1447754 0l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.816772 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm11.708374 0l0 -13.359375l9.015625 0l0 1.578125l-7.25 0l0 4.140625l6.265625 0l0 1.578125l-6.265625 0l0 6.0625l-1.765625 0zm11.099121 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm4.1292725 0l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 0l0 -9.671875l1.46875 0l0 1.359375q0.453125 -0.71875 1.203125 -1.140625q0.765625 -0.4375 1.71875 -0.4375q1.078125 0 1.765625 0.453125q0.6875 0.4375 0.96875 1.234375q1.15625 -1.6875 2.984375 -1.6875q1.453125 0 2.21875 0.796875q0.78125 0.796875 0.78125 2.453125l0 6.640625l-1.640625 0l0 -6.09375q0 -0.984375 -0.15625 -1.40625q-0.15625 -0.4375 -0.578125 -0.703125q-0.421875 -0.265625 -0.984375 -0.265625q-1.015625 0 -1.6875 0.6875q-0.671875 0.671875 -0.671875 2.15625l0 5.625l-1.640625 0l0 -6.28125q0 -1.09375 -0.40625 -1.640625q-0.40625 -0.546875 -1.3125 -0.546875q-0.6875 0 -1.28125 0.359375q-0.59375 0.359375 -0.859375 1.0625q-0.25 0.703125 -0.25 2.03125l0 5.015625l-1.640625 0zm17.322021 0l-2.96875 -9.671875l1.703125 0l1.53125 5.578125l0.578125 2.078125q0.046875 -0.15625 0.5 -2.0l1.546875 -5.65625l1.6875 0l1.4375 5.609375l0.484375 1.84375l0.5625 -1.859375l1.65625 -5.59375l1.59375 0l-3.03125 9.671875l-1.703125 0l-1.53125 -5.796875l-0.375 -1.640625l-1.953125 7.4375l-1.71875 0zm18.004272 -1.1875q-0.921875 0.765625 -1.765625 1.09375q-0.828125 0.3125 -1.796875 0.3125q-1.59375 0 -2.453125 -0.78125q-0.859375 -0.78125 -0.859375 -1.984375q0 -0.71875 0.328125 -1.296875q0.328125 -0.59375 0.84375 -0.9375q0.53125 -0.359375 1.1875 -0.546875q0.46875 -0.125 1.453125 -0.25q1.984375 -0.234375 2.921875 -0.5625q0.015625 -0.34375 0.015625 -0.421875q0 -1.0 -0.46875 -1.421875q-0.625 -0.546875 -1.875 -0.546875q-1.15625 0 -1.703125 0.40625q-0.546875 0.40625 -0.8125 1.421875l-1.609375 -0.21875q0.21875 -1.015625 0.71875 -1.640625q0.5 -0.640625 1.453125 -0.984375q0.953125 -0.34375 2.1875 -0.34375q1.25 0 2.015625 0.296875q0.78125 0.28125 1.140625 0.734375q0.375 0.4375 0.515625 1.109375q0.078125 0.421875 0.078125 1.515625l0 2.1875q0 2.28125 0.109375 2.890625q0.109375 0.59375 0.40625 1.15625l-1.703125 0q-0.265625 -0.515625 -0.328125 -1.1875zm-0.140625 -3.671875q-0.890625 0.375 -2.671875 0.625q-1.015625 0.140625 -1.4375 0.328125q-0.421875 0.1875 -0.65625 0.53125q-0.21875 0.34375 -0.21875 0.78125q0 0.65625 0.5 1.09375q0.5 0.4375 1.453125 0.4375q0.9375 0 1.671875 -0.40625q0.75 -0.421875 1.09375 -1.140625q0.265625 -0.5625 0.265625 -1.640625l0 -0.609375zm4.1881104 4.859375l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm12.853394 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm10.219482 9.6875l-1.1875 0q2.734375 -4.375 2.734375 -8.75q0 -1.71875 -0.390625 -3.390625q-0.3125 -1.375 -0.875 -2.625q-0.359375 -0.828125 -1.46875 -2.734375l1.1875 0q1.703125 2.28125 2.53125 4.59375q0.6875 1.984375 0.6875 4.140625q0 2.46875 -0.9375 4.765625q-0.9375 2.296875 -2.28125 4.0z" fill-rule="nonzero"/><path fill="#4a4aff" d="m1472.1392 754.09186l287.3385 0l0 247.62207l-287.3385 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1472.1392 754.09186l287.3385 0l0 247.62207l-287.3385 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1563.2888 786.13184l-1.953125 0l0 -17.1875l2.109375 0l0 6.140625q1.328125 -1.6875 3.40625 -1.6875q1.140625 0 2.171875 0.46875q1.03125 0.46875 1.6875 1.3125q0.65625 0.828125 1.03125 2.015625q0.375 1.171875 0.375 2.53125q0 3.1875 -1.578125 4.9375q-1.578125 1.75 -3.796875 1.75q-2.203125 0 -3.453125 -1.84375l0 1.5625zm-0.03125 -6.3125q0 2.234375 0.609375 3.234375q1.0 1.625 2.703125 1.625q1.375 0 2.375 -1.203125q1.015625 -1.203125 1.015625 -3.578125q0 -2.4375 -0.96875 -3.59375q-0.953125 -1.171875 -2.328125 -1.171875q-1.390625 0 -2.40625 1.203125q-1.0 1.203125 -1.0 3.484375zm11.378906 6.3125l0 -17.1875l2.109375 0l0 17.1875l-2.109375 0zm13.535156 0l0 -1.828125q-1.453125 2.109375 -3.9375 2.109375q-1.109375 0 -2.0625 -0.421875q-0.953125 -0.421875 -1.421875 -1.0625q-0.453125 -0.640625 -0.640625 -1.5625q-0.140625 -0.625 -0.140625 -1.96875l0 -7.71875l2.109375 0l0 6.90625q0 1.65625 0.140625 2.234375q0.1875 0.828125 0.828125 1.3125q0.65625 0.46875 1.609375 0.46875q0.9375 0 1.765625 -0.484375q0.84375 -0.5 1.1875 -1.328125q0.34375 -0.84375 0.34375 -2.4375l0 -6.671875l2.109375 0l0 12.453125l-1.890625 0zm13.722656 -4.015625l2.171875 0.28125q-0.515625 1.90625 -1.90625 2.96875q-1.390625 1.046875 -3.5625 1.046875q-2.734375 0 -4.34375 -1.671875q-1.59375 -1.6875 -1.59375 -4.734375q0 -3.140625 1.609375 -4.875q1.625 -1.734375 4.203125 -1.734375q2.5 0 4.078125 1.703125q1.59375 1.703125 1.59375 4.78125q0 0.1875 -0.015625 0.5625l-9.28125 0q0.109375 2.046875 1.15625 3.140625q1.046875 1.09375 2.609375 1.09375q1.15625 0 1.96875 -0.609375q0.828125 -0.609375 1.3125 -1.953125zm-6.9375 -3.40625l6.953125 0q-0.140625 -1.5625 -0.796875 -2.359375q-1.0 -1.21875 -2.609375 -1.21875q-1.453125 0 -2.453125 0.984375q-0.984375 0.96875 -1.09375 2.59375zm16.363281 5.53125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm1.2773438 -4.328125q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm11.175781 0q0 -3.46875 1.921875 -5.125q1.609375 -1.390625 3.921875 -1.390625q2.5625 0 4.1875 1.6875q1.625 1.6875 1.625 4.640625q0 2.40625 -0.71875 3.78125q-0.71875 1.375 -2.09375 2.140625q-1.375 0.765625 -3.0 0.765625q-2.625 0 -4.234375 -1.671875q-1.609375 -1.6875 -1.609375 -4.828125zm2.171875 0q0 2.390625 1.03125 3.578125q1.046875 1.1875 2.640625 1.1875q1.5625 0 2.609375 -1.1875q1.046875 -1.203125 1.046875 -3.65625q0 -2.3125 -1.0625 -3.5q-1.046875 -1.1875 -2.59375 -1.1875q-1.59375 0 -2.640625 1.1875q-1.03125 1.1875 -1.03125 3.578125zm16.566406 4.328125l0.3125 1.859375q-0.890625 0.203125 -1.59375 0.203125q-1.15625 0 -1.796875 -0.359375q-0.625 -0.375 -0.890625 -0.96875q-0.25 -0.59375 -0.25 -2.484375l0 -7.171875l-1.546875 0l0 -1.640625l1.546875 0l0 -3.078125l2.09375 -1.265625l0 4.34375l2.125 0l0 1.640625l-2.125 0l0 7.28125q0 0.90625 0.109375 1.171875q0.125 0.25 0.375 0.40625q0.25 0.140625 0.71875 0.140625q0.34375 0 0.921875 -0.078125zm2.0585938 1.890625l0 -17.1875l2.109375 0l0 6.171875q1.484375 -1.71875 3.734375 -1.71875q1.375 0 2.390625 0.546875q1.03125 0.546875 1.46875 1.515625q0.4375 0.953125 0.4375 2.78125l0 7.890625l-2.109375 0l0 -7.890625q0 -1.578125 -0.6875 -2.296875q-0.6875 -0.71875 -1.9375 -0.71875q-0.9375 0 -1.765625 0.484375q-0.828125 0.484375 -1.1875 1.3125q-0.34375 0.828125 -0.34375 2.296875l0 6.8125l-2.109375 0zm21.425781 0l0 -1.578125q-1.1875 1.859375 -3.484375 1.859375q-1.484375 0 -2.734375 -0.8125q-1.25 -0.828125 -1.9375 -2.296875q-0.671875 -1.46875 -0.671875 -3.390625q0 -1.859375 0.609375 -3.375q0.625 -1.515625 1.859375 -2.328125q1.25 -0.8125 2.78125 -0.8125q1.125 0 2.0 0.484375q0.890625 0.46875 1.4375 1.234375l0 -6.171875l2.09375 0l0 17.1875l-1.953125 0zm-6.671875 -6.21875q0 2.390625 1.0 3.578125q1.015625 1.1875 2.390625 1.1875q1.390625 0 2.34375 -1.125q0.96875 -1.140625 0.96875 -3.453125q0 -2.5625 -0.984375 -3.75q-0.984375 -1.203125 -2.421875 -1.203125q-1.40625 0 -2.359375 1.15625q-0.9375 1.140625 -0.9375 3.609375z" fill-rule="nonzero"/><path fill="#d9d9d9" d="m1665.2179 1067.0526l0 0c0 -2.9195557 -2.3666992 -5.286255 -5.286255 -5.286255l-117.837036 0c-1.4019775 0 -2.746582 0.55700684 -3.737915 1.5483398c-0.991333 0.991333 -1.5483398 2.3359375 -1.5483398 3.737915l0 21.144165c0 2.9194336 2.3666992 5.286133 5.286255 5.286133l117.837036 0c2.9195557 0 5.286255 -2.3666992 5.286255 -5.286133z" fill-rule="evenodd"/><path stroke="#000000" stroke-width="1.0" stroke-linejoin="round" stroke-linecap="butt" d="m1665.2179 1067.0526l0 0c0 -2.9195557 -2.3666992 -5.286255 -5.286255 -5.286255l-117.837036 0c-1.4019775 0 -2.746582 0.55700684 -3.737915 1.5483398c-0.991333 0.991333 -1.5483398 2.3359375 -1.5483398 3.737915l0 21.144165c0 2.9194336 2.3666992 5.286133 5.286255 5.286133l117.837036 0c2.9195557 0 5.286255 -2.3666992 5.286255 -5.286133z" fill-rule="evenodd"/><path fill="#000000" d="m1569.9677 1081.654l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm9.375 -1.953125q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm15.610107 1.296875l1.609375 0.21875q-0.265625 1.65625 -1.359375 2.609375q-1.078125 0.9375 -2.671875 0.9375q-1.984375 0 -3.1875 -1.296875q-1.203125 -1.296875 -1.203125 -3.71875q0 -1.578125 0.515625 -2.75q0.515625 -1.171875 1.578125 -1.75q1.0625 -0.59375 2.3125 -0.59375q1.578125 0 2.578125 0.796875q1.0 0.796875 1.28125 2.265625l-1.59375 0.234375q-0.234375 -0.96875 -0.8125 -1.453125q-0.578125 -0.5 -1.390625 -0.5q-1.234375 0 -2.015625 0.890625q-0.78125 0.890625 -0.78125 2.8125q0 1.953125 0.75 2.84375q0.75 0.875 1.953125 0.875q0.96875 0 1.609375 -0.59375q0.65625 -0.59375 0.828125 -1.828125zm3.015625 3.546875l0 -13.359375l1.640625 0l0 7.625l3.890625 -3.9375l2.109375 0l-3.6875 3.59375l4.0625 6.078125l-2.015625 0l-3.203125 -4.953125l-1.15625 1.125l0 3.828125l-1.640625 0zm15.953125 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.94885254 -1.421875l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125z" fill-rule="nonzero"/><path fill="#4a4aff" d="m1533.8398 1209.6035l197.66931 0l0 44.97632l-197.66931 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1533.8398 1209.6035l197.66931 0l0 44.97632l-197.66931 0z" fill-rule="evenodd"/><path fill="#ffffff" d="m1571.211 1236.5234l0 -1.21875q-0.90625 1.4375 -2.703125 1.4375q-1.15625 0 -2.125 -0.640625q-0.96875 -0.640625 -1.5 -1.78125q-0.53125 -1.140625 -0.53125 -2.625q0 -1.453125 0.484375 -2.625q0.484375 -1.1875 1.4375 -1.8125q0.96875 -0.625 2.171875 -0.625q0.875 0 1.546875 0.375q0.6875 0.359375 1.109375 0.953125l0 -4.796875l1.640625 0l0 13.359375l-1.53125 0zm-5.171875 -4.828125q0 1.859375 0.78125 2.78125q0.78125 0.921875 1.84375 0.921875q1.078125 0 1.828125 -0.875q0.75 -0.890625 0.75 -2.6875q0 -1.984375 -0.765625 -2.90625q-0.765625 -0.9375 -1.890625 -0.9375q-1.078125 0 -1.8125 0.890625q-0.734375 0.890625 -0.734375 2.8125zm9.266357 4.828125l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm6.2282715 -11.46875l0 -1.890625l1.640625 0l0 1.890625l-1.640625 0zm0 11.46875l0 -9.671875l1.640625 0l0 9.671875l-1.640625 0zm6.8323975 0l-3.6875 -9.671875l1.734375 0l2.078125 5.796875q0.328125 0.9375 0.625 1.9375q0.203125 -0.765625 0.609375 -1.828125l2.140625 -5.90625l1.6875 0l-3.65625 9.671875l-1.53125 0zm13.265625 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm9.125732 5.765625l0 -9.671875l1.46875 0l0 1.46875q0.5625 -1.03125 1.03125 -1.359375q0.484375 -0.328125 1.0625 -0.328125q0.828125 0 1.6875 0.53125l-0.5625 1.515625q-0.609375 -0.359375 -1.203125 -0.359375q-0.546875 0 -0.96875 0.328125q-0.421875 0.328125 -0.609375 0.890625q-0.28125 0.875 -0.28125 1.921875l0 5.0625l-1.625 0zm5.5720215 -2.890625l1.625 -0.25q0.125 0.96875 0.75 1.5q0.625 0.515625 1.75 0.515625q1.125 0 1.671875 -0.453125q0.546875 -0.46875 0.546875 -1.09375q0 -0.546875 -0.484375 -0.875q-0.328125 -0.21875 -1.671875 -0.546875q-1.8125 -0.46875 -2.515625 -0.796875q-0.6875 -0.328125 -1.046875 -0.90625q-0.359375 -0.59375 -0.359375 -1.3125q0 -0.640625 0.296875 -1.1875q0.296875 -0.5625 0.8125 -0.921875q0.375 -0.28125 1.03125 -0.46875q0.671875 -0.203125 1.421875 -0.203125q1.140625 0 2.0 0.328125q0.859375 0.328125 1.265625 0.890625q0.421875 0.5625 0.578125 1.5l-1.609375 0.21875q-0.109375 -0.75 -0.640625 -1.171875q-0.515625 -0.421875 -1.46875 -0.421875q-1.140625 0 -1.625 0.375q-0.46875 0.375 -0.46875 0.875q0 0.3125 0.1875 0.578125q0.203125 0.265625 0.640625 0.4375q0.234375 0.09375 1.4375 0.421875q1.75 0.453125 2.4375 0.75q0.6875 0.296875 1.078125 0.859375q0.390625 0.5625 0.390625 1.40625q0 0.828125 -0.484375 1.546875q-0.46875 0.71875 -1.375 1.125q-0.90625 0.390625 -2.046875 0.390625q-1.875 0 -2.875 -0.78125q-0.984375 -0.78125 -1.25 -2.328125zm8.75 3.125l3.875 -13.8125l1.3125 0l-3.859375 13.8125l-1.328125 0zm7.9177246 -0.234375l-1.515625 0l0 -13.359375l1.640625 0l0 4.765625q1.046875 -1.296875 2.65625 -1.296875q0.890625 0 1.6875 0.359375q0.796875 0.359375 1.3125 1.015625q0.515625 0.640625 0.796875 1.5625q0.296875 0.921875 0.296875 1.96875q0 2.484375 -1.234375 3.84375q-1.21875 1.359375 -2.953125 1.359375q-1.703125 0 -2.6875 -1.4375l0 1.21875zm-0.015625 -4.90625q0 1.734375 0.484375 2.515625q0.765625 1.265625 2.09375 1.265625q1.078125 0 1.859375 -0.9375q0.78125 -0.9375 0.78125 -2.78125q0 -1.890625 -0.75 -2.796875q-0.75 -0.90625 -1.828125 -0.90625q-1.0625 0 -1.859375 0.9375q-0.78125 0.9375 -0.78125 2.703125zm8.84436 4.90625l0 -13.359375l1.640625 0l0 13.359375l-1.640625 0zm10.519897 0l0 -1.421875q-1.125 1.640625 -3.0625 1.640625q-0.859375 0 -1.609375 -0.328125q-0.734375 -0.328125 -1.09375 -0.828125q-0.359375 -0.5 -0.5 -1.21875q-0.109375 -0.46875 -0.109375 -1.53125l0 -5.984375l1.640625 0l0 5.359375q0 1.28125 0.109375 1.734375q0.15625 0.640625 0.65625 1.015625q0.5 0.375 1.234375 0.375q0.734375 0 1.375 -0.375q0.65625 -0.390625 0.921875 -1.03125q0.265625 -0.65625 0.265625 -1.890625l0 -5.1875l1.640625 0l0 9.671875l-1.46875 0zm10.672607 -3.109375l1.6875 0.203125q-0.40625 1.484375 -1.484375 2.3125q-1.078125 0.8125 -2.765625 0.8125q-2.125 0 -3.375 -1.296875q-1.234375 -1.3125 -1.234375 -3.671875q0 -2.453125 1.25 -3.796875q1.265625 -1.34375 3.265625 -1.34375q1.9375 0 3.15625 1.328125q1.234375 1.3125 1.234375 3.703125q0 0.15625 0 0.4375l-7.21875 0q0.09375 1.59375 0.90625 2.453125q0.8125 0.84375 2.015625 0.84375q0.90625 0 1.546875 -0.46875q0.640625 -0.484375 1.015625 -1.515625zm-5.390625 -2.65625l5.40625 0q-0.109375 -1.21875 -0.625 -1.828125q-0.78125 -0.953125 -2.03125 -0.953125q-1.125 0 -1.90625 0.765625q-0.765625 0.75 -0.84375 2.015625zm12.719482 4.296875l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm0.99572754 -3.375q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm8.688232 0q0 -2.6875 1.484375 -3.96875q1.25 -1.078125 3.046875 -1.078125q2.0 0 3.265625 1.3125q1.265625 1.296875 1.265625 3.609375q0 1.859375 -0.5625 2.9375q-0.5625 1.0625 -1.640625 1.65625q-1.0625 0.59375 -2.328125 0.59375q-2.03125 0 -3.28125 -1.296875q-1.25 -1.3125 -1.25 -3.765625zm1.6875 0q0 1.859375 0.796875 2.796875q0.8125 0.921875 2.046875 0.921875q1.21875 0 2.03125 -0.921875q0.8125 -0.9375 0.8125 -2.84375q0 -1.796875 -0.8125 -2.71875q-0.8125 -0.921875 -2.03125 -0.921875q-1.234375 0 -2.046875 0.921875q-0.796875 0.90625 -0.796875 2.765625zm12.875732 3.375l0.234375 1.453125q-0.6875 0.140625 -1.234375 0.140625q-0.890625 0 -1.390625 -0.28125q-0.484375 -0.28125 -0.6875 -0.734375q-0.203125 -0.46875 -0.203125 -1.9375l0 -5.578125l-1.203125 0l0 -1.265625l1.203125 0l0 -2.390625l1.625 -0.984375l0 3.375l1.65625 0l0 1.265625l-1.65625 0l0 5.671875q0 0.6875 0.078125 0.890625q0.09375 0.203125 0.28125 0.328125q0.203125 0.109375 0.578125 0.109375q0.265625 0 0.71875 -0.0625zm1.6052246 1.46875l0 -13.359375l1.640625 0l0 4.796875q1.140625 -1.328125 2.890625 -1.328125q1.078125 0 1.859375 0.421875q0.796875 0.421875 1.140625 1.171875q0.34375 0.75 0.34375 2.171875l0 6.125l-1.640625 0l0 -6.125q0 -1.234375 -0.53125 -1.796875q-0.53125 -0.5625 -1.515625 -0.5625q-0.71875 0 -1.359375 0.390625q-0.640625 0.375 -0.921875 1.015625q-0.265625 0.640625 -0.265625 1.78125l0 5.296875l-1.640625 0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1745.21 421.97113l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1745.21 421.97113l136.22046 0l0 79.1496l-136.22046 0z" fill-rule="evenodd"/><path fill="#000000" d="m1804.6757 443.28424l1.390625 0.1875q-0.234375 1.421875 -1.171875 2.234375q-0.921875 0.8125 -2.28125 0.8125q-1.703125 0 -2.75 -1.109375q-1.03125 -1.125 -1.03125 -3.203125q0 -1.34375 0.4375 -2.34375q0.453125 -1.015625 1.359375 -1.515625q0.921875 -0.5 1.984375 -0.5q1.359375 0 2.21875 0.6875q0.859375 0.671875 1.09375 1.9375l-1.359375 0.203125q-0.203125 -0.828125 -0.703125 -1.25q-0.484375 -0.421875 -1.1875 -0.421875q-1.0625 0 -1.734375 0.765625q-0.65625 0.75 -0.65625 2.40625q0 1.671875 0.640625 2.4375q0.640625 0.75 1.671875 0.75q0.828125 0 1.375 -0.5q0.5625 -0.515625 0.703125 -1.578125zm2.578125 3.046875l0 -8.296875l1.265625 0l0 1.25q0.484375 -0.875 0.890625 -1.15625q0.40625 -0.28125 0.90625 -0.28125q0.703125 0 1.4375 0.453125l-0.484375 1.296875q-0.515625 -0.296875 -1.03125 -0.296875q-0.453125 0 -0.828125 0.28125q-0.359375 0.265625 -0.515625 0.765625q-0.234375 0.75 -0.234375 1.640625l0 4.34375l-1.40625 0zm10.75 -1.03125q-0.78125 0.671875 -1.5 0.953125q-0.71875 0.265625 -1.546875 0.265625q-1.375 0 -2.109375 -0.671875q-0.734375 -0.671875 -0.734375 -1.703125q0 -0.609375 0.28125 -1.109375q0.28125 -0.515625 0.71875 -0.8125q0.453125 -0.3125 1.015625 -0.46875q0.421875 -0.109375 1.25 -0.203125q1.703125 -0.203125 2.515625 -0.484375q0 -0.296875 0 -0.375q0 -0.859375 -0.390625 -1.203125q-0.546875 -0.484375 -1.609375 -0.484375q-0.984375 0 -1.46875 0.359375q-0.46875 0.34375 -0.6875 1.21875l-1.375 -0.1875q0.1875 -0.875 0.609375 -1.421875q0.4375 -0.546875 1.25 -0.828125q0.8125 -0.296875 1.875 -0.296875q1.0625 0 1.71875 0.25q0.671875 0.25 0.984375 0.625q0.3125 0.375 0.4375 0.953125q0.078125 0.359375 0.078125 1.296875l0 1.875q0 1.96875 0.078125 2.484375q0.09375 0.515625 0.359375 1.0l-1.46875 0q-0.21875 -0.4375 -0.28125 -1.03125zm-0.109375 -3.140625q-0.765625 0.3125 -2.296875 0.53125q-0.875 0.125 -1.234375 0.28125q-0.359375 0.15625 -0.5625 0.46875q-0.1875 0.296875 -0.1875 0.65625q0 0.5625 0.421875 0.9375q0.4375 0.375 1.25 0.375q0.8125 0 1.4375 -0.34375q0.640625 -0.359375 0.9375 -0.984375q0.234375 -0.46875 0.234375 -1.40625l0 -0.515625zm3.0390625 1.6875l1.390625 -0.21875q0.109375 0.84375 0.640625 1.296875q0.546875 0.4375 1.5 0.4375q0.96875 0 1.4375 -0.390625q0.46875 -0.40625 0.46875 -0.9375q0 -0.46875 -0.40625 -0.75q-0.296875 -0.1875 -1.4375 -0.46875q-1.546875 -0.390625 -2.15625 -0.671875q-0.59375 -0.296875 -0.90625 -0.796875q-0.296875 -0.5 -0.296875 -1.109375q0 -0.5625 0.25 -1.03125q0.25 -0.46875 0.6875 -0.78125q0.328125 -0.25 0.890625 -0.40625q0.578125 -0.171875 1.21875 -0.171875q0.984375 0 1.71875 0.28125q0.734375 0.28125 1.078125 0.765625q0.359375 0.46875 0.5 1.28125l-1.375 0.1875q-0.09375 -0.640625 -0.546875 -1.0q-0.453125 -0.359375 -1.265625 -0.359375q-0.96875 0 -1.390625 0.328125q-0.40625 0.3125 -0.40625 0.734375q0 0.28125 0.171875 0.5q0.171875 0.21875 0.53125 0.375q0.21875 0.078125 1.25 0.359375q1.484375 0.390625 2.078125 0.65625q0.59375 0.25 0.921875 0.734375q0.34375 0.484375 0.34375 1.203125q0 0.703125 -0.421875 1.328125q-0.40625 0.609375 -1.1875 0.953125q-0.765625 0.34375 -1.734375 0.34375q-1.625 0 -2.46875 -0.671875q-0.84375 -0.671875 -1.078125 -2.0z" fill-rule="nonzero"/><path fill="#9fc5e8" d="m1628.2518 227.64043l263.71643 0l0 37.574783l-263.71643 0z" fill-rule="evenodd"/><path stroke="#073763" stroke-width="2.0" stroke-linejoin="round" stroke-linecap="butt" d="m1628.2518 227.64043l263.71643 0l0 37.574783l-263.71643 0z" fill-rule="evenodd"/><path fill="#000000" d="m1725.6871 248.16042l-1.90625 -6.21875l1.09375 0l0.984375 3.59375l0.375 1.328125q0.03125 -0.09375 0.328125 -1.28125l0.984375 -3.640625l1.078125 0l0.9375 3.609375l0.3125 1.1875l0.359375 -1.203125l1.0625 -3.59375l1.03125 0l-1.953125 6.21875l-1.09375 0l-0.984375 -3.734375l-0.25 -1.046875l-1.25 4.78125l-1.109375 0zm11.775391 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm6.845703 3.703125l-0.984375 0l0 -8.59375l1.0625 0l0 3.0625q0.671875 -0.828125 1.703125 -0.828125q0.578125 0 1.078125 0.234375q0.515625 0.21875 0.84375 0.640625q0.34375 0.421875 0.53125 1.015625q0.1875 0.59375 0.1875 1.265625q0 1.59375 -0.796875 2.46875q-0.796875 0.875 -1.890625 0.875q-1.109375 0 -1.734375 -0.921875l0 0.78125zm-0.015625 -3.15625q0 1.109375 0.3125 1.609375q0.5 0.8125 1.34375 0.8125q0.6875 0 1.1875 -0.59375q0.515625 -0.59375 0.515625 -1.796875q0 -1.21875 -0.484375 -1.796875q-0.484375 -0.578125 -1.171875 -0.578125q-0.6875 0 -1.203125 0.609375q-0.5 0.59375 -0.5 1.734375zm5.798828 3.15625l0 -8.59375l3.234375 0q0.984375 0 1.578125 0.265625q0.59375 0.265625 0.921875 0.8125q0.34375 0.53125 0.34375 1.125q0 0.546875 -0.296875 1.03125q-0.296875 0.484375 -0.90625 0.78125q0.78125 0.234375 1.1875 0.796875q0.421875 0.546875 0.421875 1.296875q0 0.59375 -0.25 1.125q-0.25 0.515625 -0.625 0.796875q-0.375 0.28125 -0.953125 0.421875q-0.5625 0.140625 -1.375 0.140625l-3.28125 0zm1.140625 -4.984375l1.859375 0q0.75 0 1.078125 -0.09375q0.4375 -0.125 0.65625 -0.421875q0.21875 -0.3125 0.21875 -0.765625q0 -0.421875 -0.203125 -0.75q-0.203125 -0.328125 -0.59375 -0.4375q-0.375 -0.125 -1.296875 -0.125l-1.71875 0l0 2.59375zm0 3.96875l2.140625 0q0.546875 0 0.765625 -0.046875q0.40625 -0.0625 0.65625 -0.21875q0.265625 -0.171875 0.4375 -0.484375q0.171875 -0.3125 0.171875 -0.71875q0 -0.484375 -0.25 -0.84375q-0.234375 -0.359375 -0.671875 -0.5q-0.4375 -0.140625 -1.265625 -0.140625l-1.984375 0l0 2.953125zm6.7539062 1.015625l0 -8.59375l1.0625 0l0 8.59375l-1.0625 0zm6.7755127 0l0 -0.921875q-0.734375 1.0625 -1.984375 1.0625q-0.546875 0 -1.03125 -0.203125q-0.46875 -0.21875 -0.703125 -0.53125q-0.234375 -0.328125 -0.328125 -0.796875q-0.0625 -0.296875 -0.0625 -0.984375l0 -3.84375l1.0625 0l0 3.453125q0 0.8125 0.0625 1.109375q0.09375 0.40625 0.40625 0.65625q0.328125 0.234375 0.8125 0.234375q0.46875 0 0.875 -0.234375q0.421875 -0.25 0.59375 -0.671875q0.1875 -0.421875 0.1875 -1.21875l0 -3.328125l1.046875 0l0 6.21875l-0.9375 0zm6.845703 -2.0l1.09375 0.125q-0.25 0.953125 -0.953125 1.484375q-0.703125 0.53125 -1.78125 0.53125q-1.359375 0 -2.171875 -0.84375q-0.796875 -0.84375 -0.796875 -2.359375q0 -1.5625 0.8125 -2.421875q0.8125 -0.875 2.09375 -0.875q1.25 0 2.03125 0.84375q0.796875 0.84375 0.796875 2.390625q0 0.09375 0 0.28125l-4.640625 0q0.0625 1.03125 0.578125 1.578125q0.515625 0.53125 1.296875 0.53125q0.578125 0 0.984375 -0.296875q0.421875 -0.3125 0.65625 -0.96875zm-3.453125 -1.703125l3.46875 0q-0.0625 -0.796875 -0.390625 -1.1875q-0.515625 -0.609375 -1.3125 -0.609375q-0.734375 0 -1.234375 0.484375q-0.484375 0.484375 -0.53125 1.3125zm8.173828 2.765625l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm0.6464844 -2.171875q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm5.595703 0q0 -1.734375 0.953125 -2.5625q0.796875 -0.6875 1.953125 -0.6875q1.28125 0 2.09375 0.84375q0.828125 0.828125 0.828125 2.3125q0 1.203125 -0.359375 1.890625q-0.359375 0.6875 -1.0625 1.078125q-0.6875 0.375 -1.5 0.375q-1.296875 0 -2.109375 -0.828125q-0.796875 -0.84375 -0.796875 -2.421875zm1.078125 0q0 1.1875 0.515625 1.78125q0.53125 0.59375 1.3125 0.59375q0.796875 0 1.3125 -0.59375q0.515625 -0.59375 0.515625 -1.8125q0 -1.15625 -0.53125 -1.75q-0.515625 -0.59375 -1.296875 -0.59375q-0.78125 0 -1.3125 0.59375q-0.515625 0.578125 -0.515625 1.78125zm8.283203 2.171875l0.15625 0.921875q-0.453125 0.09375 -0.796875 0.09375q-0.578125 0 -0.890625 -0.171875q-0.3125 -0.1875 -0.453125 -0.484375q-0.125 -0.296875 -0.125 -1.25l0 -3.578125l-0.765625 0l0 -0.8125l0.765625 0l0 -1.546875l1.046875 -0.625l0 2.171875l1.0625 0l0 0.8125l-1.0625 0l0 3.640625q0 0.453125 0.046875 0.578125q0.0625 0.125 0.1875 0.203125q0.125 0.078125 0.359375 0.078125q0.1875 0 0.46875 -0.03125zm1.0371094 0.9375l0 -8.59375l1.046875 0l0 3.078125q0.734375 -0.84375 1.859375 -0.84375q0.703125 0 1.203125 0.28125q0.515625 0.265625 0.734375 0.75q0.21875 0.46875 0.21875 1.390625l0 3.9375l-1.046875 0l0 -3.9375q0 -0.796875 -0.34375 -1.15625q-0.34375 -0.359375 -0.96875 -0.359375q-0.46875 0 -0.890625 0.25q-0.40625 0.234375 -0.59375 0.65625q-0.171875 0.40625 -0.171875 1.140625l0 3.40625l-1.046875 0z" fill-rule="nonzero"/></g></svg>
diff --git a/chromeos/ash/components/network/metrics/BUILD.gn b/chromeos/ash/components/network/metrics/BUILD.gn index f06b416..918d9a4f 100644 --- a/chromeos/ash/components/network/metrics/BUILD.gn +++ b/chromeos/ash/components/network/metrics/BUILD.gn
@@ -7,13 +7,11 @@ assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") source_set("metrics") { - # Due to circular dependency, others should depend on via chromeos/network. - visibility = [ - "//chromeos/ash/components/network", - "//chromeos/network", - ] + # Due to circular dependency, others should depend on via + # chromeos/ash/components/network. + visibility = [ "//chromeos/ash/components/network" ] - configs += [ "//chromeos/network:network_config" ] + configs += [ "//chromeos/ash/components/network:network_config" ] deps = [ "//base", "//chromeos/login/login_state", @@ -39,10 +37,10 @@ "//ash/constants", "//base", "//base/test:test_support", + "//chromeos/ash/components/network", "//chromeos/ash/components/network:test_support", "//chromeos/dbus/shill", "//chromeos/login/login_state", - "//chromeos/network", "//components/prefs", "//components/prefs:test_support", "//testing/gtest",
diff --git a/chromeos/ash/components/network/network_profile.h b/chromeos/ash/components/network/network_profile.h index 4cf8f12..bdba0f7 100644 --- a/chromeos/ash/components/network/network_profile.h +++ b/chromeos/ash/components/network/network_profile.h
@@ -35,4 +35,9 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash { +using ::chromeos::NetworkProfile; +} + #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_PROFILE_H_
diff --git a/chromeos/ash/components/network/network_ui_data.h b/chromeos/ash/components/network/network_ui_data.h index aaa87cb..1c841e1 100644 --- a/chromeos/ash/components/network/network_ui_data.h +++ b/chromeos/ash/components/network/network_ui_data.h
@@ -53,4 +53,9 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash { +using ::chromeos::NetworkUIData; +} + #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_UI_DATA_H_
diff --git a/chromeos/ash/components/network/network_util.h b/chromeos/ash/components/network/network_util.h index 67d43942..64b39927 100644 --- a/chromeos/ash/components/network/network_util.h +++ b/chromeos/ash/components/network/network_util.h
@@ -162,6 +162,7 @@ using ::chromeos::CellularSIMSlotInfo; using ::chromeos::WifiAccessPoint; using ::chromeos::WifiAccessPointVector; +namespace network_util = ::chromeos::network_util; } // namespace ash #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_NETWORK_UTIL_H_
diff --git a/chromeos/ash/components/network/onc/BUILD.gn b/chromeos/ash/components/network/onc/BUILD.gn index 3e6f09b3..2cbd3ee0 100644 --- a/chromeos/ash/components/network/onc/BUILD.gn +++ b/chromeos/ash/components/network/onc/BUILD.gn
@@ -8,14 +8,14 @@ assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") source_set("onc") { - # Due to circular dependency, others should depend on via chromeos/network. + # Due to circular dependency, others should depend on via + # chromeos/ash/components/network. visibility = [ "//chromeos/ash/components/network", "//chromeos/ash/components/network/proxy", - "//chromeos/network", ] - configs += [ "//chromeos/network:network_config" ] + configs += [ "//chromeos/ash/components/network:network_config" ] deps = [ "//base", "//chromeos/components/onc", @@ -54,9 +54,9 @@ deps = [ "//base/test:test_support", "//chromeos:test_utils", + "//chromeos/ash/components/network", "//chromeos/components/onc", "//chromeos/components/onc:test_support", - "//chromeos/network", "//components/onc", "//crypto:test_support", "//net:test_support", @@ -77,7 +77,7 @@ sources = [ "onc_normalizer_fuzzer.cc" ] deps = [ "//base", + "//chromeos/ash/components/network", "//chromeos/components/onc", - "//chromeos/network", ] }
diff --git a/chromeos/ash/components/network/onc/network_onc_utils.cc b/chromeos/ash/components/network/onc/network_onc_utils.cc index 9686ebb..52841c04 100644 --- a/chromeos/ash/components/network/onc/network_onc_utils.cc +++ b/chromeos/ash/components/network/onc/network_onc_utils.cc
@@ -60,8 +60,7 @@ #include "url/gurl.h" #include "url/url_constants.h" -namespace chromeos { -namespace onc { +namespace ash::onc { namespace { @@ -651,5 +650,4 @@ return false; } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/network_onc_utils.h b/chromeos/ash/components/network/onc/network_onc_utils.h index a5dfba4d..3939d6d 100644 --- a/chromeos/ash/components/network/onc/network_onc_utils.h +++ b/chromeos/ash/components/network/onc/network_onc_utils.h
@@ -13,7 +13,11 @@ #include "base/component_export.h" #include "base/containers/flat_map.h" #include "base/memory/ref_counted.h" +// TODO(https://crbug.com/1164001): move to forward declaration +#include "chromeos/ash/components/network/network_state.h" #include "chromeos/ash/components/network/network_type_pattern.h" +// TODO(https://crbug.com/1164001): move to forward declaration +#include "chromeos/components/onc/onc_signature.h" #include "chromeos/components/onc/variable_expander.h" #include "components/onc/onc_constants.h" #include "net/cert/scoped_nss_types.h" @@ -28,13 +32,7 @@ class User; } -namespace chromeos { - -class NetworkState; - -namespace onc { - -struct OncValueSignature; +namespace ash::onc { // Returns a network type pattern for matching the ONC type string. COMPONENT_EXPORT(CHROMEOS_NETWORK) @@ -94,7 +92,14 @@ COMPONENT_EXPORT(CHROMEOS_NETWORK) bool HasUserPasswordSubsitutionVariable(const base::Value* network_configs); -} // namespace onc -} // namespace chromeos +} // namespace ash::onc + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos::onc { +using ::ash::onc::ConvertOncProxySettingsToProxyConfig; +using ::ash::onc::GetPolicyForNetwork; +using ::ash::onc::ImportNetworksForUser; +using ::ash::onc::NetworkTypePatternFromOncType; +} // namespace chromeos::onc #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_NETWORK_ONC_UTILS_H_
diff --git a/chromeos/ash/components/network/onc/network_onc_utils_unittest.cc b/chromeos/ash/components/network/onc/network_onc_utils_unittest.cc index 779432ac..45fd5be2 100644 --- a/chromeos/ash/components/network/onc/network_onc_utils_unittest.cc +++ b/chromeos/ash/components/network/onc/network_onc_utils_unittest.cc
@@ -20,8 +20,7 @@ #include "chromeos/test/chromeos_test_utils.h" #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { -namespace onc { +namespace ash::onc { TEST(ONCUtils, ProxySettingsToProxyConfig) { base::Value list_of_tests = test_utils::ReadTestJson("proxy_config.json"); @@ -130,5 +129,4 @@ EXPECT_TRUE(HasUserPasswordSubsitutionVariable(network_list)); } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_certificate_importer.h b/chromeos/ash/components/network/onc/onc_certificate_importer.h index 8cc1e195..61d4f1a1 100644 --- a/chromeos/ash/components/network/onc/onc_certificate_importer.h +++ b/chromeos/ash/components/network/onc/onc_certificate_importer.h
@@ -11,8 +11,7 @@ #include "components/onc/onc_constants.h" #include "net/cert/scoped_nss_types.h" -namespace chromeos { -namespace onc { +namespace ash::onc { class COMPONENT_EXPORT(CHROMEOS_NETWORK) CertificateImporter { public: @@ -54,7 +53,6 @@ DoneCallback done_callback) = 0; }; -} // namespace onc -} // namespace chromeos +} // namespace ash::onc #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_CERTIFICATE_IMPORTER_H_
diff --git a/chromeos/ash/components/network/onc/onc_certificate_importer_impl.cc b/chromeos/ash/components/network/onc/onc_certificate_importer_impl.cc index 5611789a..e907398 100644 --- a/chromeos/ash/components/network/onc/onc_certificate_importer_impl.cc +++ b/chromeos/ash/components/network/onc/onc_certificate_importer_impl.cc
@@ -29,8 +29,7 @@ #include "net/cert/nss_cert_database.h" #include "net/cert/x509_util_nss.h" -namespace chromeos { -namespace onc { +namespace ash::onc { CertificateImporterImpl::CertificateImporterImpl( const scoped_refptr<base::SequencedTaskRunner>& io_task_runner, @@ -257,5 +256,4 @@ return true; } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_certificate_importer_impl.h b/chromeos/ash/components/network/onc/onc_certificate_importer_impl.h index 33b1c0ee..891cc93 100644 --- a/chromeos/ash/components/network/onc/onc_certificate_importer_impl.h +++ b/chromeos/ash/components/network/onc/onc_certificate_importer_impl.h
@@ -26,8 +26,7 @@ class NSSCertDatabase; } -namespace chromeos { -namespace onc { +namespace ash::onc { // This class handles certificate imports from ONC (both policy and user // imports) into a certificate store. The GUID of Client certificates is stored @@ -108,7 +107,11 @@ base::WeakPtrFactory<CertificateImporterImpl> weak_factory_{this}; }; -} // namespace onc -} // namespace chromeos +} // namespace ash::onc + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos::onc { +using ::ash::onc::CertificateImporterImpl; +} #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_CERTIFICATE_IMPORTER_IMPL_H_
diff --git a/chromeos/ash/components/network/onc/onc_certificate_importer_impl_unittest.cc b/chromeos/ash/components/network/onc/onc_certificate_importer_impl_unittest.cc index 592086b6..6074ecf 100644 --- a/chromeos/ash/components/network/onc/onc_certificate_importer_impl_unittest.cc +++ b/chromeos/ash/components/network/onc/onc_certificate_importer_impl_unittest.cc
@@ -26,8 +26,7 @@ #include "net/cert/x509_util_nss.h" #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { -namespace onc { +namespace ash::onc { class ONCCertificateImporterImplTest : public testing::Test { public: @@ -352,5 +351,4 @@ "certificate-web-authority.onc", "certificate-web-authority-update.onc"))); -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_certificate_pattern.cc b/chromeos/ash/components/network/onc/onc_certificate_pattern.cc index 1d522ad..448d991 100644 --- a/chromeos/ash/components/network/onc/onc_certificate_pattern.cc +++ b/chromeos/ash/components/network/onc/onc_certificate_pattern.cc
@@ -14,7 +14,7 @@ #include "net/cert/x509_certificate.h" #include "net/cert/x509_util_nss.h" -namespace chromeos { +namespace ash { namespace { @@ -122,4 +122,4 @@ subject_pattern_(std::move(subject_pattern)), enrollment_uri_list_(std::move(enrollment_uri_list)) {} -} // namespace chromeos +} // namespace ash
diff --git a/chromeos/ash/components/network/onc/onc_certificate_pattern.h b/chromeos/ash/components/network/onc/onc_certificate_pattern.h index 42eec3c2..dc6809d0 100644 --- a/chromeos/ash/components/network/onc/onc_certificate_pattern.h +++ b/chromeos/ash/components/network/onc/onc_certificate_pattern.h
@@ -20,7 +20,7 @@ class X509Certificate; } -namespace chromeos { +namespace ash { // A class to contain a certificate pattern and find existing matches to the // pattern in the certificate database. @@ -73,6 +73,11 @@ std::vector<std::string> enrollment_uri_list_; }; -} // namespace chromeos +} // namespace ash + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos { +using ::ash::OncCertificatePattern; +} #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_CERTIFICATE_PATTERN_H_
diff --git a/chromeos/ash/components/network/onc/onc_certificate_pattern_unittest.cc b/chromeos/ash/components/network/onc/onc_certificate_pattern_unittest.cc index 2b222c3..0ef1fe1 100644 --- a/chromeos/ash/components/network/onc/onc_certificate_pattern_unittest.cc +++ b/chromeos/ash/components/network/onc/onc_certificate_pattern_unittest.cc
@@ -14,7 +14,7 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { +namespace ash { namespace { constexpr char kFakePemEncodedIssuer[] = "PEM-ENCODED-ISSUER"; @@ -179,4 +179,4 @@ EXPECT_FALSE(pattern.value().Matches(*cert_, "OtherIssuer")); } -} // namespace chromeos +} // namespace ash
diff --git a/chromeos/ash/components/network/onc/onc_merger.cc b/chromeos/ash/components/network/onc/onc_merger.cc index 5af59896..bb783c1b5 100644 --- a/chromeos/ash/components/network/onc/onc_merger.cc +++ b/chromeos/ash/components/network/onc/onc_merger.cc
@@ -16,8 +16,7 @@ #include "chromeos/components/onc/onc_signature.h" #include "components/onc/onc_constants.h" -namespace chromeos { -namespace onc { +namespace ash::onc { namespace { // Returns true if the field is the identifier of a configuration, i.e. the GUID @@ -493,5 +492,4 @@ active_settings); } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_merger.h b/chromeos/ash/components/network/onc/onc_merger.h index 3f7887a..9080565 100644 --- a/chromeos/ash/components/network/onc/onc_merger.h +++ b/chromeos/ash/components/network/onc/onc_merger.h
@@ -6,15 +6,14 @@ #define CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_MERGER_H_ #include "base/component_export.h" +// TODO(https://crbug.com/1164001): move to forward declaration +#include "chromeos/components/onc/onc_signature.h" namespace base { class Value; } -namespace chromeos { -namespace onc { - -struct OncValueSignature; +namespace ash::onc { // Merges the given |user_settings| and |shared_settings| settings with the // given |user_policy| and |device_policy| settings. Each can be omitted by @@ -48,7 +47,12 @@ const base::Value* shared_settings, const base::Value* active_settings); -} // namespace onc -} // namespace chromeos +} // namespace ash::onc + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos::onc { +using ::ash::onc::MergeSettingsAndPoliciesToAugmented; +using ::ash::onc::MergeSettingsAndPoliciesToEffective; +} // namespace chromeos::onc #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_MERGER_H_
diff --git a/chromeos/ash/components/network/onc/onc_merger_unittest.cc b/chromeos/ash/components/network/onc/onc_merger_unittest.cc index d8eaa2f..44f5fc7 100644 --- a/chromeos/ash/components/network/onc/onc_merger_unittest.cc +++ b/chromeos/ash/components/network/onc/onc_merger_unittest.cc
@@ -12,8 +12,7 @@ #include "components/onc/onc_constants.h" #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { -namespace onc { +namespace ash::onc { namespace { // Checks that both dictionaries contain an entry at |path| with the same value. @@ -151,5 +150,4 @@ } } // namespace merger -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_normalizer.cc b/chromeos/ash/components/network/onc/onc_normalizer.cc index 9763094..ecf83cd 100644 --- a/chromeos/ash/components/network/onc/onc_normalizer.cc +++ b/chromeos/ash/components/network/onc/onc_normalizer.cc
@@ -14,8 +14,7 @@ #include "chromeos/components/onc/onc_utils.h" #include "components/onc/onc_constants.h" -namespace chromeos { -namespace onc { +namespace ash::onc { Normalizer::Normalizer(bool remove_recommended_fields) : remove_recommended_fields_(remove_recommended_fields) {} @@ -291,5 +290,4 @@ !name_servers_type_is_static || name_servers_exist); } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_normalizer.h b/chromeos/ash/components/network/onc/onc_normalizer.h index 6ef887f5..c507811 100644 --- a/chromeos/ash/components/network/onc/onc_normalizer.h +++ b/chromeos/ash/components/network/onc/onc_normalizer.h
@@ -8,11 +8,10 @@ #include "base/component_export.h" #include "base/values.h" #include "chromeos/components/onc/onc_mapper.h" +// TODO(https://crbug.com/1164001): move to forward declaration +#include "chromeos/components/onc/onc_signature.h" -namespace chromeos { -namespace onc { - -struct OncValueSignature; +namespace ash::onc { class COMPONENT_EXPORT(CHROMEOS_NETWORK) Normalizer : public Mapper { public: @@ -55,7 +54,11 @@ const bool remove_recommended_fields_; }; -} // namespace onc -} // namespace chromeos +} // namespace ash::onc + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos::onc { +using ::ash::onc::Normalizer; +} #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_NORMALIZER_H_
diff --git a/chromeos/ash/components/network/onc/onc_normalizer_fuzzer.cc b/chromeos/ash/components/network/onc/onc_normalizer_fuzzer.cc index 6961c24..dc711ce 100644 --- a/chromeos/ash/components/network/onc/onc_normalizer_fuzzer.cc +++ b/chromeos/ash/components/network/onc/onc_normalizer_fuzzer.cc
@@ -12,8 +12,7 @@ #include "chromeos/components/onc/onc_signature.h" #include "third_party/abseil-cpp/absl/types/optional.h" -namespace chromeos { -namespace onc { +namespace ash::onc { // Fuzzer for methods of the `Normalizer` class. extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { @@ -30,5 +29,4 @@ return 0; } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_normalizer_unittest.cc b/chromeos/ash/components/network/onc/onc_normalizer_unittest.cc index 5571636..d94d054 100644 --- a/chromeos/ash/components/network/onc/onc_normalizer_unittest.cc +++ b/chromeos/ash/components/network/onc/onc_normalizer_unittest.cc
@@ -9,8 +9,7 @@ #include "chromeos/components/onc/onc_test_utils.h" #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { -namespace onc { +namespace ash::onc { // Validate that StaticIPConfig IPAddress and dependent fields will be removed // if IPAddressConfigType is not 'Static'. @@ -124,5 +123,4 @@ EXPECT_TRUE(test_utils::Equals(expected_normalized, &actual_normalized)); } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_translation_tables.cc b/chromeos/ash/components/network/onc/onc_translation_tables.cc index acd7f26a..428dc59c 100644 --- a/chromeos/ash/components/network/onc/onc_translation_tables.cc +++ b/chromeos/ash/components/network/onc/onc_translation_tables.cc
@@ -14,8 +14,7 @@ #include "third_party/cros_system_api/dbus/service_constants.h" #include "third_party/cros_system_api/dbus/shill/dbus-constants.h" -namespace chromeos { -namespace onc { +namespace ash::onc { // CertificatePattern is converted with function CreateUIData(...) to UIData // stored in Shill. @@ -556,5 +555,4 @@ return false; } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_translation_tables.h b/chromeos/ash/components/network/onc/onc_translation_tables.h index 36c75ec..abbca77 100644 --- a/chromeos/ash/components/network/onc/onc_translation_tables.h +++ b/chromeos/ash/components/network/onc/onc_translation_tables.h
@@ -12,8 +12,7 @@ #include "base/strings/string_piece_forward.h" #include "chromeos/components/onc/onc_signature.h" -namespace chromeos { -namespace onc { +namespace ash::onc { struct FieldTranslationEntry { const char* onc_field_name; @@ -95,7 +94,17 @@ const std::string& shill_value, std::string* onc_value); -} // namespace onc -} // namespace chromeos +} // namespace ash::onc + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos::onc { +using ::ash::onc::kNetworkTechnologyTable; +using ::ash::onc::kNetworkTypeTable; +using ::ash::onc::kVPNTypeTable; +using ::ash::onc::kWiFiSecurityTable; +using ::ash::onc::StringTranslationEntry; +using ::ash::onc::TranslateStringToONC; +using ::ash::onc::TranslateStringToShill; +} // namespace chromeos::onc #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_TRANSLATION_TABLES_H_
diff --git a/chromeos/ash/components/network/onc/onc_translator.h b/chromeos/ash/components/network/onc/onc_translator.h index 62fb6d8..e54d192 100644 --- a/chromeos/ash/components/network/onc/onc_translator.h +++ b/chromeos/ash/components/network/onc/onc_translator.h
@@ -6,19 +6,17 @@ #define CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_TRANSLATOR_H_ #include "base/component_export.h" +// TODO(https://crbug.com/1164001): move to forward declaration +#include "chromeos/ash/components/network/network_state.h" +// TODO(https://crbug.com/1164001): move to forward declaration +#include "chromeos/components/onc/onc_signature.h" #include "components/onc/onc_constants.h" namespace base { class Value; } -namespace chromeos { - -class NetworkState; - -namespace onc { - -struct OncValueSignature; +namespace ash::onc { // Translates a hierarchical ONC dictionary |onc_object| (a Value of type // DICTIONARY) to a flat Shill dictionary. The |signature| declares the type of @@ -50,7 +48,12 @@ const OncValueSignature* onc_signature, const NetworkState* network_state); -} // namespace onc -} // namespace chromeos +} // namespace ash::onc + +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos::onc { +using ::ash::onc::TranslateONCObjectToShill; +using ::ash::onc::TranslateShillServiceToONCPart; +} // namespace chromeos::onc #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_ONC_ONC_TRANSLATOR_H_
diff --git a/chromeos/ash/components/network/onc/onc_translator_onc_to_shill.cc b/chromeos/ash/components/network/onc/onc_translator_onc_to_shill.cc index a99fb8e9..eba3a17 100644 --- a/chromeos/ash/components/network/onc/onc_translator_onc_to_shill.cc +++ b/chromeos/ash/components/network/onc/onc_translator_onc_to_shill.cc
@@ -32,8 +32,7 @@ #include "third_party/cros_system_api/dbus/service_constants.h" #include "third_party/cros_system_api/dbus/shill/dbus-constants.h" -namespace chromeos { -namespace onc { +namespace ash::onc { namespace { @@ -586,5 +585,4 @@ return shill_dictionary; } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_translator_shill_to_onc.cc b/chromeos/ash/components/network/onc/onc_translator_shill_to_onc.cc index 855bb4b4..cd5bdfc5 100644 --- a/chromeos/ash/components/network/onc/onc_translator_shill_to_onc.cc +++ b/chromeos/ash/components/network/onc/onc_translator_shill_to_onc.cc
@@ -26,8 +26,7 @@ #include "third_party/cros_system_api/dbus/service_constants.h" #include "third_party/cros_system_api/dbus/shill/dbus-constants.h" -namespace chromeos { -namespace onc { +namespace ash::onc { namespace { @@ -1019,5 +1018,4 @@ return translator.CreateTranslatedONCObject(); } -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/onc/onc_translator_unittest.cc b/chromeos/ash/components/network/onc/onc_translator_unittest.cc index ae61b154..f3bd3023 100644 --- a/chromeos/ash/components/network/onc/onc_translator_unittest.cc +++ b/chromeos/ash/components/network/onc/onc_translator_unittest.cc
@@ -13,8 +13,7 @@ #include "components/onc/onc_constants.h" #include "testing/gtest/include/gtest/gtest.h" -namespace chromeos { -namespace onc { +namespace ash::onc { // First parameter: Filename of source ONC. // Second parameter: Filename of expected translated Shill json. @@ -185,5 +184,4 @@ std::make_pair("shill_wifi_eap_empty_certid.json", "translation_of_shill_wifi_eap_empty_certid.onc"))); -} // namespace onc -} // namespace chromeos +} // namespace ash::onc
diff --git a/chromeos/ash/components/network/portal_detector/BUILD.gn b/chromeos/ash/components/network/portal_detector/BUILD.gn index 1628a1af..8cb8e7b 100644 --- a/chromeos/ash/components/network/portal_detector/BUILD.gn +++ b/chromeos/ash/components/network/portal_detector/BUILD.gn
@@ -7,10 +7,10 @@ assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") source_set("portal_detector") { - configs += [ "//chromeos/network:network_config" ] + configs += [ "//chromeos/ash/components/network:network_config" ] deps = [ "//base", - "//chromeos/network", + "//chromeos/ash/components/network", "//components/device_event_log", "//net", ]
diff --git a/chromeos/ash/components/network/portal_detector/mock_network_portal_detector.cc b/chromeos/ash/components/network/portal_detector/mock_network_portal_detector.cc index da13bc0..7738e6e 100644 --- a/chromeos/ash/components/network/portal_detector/mock_network_portal_detector.cc +++ b/chromeos/ash/components/network/portal_detector/mock_network_portal_detector.cc
@@ -4,10 +4,10 @@ #include "chromeos/ash/components/network/portal_detector/mock_network_portal_detector.h" -namespace chromeos { +namespace ash { MockNetworkPortalDetector::MockNetworkPortalDetector() = default; MockNetworkPortalDetector::~MockNetworkPortalDetector() = default; -} // namespace chromeos +} // namespace ash
diff --git a/chromeos/ash/components/network/portal_detector/mock_network_portal_detector.h b/chromeos/ash/components/network/portal_detector/mock_network_portal_detector.h index 915a51e..c61378c 100644 --- a/chromeos/ash/components/network/portal_detector/mock_network_portal_detector.h +++ b/chromeos/ash/components/network/portal_detector/mock_network_portal_detector.h
@@ -8,7 +8,7 @@ #include "chromeos/ash/components/network/portal_detector/network_portal_detector.h" #include "testing/gmock/include/gmock/gmock.h" -namespace chromeos { +namespace ash { class MockNetworkPortalDetector : public NetworkPortalDetector { public: @@ -20,26 +20,18 @@ ~MockNetworkPortalDetector() override; - MOCK_METHOD1(AddObserver, - void(chromeos::NetworkPortalDetector::Observer* observer)); - MOCK_METHOD1(RemoveObserver, - void(chromeos::NetworkPortalDetector::Observer* observer)); + MOCK_METHOD1(AddObserver, void(NetworkPortalDetector::Observer* observer)); + MOCK_METHOD1(RemoveObserver, void(NetworkPortalDetector::Observer* observer)); MOCK_METHOD1(AddAndFireObserver, - void(chromeos::NetworkPortalDetector::Observer* observer)); + void(NetworkPortalDetector::Observer* observer)); MOCK_METHOD0(GetCaptivePortalStatus, - chromeos::NetworkPortalDetector::CaptivePortalStatus()); + NetworkPortalDetector::CaptivePortalStatus()); MOCK_METHOD0(IsEnabled, bool()); MOCK_METHOD0(Enable, void()); MOCK_METHOD0(StartPortalDetection, void()); - MOCK_METHOD1(SetStrategy, - void(chromeos::PortalDetectorStrategy::StrategyId id)); + MOCK_METHOD1(SetStrategy, void(PortalDetectorStrategy::StrategyId id)); }; -} // namespace chromeos - -// TODO(https://crbug.com/1164001): remove when //chromeos/network moved to ash. -namespace ash { -using ::chromeos::MockNetworkPortalDetector; } // namespace ash #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_PORTAL_DETECTOR_MOCK_NETWORK_PORTAL_DETECTOR_H_
diff --git a/chromeos/ash/components/network/portal_detector/network_portal_detector.cc b/chromeos/ash/components/network/portal_detector/network_portal_detector.cc index 0373557a..6fa03f92 100644 --- a/chromeos/ash/components/network/portal_detector/network_portal_detector.cc +++ b/chromeos/ash/components/network/portal_detector/network_portal_detector.cc
@@ -7,7 +7,7 @@ #include "base/logging.h" #include "components/device_event_log/device_event_log.h" -namespace chromeos { +namespace ash { namespace { @@ -87,4 +87,4 @@ } // namespace network_portal_detector -} // namespace chromeos +} // namespace ash
diff --git a/chromeos/ash/components/network/portal_detector/network_portal_detector.h b/chromeos/ash/components/network/portal_detector/network_portal_detector.h index 1cd4156..e1d65e7 100644 --- a/chromeos/ash/components/network/portal_detector/network_portal_detector.h +++ b/chromeos/ash/components/network/portal_detector/network_portal_detector.h
@@ -12,7 +12,7 @@ // chrome/browser/ash/. #include "chromeos/ash/components/network/network_state.h" -namespace chromeos { +namespace ash { // This is an interface for a chromeos portal detector that allows for // observation of captive portal state. It supports retries based on a portal @@ -129,19 +129,12 @@ } // namespace network_portal_detector -} // namespace chromeos - -// TODO(https://crbug.com/1164001): remove when moved to ash. -namespace ash { -using ::chromeos::NetworkPortalDetector; -namespace network_portal_detector { -using ::chromeos::network_portal_detector::GetInstance; -using ::chromeos::network_portal_detector::InitializeForTesting; -using ::chromeos::network_portal_detector::IsInitialized; -using ::chromeos::network_portal_detector::SetForTesting; -using ::chromeos::network_portal_detector::SetNetworkPortalDetector; -using ::chromeos::network_portal_detector::Shutdown; -} // namespace network_portal_detector } // namespace ash +// TODO(https://crbug.com/1164001): remove when the migration is finished. +namespace chromeos { +using ::ash::NetworkPortalDetector; +namespace network_portal_detector = ::ash::network_portal_detector; +} // namespace chromeos + #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_PORTAL_DETECTOR_NETWORK_PORTAL_DETECTOR_H_
diff --git a/chromeos/ash/components/network/portal_detector/network_portal_detector_strategy.cc b/chromeos/ash/components/network/portal_detector/network_portal_detector_strategy.cc index 97febd8..174dcab 100644 --- a/chromeos/ash/components/network/portal_detector/network_portal_detector_strategy.cc +++ b/chromeos/ash/components/network/portal_detector/network_portal_detector_strategy.cc
@@ -11,7 +11,7 @@ #include "chromeos/ash/components/network/network_state.h" #include "chromeos/ash/components/network/network_state_handler.h" -namespace chromeos { +namespace ash { namespace { @@ -178,4 +178,4 @@ backoff_entry_->InformOfRequest(false); } -} // namespace chromeos +} // namespace ash
diff --git a/chromeos/ash/components/network/portal_detector/network_portal_detector_strategy.h b/chromeos/ash/components/network/portal_detector/network_portal_detector_strategy.h index a1c7885b..71a8f2dc 100644 --- a/chromeos/ash/components/network/portal_detector/network_portal_detector_strategy.h +++ b/chromeos/ash/components/network/portal_detector/network_portal_detector_strategy.h
@@ -13,13 +13,7 @@ #include "base/time/time.h" #include "net/base/backoff_entry.h" -// TODO(https://crbug.com/1164001): remove after moving to ash/. namespace ash { -class NetworkPortalDetectorImplTest; -class NetworkPortalDetectorImplBrowserTest; -} // namespace ash - -namespace chromeos { class COMPONENT_EXPORT(CHROMEOS_NETWORK) PortalDetectorStrategy { public: @@ -83,8 +77,8 @@ std::unique_ptr<net::BackoffEntry> backoff_entry_; private: - friend class ash::NetworkPortalDetectorImplTest; - friend class ash::NetworkPortalDetectorImplBrowserTest; + friend class NetworkPortalDetectorImplTest; + friend class NetworkPortalDetectorImplBrowserTest; static void set_delay_till_next_attempt_for_testing( const base::TimeDelta& timeout) { @@ -116,12 +110,6 @@ static bool next_attempt_timeout_for_testing_initialized_; }; -} // namespace chromeos - -// TODO(https://crbug.com/1164001): remove after the //chrome/browser/chromeos -// source migration is finished. -namespace ash { -using ::chromeos::PortalDetectorStrategy; -} +} // namespace ash #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_PORTAL_DETECTOR_NETWORK_PORTAL_DETECTOR_STRATEGY_H_
diff --git a/chromeos/ash/components/network/portal_detector/network_portal_detector_stub.cc b/chromeos/ash/components/network/portal_detector/network_portal_detector_stub.cc index ec9ecd13..20315fd 100644 --- a/chromeos/ash/components/network/portal_detector/network_portal_detector_stub.cc +++ b/chromeos/ash/components/network/portal_detector/network_portal_detector_stub.cc
@@ -4,7 +4,7 @@ #include "chromeos/ash/components/network/portal_detector/network_portal_detector_stub.h" -namespace chromeos { +namespace ash { NetworkPortalDetectorStub::NetworkPortalDetectorStub() = default; @@ -36,4 +36,4 @@ void NetworkPortalDetectorStub::SetStrategy( PortalDetectorStrategy::StrategyId id) {} -} // namespace chromeos +} // namespace ash
diff --git a/chromeos/ash/components/network/portal_detector/network_portal_detector_stub.h b/chromeos/ash/components/network/portal_detector/network_portal_detector_stub.h index b8fe556c..efdcf3b 100644 --- a/chromeos/ash/components/network/portal_detector/network_portal_detector_stub.h +++ b/chromeos/ash/components/network/portal_detector/network_portal_detector_stub.h
@@ -7,7 +7,7 @@ #include "chromeos/ash/components/network/portal_detector/network_portal_detector.h" -namespace chromeos { +namespace ash { class COMPONENT_EXPORT(CHROMEOS_NETWORK) NetworkPortalDetectorStub : public NetworkPortalDetector { @@ -32,11 +32,6 @@ void SetStrategy(PortalDetectorStrategy::StrategyId id) override; }; -} // namespace chromeos - -// TODO(https://crbug.com/1164001): remove after the migration is finished. -namespace ash { -using ::chromeos::NetworkPortalDetectorStub; -} +} // namespace ash #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_PORTAL_DETECTOR_NETWORK_PORTAL_DETECTOR_STUB_H_
diff --git a/chromeos/ash/components/network/proxy/BUILD.gn b/chromeos/ash/components/network/proxy/BUILD.gn index 1411576..1dff7aa 100644 --- a/chromeos/ash/components/network/proxy/BUILD.gn +++ b/chromeos/ash/components/network/proxy/BUILD.gn
@@ -7,13 +7,11 @@ assert(is_chromeos_ash, "Non-ChromeOS builds cannot depend on //chromeos/ash") source_set("proxy") { - # Due to circular dependency, others should depend on via chromeos/network. - visibility = [ - "//chromeos/ash/components/network", - "//chromeos/network", - ] + # Due to circular dependency, others should depend on via + # chromeos/ash/components/network. + visibility = [ "//chromeos/ash/components/network" ] - configs += [ "//chromeos/network:network_config" ] + configs += [ "//chromeos/ash/components/network:network_config" ] deps = [ "//base", "//chromeos/ash/components/network/onc", @@ -40,9 +38,9 @@ testonly = true deps = [ "//base", + "//chromeos/ash/components/network", "//chromeos/ash/components/network:test_support", "//chromeos/dbus/shill", - "//chromeos/network", "//components/onc", "//components/prefs", "//components/prefs:test_support",
diff --git a/chromeos/ash/components/network/tether_constants.h b/chromeos/ash/components/network/tether_constants.h index 4104db1..b19ef42 100644 --- a/chromeos/ash/components/network/tether_constants.h +++ b/chromeos/ash/components/network/tether_constants.h
@@ -32,4 +32,13 @@ } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash { +using ::chromeos::kTetherBatteryPercentage; +using ::chromeos::kTetherCarrier; +using ::chromeos::kTetherHasConnectedToHost; +using ::chromeos::kTetherSignalStrength; +using ::chromeos::kTypeTether; +} // namespace ash + #endif // CHROMEOS_ASH_COMPONENTS_NETWORK_TETHER_CONSTANTS_H_
diff --git a/chromeos/ash/components/trash_service/public/cpp/trash_service.cc b/chromeos/ash/components/trash_service/public/cpp/trash_service.cc index e6411d8..1cc5dee 100644 --- a/chromeos/ash/components/trash_service/public/cpp/trash_service.cc +++ b/chromeos/ash/components/trash_service/public/cpp/trash_service.cc
@@ -4,12 +4,28 @@ #include "chromeos/ash/components/trash_service/public/cpp/trash_service.h" +#include <utility> + +#include "base/no_destructor.h" #include "chromeos/ash/components/trash_service/public/mojom/trash_service.mojom.h" #include "content/public/browser/service_process_host.h" namespace chromeos::trash_service { +namespace { + +LaunchCallback& GetLaunchOverride() { + static base::NoDestructor<LaunchCallback> callback; + return *callback; +} + +} // namespace + mojo::PendingRemote<mojom::TrashService> LaunchTrashService() { + auto& launcher = GetLaunchOverride(); + if (launcher) + return launcher.Run(); + mojo::PendingRemote<mojom::TrashService> remote; content::ServiceProcessHost::Launch<mojom::TrashService>( remote.InitWithNewPipeAndPassReceiver(), @@ -19,4 +35,8 @@ return remote; } +void SetTrashServiceLaunchOverrideForTesting(LaunchCallback callback) { + GetLaunchOverride() = std::move(callback); +} + } // namespace chromeos::trash_service
diff --git a/chromeos/ash/components/trash_service/public/cpp/trash_service.h b/chromeos/ash/components/trash_service/public/cpp/trash_service.h index d0629d7..d2f2987 100644 --- a/chromeos/ash/components/trash_service/public/cpp/trash_service.h +++ b/chromeos/ash/components/trash_service/public/cpp/trash_service.h
@@ -5,7 +5,7 @@ #ifndef CHROMEOS_ASH_COMPONENTS_TRASH_SERVICE_PUBLIC_CPP_TRASH_SERVICE_H_ #define CHROMEOS_ASH_COMPONENTS_TRASH_SERVICE_PUBLIC_CPP_TRASH_SERVICE_H_ -#include "base/callback_forward.h" +#include "base/callback.h" #include "base/files/file.h" #include "base/files/file_path.h" #include "base/time/time.h" @@ -23,6 +23,13 @@ // but should re-use one if it's already running. mojo::PendingRemote<mojom::TrashService> LaunchTrashService(); +// Overrides the logic used by |LaunchTrashService()| to produce a remote +// service, allowing tests to set up an in-process instance to be used instead +// of an out-of-process instance. +using LaunchCallback = + base::RepeatingCallback<mojo::PendingRemote<mojom::TrashService>()>; +void SetTrashServiceLaunchOverrideForTesting(LaunchCallback callback); + } // namespace chromeos::trash_service #endif // CHROMEOS_ASH_COMPONENTS_TRASH_SERVICE_PUBLIC_CPP_TRASH_SERVICE_H_
diff --git a/chromeos/components/onc/onc_mapper.h b/chromeos/components/onc/onc_mapper.h index 181ec2c..cc65554 100644 --- a/chromeos/components/onc/onc_mapper.h +++ b/chromeos/components/onc/onc_mapper.h
@@ -103,4 +103,9 @@ } // namespace onc } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash::onc { +using ::chromeos::onc::Mapper; +} + #endif // CHROMEOS_COMPONENTS_ONC_ONC_MAPPER_H_
diff --git a/chromeos/components/onc/onc_parsed_certificates.h b/chromeos/components/onc/onc_parsed_certificates.h index 86c0e43..f166d7b 100644 --- a/chromeos/components/onc/onc_parsed_certificates.h +++ b/chromeos/components/onc/onc_parsed_certificates.h
@@ -140,4 +140,9 @@ } // namespace onc } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash::onc { +using ::chromeos::onc::OncParsedCertificates; +} + #endif // CHROMEOS_COMPONENTS_ONC_ONC_PARSED_CERTIFICATES_H_
diff --git a/chromeos/components/onc/onc_signature.h b/chromeos/components/onc/onc_signature.h index 42a660983..cabcf2d 100644 --- a/chromeos/components/onc/onc_signature.h +++ b/chromeos/components/onc/onc_signature.h
@@ -134,4 +134,55 @@ } // namespace onc } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash::onc { +using ::chromeos::onc::FieldIsCredential; +using ::chromeos::onc::GetFieldSignature; +using ::chromeos::onc::kARCVPNSignature; +using ::chromeos::onc::kCellularApnSignature; +using ::chromeos::onc::kCellularFoundNetworkSignature; +using ::chromeos::onc::kCellularPaymentPortalSignature; +using ::chromeos::onc::kCellularProviderSignature; +using ::chromeos::onc::kCellularSignature; +using ::chromeos::onc::kCellularWithStateSignature; +using ::chromeos::onc::kCertificateListSignature; +using ::chromeos::onc::kCertificatePatternSignature; +using ::chromeos::onc::kCertificateSignature; +using ::chromeos::onc::kEAPSignature; +using ::chromeos::onc::kEAPSubjectAlternativeNameMatchListSignature; +using ::chromeos::onc::kEAPSubjectAlternativeNameMatchSignature; +using ::chromeos::onc::kEthernetSignature; +using ::chromeos::onc::kGlobalNetworkConfigurationSignature; +using ::chromeos::onc::kIPConfigSignature; +using ::chromeos::onc::kIPsecSignature; +using ::chromeos::onc::kIssuerSubjectPatternSignature; +using ::chromeos::onc::kL2TPSignature; +using ::chromeos::onc::kNetworkConfigurationListSignature; +using ::chromeos::onc::kNetworkConfigurationSignature; +using ::chromeos::onc::kNetworkWithStateSignature; +using ::chromeos::onc::kOpenVPNSignature; +using ::chromeos::onc::kProxyLocationSignature; +using ::chromeos::onc::kProxyManualSignature; +using ::chromeos::onc::kProxySettingsSignature; +using ::chromeos::onc::kRecommendedSignature; +using ::chromeos::onc::kSavedIPConfigSignature; +using ::chromeos::onc::kScopeSignature; +using ::chromeos::onc::kSIMLockStatusSignature; +using ::chromeos::onc::kStaticIPConfigSignature; +using ::chromeos::onc::kTetherSignature; +using ::chromeos::onc::kTetherWithStateSignature; +using ::chromeos::onc::kThirdPartyVPNSignature; +using ::chromeos::onc::kToplevelConfigurationSignature; +using ::chromeos::onc::kVerifyX509Signature; +using ::chromeos::onc::kVPNSignature; +using ::chromeos::onc::kWiFiSignature; +using ::chromeos::onc::kWiFiWithStateSignature; +using ::chromeos::onc::kWireGuardPeerListSignature; +using ::chromeos::onc::kWireGuardPeerSignature; +using ::chromeos::onc::kWireGuardSignature; +using ::chromeos::onc::kXAUTHSignature; +using ::chromeos::onc::OncFieldSignature; +using ::chromeos::onc::OncValueSignature; +} // namespace ash::onc + #endif // CHROMEOS_COMPONENTS_ONC_ONC_SIGNATURE_H_
diff --git a/chromeos/components/onc/onc_test_utils.h b/chromeos/components/onc/onc_test_utils.h index f56c8fb..0484472 100644 --- a/chromeos/components/onc/onc_test_utils.h +++ b/chromeos/components/onc/onc_test_utils.h
@@ -36,4 +36,12 @@ } // namespace onc } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash::onc::test_utils { +using ::chromeos::onc::test_utils::Equals; +using ::chromeos::onc::test_utils::ReadTestData; +using ::chromeos::onc::test_utils::ReadTestDictionaryValue; +using ::chromeos::onc::test_utils::ReadTestJson; +} // namespace ash::onc::test_utils + #endif // CHROMEOS_COMPONENTS_ONC_ONC_TEST_UTILS_H_
diff --git a/chromeos/components/onc/onc_utils.h b/chromeos/components/onc/onc_utils.h index 51c2671c..90ba3fce 100644 --- a/chromeos/components/onc/onc_utils.h +++ b/chromeos/components/onc/onc_utils.h
@@ -124,4 +124,10 @@ } // namespace onc } // namespace chromeos +// TODO(https://crbug.com/1164001): remove when it moved to ash. +namespace ash::onc { +using ::chromeos::onc::FillInHexSSIDField; +using ::chromeos::onc::ReadDictionaryFromJson; +} // namespace ash::onc + #endif // CHROMEOS_COMPONENTS_ONC_ONC_UTILS_H_
diff --git a/chromeos/components/sync_wifi/BUILD.gn b/chromeos/components/sync_wifi/BUILD.gn index ae8f1cd..796cfda1 100644 --- a/chromeos/components/sync_wifi/BUILD.gn +++ b/chromeos/components/sync_wifi/BUILD.gn
@@ -33,8 +33,8 @@ "//ash/constants", "//ash/public/cpp", "//base", + "//chromeos/ash/components/network", "//chromeos/dbus/shill", - "//chromeos/network", "//chromeos/services/network_config/public/cpp", "//chromeos/services/network_config/public/mojom", "//components/device_event_log", @@ -53,7 +53,7 @@ "network_eligibility_checker.h", ] deps = [ - "//chromeos/network", + "//chromeos/ash/components/network", "//chromeos/services/network_config/public/mojom", ] }
diff --git a/chromeos/components/sync_wifi/DEPS b/chromeos/components/sync_wifi/DEPS index 60cbd0d2..d622381 100644 --- a/chromeos/components/sync_wifi/DEPS +++ b/chromeos/components/sync_wifi/DEPS
@@ -1,6 +1,6 @@ include_rules = [ "+ash/public/cpp", - "+chromeos/network", + "+chromeos/ash/components/network", "+components/keyed_service/core", "+components/onc", "+components/prefs",
diff --git a/chromeos/dbus/BUILD.gn b/chromeos/dbus/BUILD.gn index ec49cbb..9a158c3 100644 --- a/chromeos/dbus/BUILD.gn +++ b/chromeos/dbus/BUILD.gn
@@ -19,7 +19,6 @@ ] deps = [ "//base", - "//chromeos/dbus/cros_disks", "//chromeos/dbus/easy_unlock", "//chromeos/dbus/fwupd", "//chromeos/dbus/util", @@ -61,7 +60,6 @@ ":test_support", "//base", "//base/test:test_support", - "//chromeos/dbus/cros_disks:unit_tests", "//chromeos/dbus/cryptohome", "//chromeos/dbus/cryptohome:attestation_proto", "//chromeos/dbus/dlcservice:unit_tests",
diff --git a/chromeos/network/BUILD.gn b/chromeos/network/BUILD.gn deleted file mode 100644 index 5a72770..0000000 --- a/chromeos/network/BUILD.gn +++ /dev/null
@@ -1,33 +0,0 @@ -# Copyright 2018 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import("//testing/test.gni") -import("//third_party/protobuf/proto_library.gni") - -assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos") - -config("network_config") { - defines = [ "IS_CHROMEOS_NETWORK_IMPL" ] -} - -component("network") { - configs += [ ":network_config" ] - public_deps = [ - "//chromeos/ash/components/network", - "//chromeos/ash/components/network/metrics", - "//chromeos/ash/components/network/onc", - "//chromeos/ash/components/network/proxy", - ] -} - -source_set("unit_tests") { - testonly = true - deps = [ - "//chromeos/ash/components/network:test_support", - "//chromeos/ash/components/network:unit_tests", - "//chromeos/ash/components/network/metrics:unit_tests", - "//chromeos/ash/components/network/onc:unit_tests", - "//chromeos/ash/components/network/proxy:unit_tests", - ] -}
diff --git a/chromeos/network/DEPS b/chromeos/network/DEPS deleted file mode 100644 index e8b0b3d2..0000000 --- a/chromeos/network/DEPS +++ /dev/null
@@ -1,66 +0,0 @@ -# TODO(https://crbug.com/1164001): When this file is edited, same file in -# //chromeos/ash/components/network should be updated as well. We need to sync -# both files until the migration is done. - -noparent = True - -include_rules = [ - "+ash/constants", - "+base", - "+base/component_export.h", - "+chromeos/ash/components/network", - "+chromeos/test", - "+chromeos/dbus", - "+chromeos/components/onc", - "+chromeos/login/login_state", - "+chromeos/services/network_config/public", - "+components/account_id", - "+components/certificate_matching", - "+components/crx_file", - "+components/device_event_log", - "+components/onc", - "+components/pref_registry", - "+components/prefs", - "+components/proxy_config", - "+components/url_formatter", - "+components/user_manager", - "+crypto", - "+dbus", - "+net", - "+services/preferences/public/cpp", - "+testing", - "+third_party/cros_system_api", - "+url", - - # Abseil features must be allowlisted explicitly for now. See - # //styleguide/c++/c++11.html. Allowed features' headers will be listed - # explicitly here. - # Please keep this section in sync with //DEPS. - '-absl', - '-third_party/abseil-cpp', - '+third_party/abseil-cpp/absl/base/attributes.h', - "+third_party/abseil-cpp/absl/numeric/int128.h", - '+third_party/abseil-cpp/absl/types/optional.h', - '+third_party/abseil-cpp/absl/types/variant.h', - '+third_party/abseil-cpp/absl/utility/utility.h', -] - -specific_include_rules = { - "ui_proxy_config_service_unittest.cc": [ - "+components/sync_preferences/testing_pref_service_syncable.h" - ], - "managed_network_configuration_handler_unittest.cc": [ - "+components/sync_preferences/testing_pref_service_syncable.h" - ], - "cellular_policy_handler_unittest.cc": [ - "+components/sync_preferences/testing_pref_service_syncable.h" - ], - "network_metadata_store_unittest.cc": [ - "+components/sync_preferences/testing_pref_service_syncable.h" - ], - - # Dependencies specific for fuzz targets and other fuzzing-related code. - ".*fuzz.*": [ - "+third_party/libFuzzer/src/utils", # This contains FuzzedDataProvider. - ], -}
diff --git a/chromeos/network/DIR_METADATA b/chromeos/network/DIR_METADATA deleted file mode 100644 index 10ca6231..0000000 --- a/chromeos/network/DIR_METADATA +++ /dev/null
@@ -1,7 +0,0 @@ -# TODO(https://crbug.com/1164001): When this file is edited, same file in -# //chromeos/ash/components/network should be updated as well. We need to -# sync both files until the migration is done. -buganizer { - component_id: 1131775 -} -team_email: "cros-connectivity@google.com"
diff --git a/chromeos/network/OWNERS b/chromeos/network/OWNERS deleted file mode 100644 index 3422774..0000000 --- a/chromeos/network/OWNERS +++ /dev/null
@@ -1 +0,0 @@ -file://chromeos/ash/components/network/OWNERS
diff --git a/chromeos/profiles/bigcore.afdo.newest.txt b/chromeos/profiles/bigcore.afdo.newest.txt index 7e1012b2..5da2418 100644 --- a/chromeos/profiles/bigcore.afdo.newest.txt +++ b/chromeos/profiles/bigcore.afdo.newest.txt
@@ -1 +1 @@ -chromeos-chrome-amd64-bigcore-105-5161.0-1658139264-benchmark-105.0.5187.0-r1-redacted.afdo.xz +chromeos-chrome-amd64-bigcore-105-5161.0-1658139264-benchmark-105.0.5188.0-r2-redacted.afdo.xz
diff --git a/chromeos/services/network_config/BUILD.gn b/chromeos/services/network_config/BUILD.gn index 59f976d..ee4f007b 100644 --- a/chromeos/services/network_config/BUILD.gn +++ b/chromeos/services/network_config/BUILD.gn
@@ -14,10 +14,10 @@ "//ash/constants", "//base", "//chromeos/ash/components/dbus/hermes", + "//chromeos/ash/components/network", "//chromeos/components/sync_wifi:network_eligibility_checker", "//chromeos/dbus/shill", "//chromeos/login/login_state", - "//chromeos/network", "//chromeos/services/network_config/public/cpp", "//chromeos/services/network_config/public/mojom", "//components/device_event_log", @@ -44,7 +44,7 @@ deps = [ ":network_config", - "//chromeos/network", + "//chromeos/ash/components/network", "//chromeos/services/network_config/public/mojom", "//mojo/public/cpp/bindings", ]
diff --git a/chromeos/services/network_config/public/cpp/BUILD.gn b/chromeos/services/network_config/public/cpp/BUILD.gn index 3ec7b0b..cbe11245 100644 --- a/chromeos/services/network_config/public/cpp/BUILD.gn +++ b/chromeos/services/network_config/public/cpp/BUILD.gn
@@ -36,7 +36,7 @@ ] deps = [ - "//chromeos/network", + "//chromeos/ash/components/network", "//chromeos/services/network_config", "//chromeos/services/network_config:in_process_instance", ]
diff --git a/chromeos/ui/frame/caption_buttons/frame_size_button.cc b/chromeos/ui/frame/caption_buttons/frame_size_button.cc index bba0fbd..0b45f5a4 100644 --- a/chromeos/ui/frame/caption_buttons/frame_size_button.cc +++ b/chromeos/ui/frame/caption_buttons/frame_size_button.cc
@@ -16,8 +16,13 @@ #include "ui/aura/window.h" #include "ui/aura/window_observer.h" #include "ui/base/hit_test.h" +#include "ui/compositor/scoped_animation_duration_scale_mode.h" #include "ui/display/screen.h" +#include "ui/gfx/animation/animation_delegate.h" +#include "ui/gfx/animation/slide_animation.h" +#include "ui/gfx/canvas.h" #include "ui/gfx/geometry/vector2d.h" +#include "ui/views/animation/compositor_animation_runner.h" #include "ui/views/widget/widget.h" namespace chromeos { @@ -34,6 +39,12 @@ const int kMaxOvershootX = 200; const int kMaxOvershootY = 50; +constexpr base::TimeDelta kPieAnimationPressDuration = base::Milliseconds(150); +constexpr base::TimeDelta kPieAnimationHoverDuration = base::Milliseconds(500); + +// TODO(sammiequon): Update the color to match specs. +constexpr SkColor kPieColor = SkColorSetA(SK_ColorGRAY, 128); + // Returns true if a mouse drag while in "snap mode" at |location_in_screen| // would hover/press |button| or keep it hovered/pressed. bool HitTestButton(const views::FrameCaptionButton* button, @@ -83,6 +94,87 @@ } // namespace +// This class controls animating a pie on a parent button which indicates when +// long press or long hover will end. +class FrameSizeButton::PieAnimation : public gfx::SlideAnimation, + public gfx::AnimationDelegate { + public: + PieAnimation(base::TimeDelta duration, + base::OnceClosure on_animation_canceled, + base::OnceClosure on_animation_ended, + FrameSizeButton* button) + : gfx::SlideAnimation(this), + on_animation_canceled_(std::move(on_animation_canceled)), + on_animation_ended_(std::move(on_animation_ended)), + button_(button) { + // `SlideAnimation` is unaffected by debug tools such as + // "--ui-slow-animations" flag, so manually multiply the duration here. + SetSlideDuration( + ui::ScopedAnimationDurationScaleMode::duration_multiplier() * duration); + SetTweenType(gfx::Tween::LINEAR); + + // Use a runner synced with the compositor. + gfx::AnimationContainer* container = new gfx::AnimationContainer(); + container->SetAnimationRunner( + std::make_unique<views::CompositorAnimationRunner>( + button_->GetWidget())); + SetContainer(container); + + Show(); + } + + PieAnimation(const PieAnimation&) = delete; + PieAnimation& operator=(const PieAnimation&) = delete; + + ~PieAnimation() override = default; + + void Paint(gfx::Canvas* canvas) { + // Use the bounds of the inkdrop. Assert that the width and height matches + // so we get a nice round pie. + gfx::Rect bounds = button_->GetLocalBounds(); + bounds.Inset(button_->GetInkdropInsets(bounds.size())); + DCHECK_EQ(bounds.width(), bounds.height()); + + // The pie is a filled arc which starts at the top and sweeps around + // clockwise. + const SkScalar start_angle = -90.f; + const SkScalar sweep_angle = 360.f * GetCurrentValue(); + + SkPath path; + path.moveTo(bounds.CenterPoint().x(), bounds.CenterPoint().y()); + path.arcTo(gfx::RectToSkRect(bounds), start_angle, sweep_angle, + /*forceMoveTo=*/false); + path.close(); + + cc::PaintFlags flags; + flags.setColor(kPieColor); + flags.setAntiAlias(true); + flags.setStyle(cc::PaintFlags::kFill_Style); + canvas->DrawPath(path, flags); + } + + // gfx::AnimationDelegate: + void AnimationEnded(const gfx::Animation* animation) override { + button_->SchedulePaint(); + std::move(on_animation_ended_).Run(); + } + + void AnimationProgressed(const gfx::Animation* animation) override { + button_->SchedulePaint(); + } + + void AnimationCanceled(const gfx::Animation* animation) override { + std::move(on_animation_canceled_).Run(); + } + + private: + base::OnceClosure on_animation_canceled_; + base::OnceClosure on_animation_ended_; + + // The button `this` is associated with. Unowned. + raw_ptr<FrameSizeButton> button_; +}; + // The class to observe the to-be-snapped window during the waiting-for-snap // mode. If the window's window state is changed or the window is put in // overview during the waiting mode, cancel the snap. @@ -141,14 +233,28 @@ FrameSizeButton::~FrameSizeButton() = default; bool FrameSizeButton::OnMousePressed(const ui::MouseEvent& event) { + // Note that this triggers `StateChanged()`, and we want the changes to + // `pie_animation_` below to come after `StateChanged()`. + views::FrameCaptionButton::OnMousePressed(event); + // The minimize and close buttons are set to snap left and right when snapping // is enabled. Do not enable snapping if the minimize button is not visible. // The close button is always visible. if (IsTriggerableEvent(event) && !in_snap_mode_ && delegate_->IsMinimizeButtonVisible() && delegate_->CanSnap()) { StartSetButtonsToSnapModeTimer(event); + + // Add a visual indicator of when snap mode will get triggered. + if (chromeos::wm::features::IsFloatWindowEnabled()) { + std::pair<base::OnceClosure, base::OnceClosure> split = + base::SplitOnceCallback(base::BindOnce( + &FrameSizeButton::DestroyPieAnimation, base::Unretained(this))); + pie_animation_ = std::make_unique<PieAnimation>( + kPieAnimationPressDuration, std::move(split.first), + std::move(split.second), this); + } } - views::FrameCaptionButton::OnMousePressed(event); + return true; } @@ -187,8 +293,22 @@ } if (event->type() == ui::ET_GESTURE_TAP_DOWN && delegate_->CanSnap()) { StartSetButtonsToSnapModeTimer(*event); + // Go through FrameCaptionButton's handling so that the button gets pressed. views::FrameCaptionButton::OnGestureEvent(event); + + // Add a visual indicator of when snap mode will get triggered. Note that + // order matters as the subclasses will call `StateChanged()` and we want + // the changes there to run first. + if (chromeos::wm::features::IsFloatWindowEnabled()) { + std::pair<base::OnceClosure, base::OnceClosure> split = + base::SplitOnceCallback(base::BindOnce( + &FrameSizeButton::DestroyPieAnimation, base::Unretained(this))); + pie_animation_ = std::make_unique<PieAnimation>( + kPieAnimationPressDuration, std::move(split.first), + std::move(split.second), this); + } + return; } @@ -212,6 +332,30 @@ views::FrameCaptionButton::OnGestureEvent(event); } +void FrameSizeButton::StateChanged(views::Button::ButtonState old_state) { + if (!chromeos::wm::features::IsFloatWindowEnabled()) + return; + + if (GetState() == views::Button::STATE_HOVERED) { + // TODO(shidi): On animation end we should show the multitask menu. + std::pair<base::OnceClosure, base::OnceClosure> split = + base::SplitOnceCallback(base::BindOnce( + &FrameSizeButton::DestroyPieAnimation, base::Unretained(this))); + pie_animation_ = std::make_unique<PieAnimation>( + kPieAnimationHoverDuration, std::move(split.first), + std::move(split.second), this); + } else if (old_state == views::Button::STATE_HOVERED) { + pie_animation_.reset(); + } +} + +void FrameSizeButton::PaintButtonContents(gfx::Canvas* canvas) { + if (pie_animation_) + pie_animation_->Paint(canvas); + + views::FrameCaptionButton::PaintButtonContents(canvas); +} + const raw_ptr<MultitaskMenu> FrameSizeButton::GetMultitaskMenuForTesting() { // Force creating Multitask Menu. ShowMultitaskMenu(); @@ -349,8 +493,13 @@ void FrameSizeButton::SetButtonsToNormalMode( FrameSizeButtonDelegate::Animate animate) { in_snap_mode_ = false; + pie_animation_.reset(); set_buttons_to_snap_mode_timer_.Stop(); delegate_->SetButtonsToNormal(animate); } +void FrameSizeButton::DestroyPieAnimation() { + pie_animation_.reset(); +} + } // namespace chromeos
diff --git a/chromeos/ui/frame/caption_buttons/frame_size_button.h b/chromeos/ui/frame/caption_buttons/frame_size_button.h index 0548f34..91342168 100644 --- a/chromeos/ui/frame/caption_buttons/frame_size_button.h +++ b/chromeos/ui/frame/caption_buttons/frame_size_button.h
@@ -37,13 +37,15 @@ ~FrameSizeButton() override; - // views::Button overrides: + // views::Button: bool OnMousePressed(const ui::MouseEvent& event) override; bool OnMouseDragged(const ui::MouseEvent& event) override; void OnMouseReleased(const ui::MouseEvent& event) override; void OnMouseCaptureLost() override; void OnMouseMoved(const ui::MouseEvent& event) override; void OnGestureEvent(ui::GestureEvent* event) override; + void StateChanged(views::Button::ButtonState old_state) override; + void PaintButtonContents(gfx::Canvas* canvas) override; // Cancel the snap opereation if we're currently in snap mode. The snap // preview will be deleted and the button will be set back to its normal mode. @@ -57,6 +59,7 @@ bool in_snap_mode_for_testing() { return in_snap_mode_; } private: + class PieAnimation; class SnappingWindowObserver; // Starts |set_buttons_to_snap_mode_timer_|. @@ -88,6 +91,8 @@ // whether the buttons should animate back to their original icons. void SetButtonsToNormalMode(FrameSizeButtonDelegate::Animate animate); + void DestroyPieAnimation(); + // Not owned. raw_ptr<FrameSizeButtonDelegate> delegate_; @@ -107,6 +112,10 @@ raw_ptr<MultitaskMenu> multitask_menu_; + // Creates an animation to add indication to when long hover and long press to + // show multitask menu and snap buttons will trigger. + std::unique_ptr<PieAnimation> pie_animation_; + // Whether the buttons adjacent to the size button snap the window left and // right. bool in_snap_mode_;
diff --git a/chromeos/ui/frame/desks/move_to_desks_menu_model.cc b/chromeos/ui/frame/desks/move_to_desks_menu_model.cc index 0fb04ef..7c0f7ac9 100644 --- a/chromeos/ui/frame/desks/move_to_desks_menu_model.cc +++ b/chromeos/ui/frame/desks/move_to_desks_menu_model.cc
@@ -37,7 +37,7 @@ MoveToDesksMenuModel::~MoveToDesksMenuModel() {} -bool MoveToDesksMenuModel::MayHaveMnemonicsAt(int index) const { +bool MoveToDesksMenuModel::MayHaveMnemonicsAt(size_t index) const { // If the label is a user-created desk name, the user might have ampersands so // don't process mnemonics for them. return (index == assign_to_all_desks_item_index_);
diff --git a/chromeos/ui/frame/desks/move_to_desks_menu_model.h b/chromeos/ui/frame/desks/move_to_desks_menu_model.h index 7889f5d2..44fc95c 100644 --- a/chromeos/ui/frame/desks/move_to_desks_menu_model.h +++ b/chromeos/ui/frame/desks/move_to_desks_menu_model.h
@@ -42,7 +42,7 @@ }; // SimpleMenuModel: - bool MayHaveMnemonicsAt(int index) const override; + bool MayHaveMnemonicsAt(size_t index) const override; private: // A menu delegate used to determine which labels are shown and enabled. Also @@ -50,7 +50,7 @@ std::unique_ptr<ui::SimpleMenuModel::Delegate> delegate_; // This is the index of the assign to all desks item in the menu model. - int assign_to_all_desks_item_index_; + size_t assign_to_all_desks_item_index_; }; } // namespace chromeos
diff --git a/components/captive_portal/core/BUILD.gn b/components/captive_portal/core/BUILD.gn index 1189a3c..965abdb51 100644 --- a/components/captive_portal/core/BUILD.gn +++ b/components/captive_portal/core/BUILD.gn
@@ -31,7 +31,7 @@ ] if (is_chromeos_ash) { - deps += [ "//chromeos/network" ] + deps += [ "//chromeos/ash/components/network" ] } }
diff --git a/components/captive_portal/core/DEPS b/components/captive_portal/core/DEPS index d6896f0..44b6260 100644 --- a/components/captive_portal/core/DEPS +++ b/components/captive_portal/core/DEPS
@@ -1,6 +1,5 @@ include_rules = [ "+chromeos/ash/components/network", - "+chromeos/network", "+services/network/public/cpp", "+services/network/public/mojom", "+services/network/test",
diff --git a/components/custom_handlers/protocol_handler_registry.cc b/components/custom_handlers/protocol_handler_registry.cc index dce19ce5..ee2f088 100644 --- a/components/custom_handlers/protocol_handler_registry.cc +++ b/components/custom_handlers/protocol_handler_registry.cc
@@ -24,6 +24,7 @@ #include "components/user_prefs/user_prefs.h" #include "content/public/browser/child_process_security_policy.h" #include "third_party/abseil-cpp/absl/types/optional.h" +#include "url/url_util.h" using content::BrowserThread; using content::ChildProcessSecurityPolicy; @@ -68,11 +69,9 @@ auto registry = std::make_unique<ProtocolHandlerRegistry>(prefs, std::move(delegate)); -#if BUILDFLAG(IS_CHROMEOS_ASH) // If installing defaults, they must be installed prior calling // InitProtocolSettings. - registry->InstallDefaultsForChromeOS(); -#endif + registry->InstallPredefinedHandlers(); registry->InitProtocolSettings(); @@ -178,17 +177,11 @@ return GetHandlerFor(handler.protocol()) == handler; } -void ProtocolHandlerRegistry::InstallDefaultsForChromeOS() { -#if BUILDFLAG(IS_CHROMEOS_ASH) - // Only chromeos has default protocol handlers at this point. - AddPredefinedHandler(ProtocolHandler::CreateProtocolHandler( - "mailto", - GURL("https://mail.google.com/mail/?extsrc=mailto&url=%s"))); - AddPredefinedHandler(ProtocolHandler::CreateProtocolHandler( - "webcal", GURL("https://www.google.com/calendar/render?cid=%s"))); -#else - NOTREACHED(); // this method should only ever be called in chromeos. -#endif +void ProtocolHandlerRegistry::InstallPredefinedHandlers() { + for (const auto& [scheme, handler] : url::GetPredefinedHandlerSchemes()) { + AddPredefinedHandler( + ProtocolHandler::CreateProtocolHandler(scheme, GURL(handler))); + } } void ProtocolHandlerRegistry::InitProtocolSettings() {
diff --git a/components/custom_handlers/protocol_handler_registry.h b/components/custom_handlers/protocol_handler_registry.h index 428cfd9..ad6936e44 100644 --- a/components/custom_handlers/protocol_handler_registry.h +++ b/components/custom_handlers/protocol_handler_registry.h
@@ -227,7 +227,7 @@ // Install default protocol handlers for chromeos which must be done // prior to calling InitProtocolSettings. - void InstallDefaultsForChromeOS(); + void InstallPredefinedHandlers(); // Puts the given handler at the top of the list of handlers for its // protocol.
diff --git a/components/dbus/menu/menu.cc b/components/dbus/menu/menu.cc index aaff5c9..9da0bec 100644 --- a/components/dbus/menu/menu.cc +++ b/components/dbus/menu/menu.cc
@@ -100,7 +100,7 @@ std::vector<int32_t>&& children, ui::MenuModel* menu, ui::MenuModel* containing_menu, - int containing_menu_index) + size_t containing_menu_index) : id(id), properties(std::move(properties)), children(std::move(children)), @@ -210,7 +210,7 @@ MenuPropertyChanges removed_props; for (const auto& menu_item : menu_items) { ui::MenuModel* menu = menu_item.first; - int index = menu_item.second; + size_t index = menu_item.second; MenuItem* parent = FindMenuItemForModel(menu, items_[0].get()); MenuItem* item = nullptr; for (int32_t id : parent->children) { @@ -475,7 +475,7 @@ return items; items.reserve(menu->GetItemCount()); - for (int i = 0; i < menu->GetItemCount(); ++i) { + for (size_t i = 0; i < menu->GetItemCount(); ++i) { ui::MenuModel* submenu = menu->GetSubmenuModelAt(i); std::vector<int32_t> children = ConvertMenu(submenu);
diff --git a/components/dbus/menu/menu.h b/components/dbus/menu/menu.h index ddb50aa..376e8c4 100644 --- a/components/dbus/menu/menu.h +++ b/components/dbus/menu/menu.h
@@ -31,7 +31,7 @@ class COMPONENT_EXPORT(DBUS) DbusMenu { public: using InitializedCallback = base::OnceCallback<void(bool success)>; - using MenuItemReference = std::pair<ui::MenuModel*, int>; + using MenuItemReference = std::pair<ui::MenuModel*, size_t>; // The exported DBus object will not be unregistered upon deletion. It is the // responsibility of the caller to remove it after |this| is deleted. @@ -62,7 +62,7 @@ std::vector<int32_t>&& children, ui::MenuModel* menu, ui::MenuModel* containing_menu, - int containing_menu_index); + size_t containing_menu_index); MenuItem(const MenuItem&) = delete; MenuItem& operator=(const MenuItem&) = delete; @@ -79,7 +79,7 @@ // |containing_menu| will be null for the root item. If it's null, then // |containing_menu_index| is meaningless. const raw_ptr<ui::MenuModel> containing_menu; - const int containing_menu_index; + const size_t containing_menu_index; }; class ScopedMethodResponse {
diff --git a/components/dbus/menu/menu_property_list.cc b/components/dbus/menu/menu_property_list.cc index 9b9baf3..5f76227 100644 --- a/components/dbus/menu/menu_property_list.cc +++ b/components/dbus/menu/menu_property_list.cc
@@ -55,7 +55,7 @@ } // namespace MenuItemProperties ComputeMenuPropertiesForMenuItem(ui::MenuModel* menu, - int i) { + size_t i) { // Properties should only be set if they differ from the default values. MenuItemProperties properties;
diff --git a/components/dbus/menu/menu_property_list.h b/components/dbus/menu/menu_property_list.h index c2cf0e79..3b709d4 100644 --- a/components/dbus/menu/menu_property_list.h +++ b/components/dbus/menu/menu_property_list.h
@@ -21,7 +21,8 @@ // Computes properties for the menu item with index |i| in |menu|. COMPONENT_EXPORT(DBUS) -MenuItemProperties ComputeMenuPropertiesForMenuItem(ui::MenuModel* menu, int i); +MenuItemProperties ComputeMenuPropertiesForMenuItem(ui::MenuModel* menu, + size_t i); // Given inputs |old_properties| and |new_properties|, computes outputs // |item_updated_props| and |item_removed_props| suitable for use in
diff --git a/components/dbus/menu/menu_property_list_unittest.cc b/components/dbus/menu/menu_property_list_unittest.cc index 0261bc8..e2e66f52 100644 --- a/components/dbus/menu/menu_property_list_unittest.cc +++ b/components/dbus/menu/menu_property_list_unittest.cc
@@ -53,8 +53,8 @@ protected: // ui::MenuModel:: - bool IsItemDynamicAt(int index) const override { - EXPECT_LE(index, 0); + bool IsItemDynamicAt(size_t index) const override { + EXPECT_EQ(index, 0u); // Return true so that GetIconForCommandId() will always be called. return true; }
diff --git a/components/exo/BUILD.gn b/components/exo/BUILD.gn index dc6316c..4a7310c0 100644 --- a/components/exo/BUILD.gn +++ b/components/exo/BUILD.gn
@@ -224,6 +224,8 @@ "test/exo_test_base_views.h", "test/exo_test_suite_aura.cc", "test/exo_test_suite_aura.h", + "test/mock_security_delegate.cc", + "test/mock_security_delegate.h", ] public_deps = [ "//testing/gtest" ]
diff --git a/components/exo/security_delegate.cc b/components/exo/security_delegate.cc index c6ae00f5..a472526 100644 --- a/components/exo/security_delegate.cc +++ b/components/exo/security_delegate.cc
@@ -7,6 +7,8 @@ #include <memory> #include <string> +#include "components/exo/shell_surface_util.h" + namespace exo { namespace { @@ -28,4 +30,13 @@ return std::make_unique<DefaultSecurityDelegate>(); } +bool SecurityDelegate::CanSelfActivate(aura::Window* window) const { + // TODO(b/233691818): The default should be "false", and clients should + // override that if they need to self-activate. + // + // Unfortunately, several clients don't have their own SecurityDelegate yet, + // so we will continue to use the old exo::Permissions stuff until they do. + return HasPermissionToActivate(window); +} + } // namespace exo
diff --git a/components/exo/security_delegate.h b/components/exo/security_delegate.h index 6f7635e3a2..8d8974b 100644 --- a/components/exo/security_delegate.h +++ b/components/exo/security_delegate.h
@@ -8,6 +8,10 @@ #include <memory> #include <string> +namespace aura { +class Window; +} + namespace exo { // Defines the set of actions/associations which are needed to implement a @@ -35,6 +39,12 @@ // server may use it, and it is an error to spawn a non-default server without // a security context. virtual std::string GetSecurityContext() const = 0; + + // "Self-activation" is a security sensitive windowing operation that is a + // common paradigm in X11. The need to self-activate is controlled + // per-subsystem, i.e. a product like ARC++ knows that its windows should be + // able to self activate, whereas Crostini knows they usually shouldn't. + virtual bool CanSelfActivate(aura::Window* window) const; }; } // namespace exo
diff --git a/components/exo/shell_surface_base.cc b/components/exo/shell_surface_base.cc index 9b28652..d036c7e 100644 --- a/components/exo/shell_surface_base.cc +++ b/components/exo/shell_surface_base.cc
@@ -45,6 +45,7 @@ #include "components/app_restore/app_restore_utils.h" #include "components/app_restore/window_properties.h" #include "components/exo/custom_window_state_delegate.h" +#include "components/exo/security_delegate.h" #include "components/exo/shell_surface_util.h" #include "components/exo/surface.h" #include "components/exo/window_properties.h" @@ -944,8 +945,10 @@ } void ShellSurfaceBase::OnActivationRequested() { - if (widget_ && HasPermissionToActivate(widget_->GetNativeWindow())) + if (widget_ && GetSecurityDelegate() && + GetSecurityDelegate()->CanSelfActivate(widget_->GetNativeWindow())) { this->Activate(); + } } void ShellSurfaceBase::OnSetServerStartResize() {
diff --git a/components/exo/shell_surface_unittest.cc b/components/exo/shell_surface_unittest.cc index a917c1f..f7a0d9f 100644 --- a/components/exo/shell_surface_unittest.cc +++ b/components/exo/shell_surface_unittest.cc
@@ -26,12 +26,14 @@ #include "components/app_restore/window_properties.h" #include "components/exo/buffer.h" #include "components/exo/permission.h" +#include "components/exo/security_delegate.h" #include "components/exo/shell_surface_util.h" #include "components/exo/sub_surface.h" #include "components/exo/surface.h" #include "components/exo/surface_test_util.h" #include "components/exo/test/exo_test_base.h" #include "components/exo/test/exo_test_helper.h" +#include "components/exo/test/mock_security_delegate.h" #include "components/exo/test/shell_surface_builder.h" #include "components/exo/window_properties.h" #include "components/exo/wm_helper.h" @@ -497,7 +499,7 @@ EXPECT_EQ(nullptr, GetShellApplicationId(window)); } -TEST_F(ShellSurfaceTest, ActivationPermission) { +TEST_F(ShellSurfaceTest, ActivationPermissionLegacy) { gfx::Size buffer_size(64, 64); std::unique_ptr<Buffer> buffer( new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); @@ -528,7 +530,9 @@ EXPECT_TRUE(HasPermissionToActivate(window)); } -TEST_F(ShellSurfaceTest, WidgetActivation) { +TEST_F(ShellSurfaceTest, WidgetActivationLegacy) { + std::unique_ptr<SecurityDelegate> default_security_delegate = + SecurityDelegate::GetDefaultSecurityDelegate(); gfx::Size buffer_size(64, 64); auto buffer1 = std::make_unique<Buffer>( exo_test_helper()->CreateGpuMemoryBuffer(buffer_size)); @@ -536,6 +540,7 @@ auto shell_surface1 = std::make_unique<ShellSurface>(surface1.get()); surface1->Attach(buffer1.get()); surface1->Commit(); + shell_surface1->SetSecurityDelegate(default_security_delegate.get()); // The window is active. views::Widget* widget1 = shell_surface1->GetWidget(); @@ -548,6 +553,7 @@ auto shell_surface2 = std::make_unique<ShellSurface>(surface2.get()); surface2->Attach(buffer2.get()); surface2->Commit(); + shell_surface2->SetSecurityDelegate(default_security_delegate.get()); // Now the second window is active. views::Widget* widget2 = shell_surface2->GetWidget(); @@ -568,6 +574,44 @@ EXPECT_FALSE(widget2->IsActive()); } +TEST_F(ShellSurfaceTest, WidgetActivation) { + test::MockSecurityDelegate security_delegate; + gfx::Size buffer_size(64, 64); + std::unique_ptr<ShellSurface> shell_surface1 = + test::ShellSurfaceBuilder(buffer_size) + .SetSecurityDelegate(&security_delegate) + .BuildShellSurface(); + + // The window is active. + views::Widget* widget1 = shell_surface1->GetWidget(); + EXPECT_TRUE(widget1->IsActive()); + + // Create a second window. + std::unique_ptr<ShellSurface> shell_surface2 = + test::ShellSurfaceBuilder(buffer_size) + .SetSecurityDelegate(&security_delegate) + .BuildShellSurface(); + + // Now the second window is active. + views::Widget* widget2 = shell_surface2->GetWidget(); + EXPECT_FALSE(widget1->IsActive()); + EXPECT_TRUE(widget2->IsActive()); + + // The first window can activate itself. + EXPECT_CALL(security_delegate, CanSelfActivate(widget1->GetNativeWindow())) + .WillOnce(testing::Return(true)); + shell_surface1->surface_for_testing()->RequestActivation(); + EXPECT_TRUE(widget1->IsActive()); + EXPECT_FALSE(widget2->IsActive()); + + // The second window cannot activate itself. + EXPECT_CALL(security_delegate, CanSelfActivate(widget2->GetNativeWindow())) + .WillOnce(testing::Return(false)); + shell_surface2->surface_for_testing()->RequestActivation(); + EXPECT_TRUE(widget1->IsActive()); + EXPECT_FALSE(widget2->IsActive()); +} + TEST_F(ShellSurfaceTest, EmulateOverrideRedirect) { gfx::Size buffer_size(64, 64); std::unique_ptr<Buffer> buffer(
diff --git a/components/exo/test/mock_security_delegate.cc b/components/exo/test/mock_security_delegate.cc new file mode 100644 index 0000000..5ca32a67 --- /dev/null +++ b/components/exo/test/mock_security_delegate.cc
@@ -0,0 +1,12 @@ +// Copyright 2022 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 "components/exo/test/mock_security_delegate.h" + +namespace exo::test { + +MockSecurityDelegate::MockSecurityDelegate() = default; +MockSecurityDelegate::~MockSecurityDelegate() = default; + +} // namespace exo::test
diff --git a/components/exo/test/mock_security_delegate.h b/components/exo/test/mock_security_delegate.h new file mode 100644 index 0000000..b280d26 --- /dev/null +++ b/components/exo/test/mock_security_delegate.h
@@ -0,0 +1,25 @@ +// Copyright 2022 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 COMPONENTS_EXO_TEST_MOCK_SECURITY_DELEGATE_H_ +#define COMPONENTS_EXO_TEST_MOCK_SECURITY_DELEGATE_H_ + +#include "components/exo/security_delegate.h" + +#include "testing/gmock/include/gmock/gmock.h" + +namespace exo::test { + +class MockSecurityDelegate : public SecurityDelegate { + public: + MockSecurityDelegate(); + ~MockSecurityDelegate() override; + + MOCK_METHOD(std::string, GetSecurityContext, (), (const, override)); + MOCK_METHOD(bool, CanSelfActivate, (aura::Window*), (const, override)); +}; + +} // namespace exo::test + +#endif // COMPONENTS_EXO_TEST_MOCK_SECURITY_DELEGATE_H_
diff --git a/components/exo/test/shell_surface_builder.cc b/components/exo/test/shell_surface_builder.cc index 6eb8596..bb316bc 100644 --- a/components/exo/test/shell_surface_builder.cc +++ b/components/exo/test/shell_surface_builder.cc
@@ -208,6 +208,13 @@ return *this; } +ShellSurfaceBuilder& ShellSurfaceBuilder::SetSecurityDelegate( + SecurityDelegate* security_delegate) { + DCHECK(!built_); + security_delegate_ = security_delegate; + return *this; +} + ShellSurfaceBuilder& ShellSurfaceBuilder::SetParent(ShellSurface* parent) { DCHECK(!built_); parent_shell_surface_ = parent; @@ -382,6 +389,10 @@ shell_surface->SetSystemModal(true); } + if (security_delegate_) { + shell_surface->SetSecurityDelegate(security_delegate_); + } + if (commit_on_build_) { shell_surface->root_surface()->Commit(); if (centered_)
diff --git a/components/exo/test/shell_surface_builder.h b/components/exo/test/shell_surface_builder.h index dd89dc0..8c21d5e 100644 --- a/components/exo/test/shell_surface_builder.h +++ b/components/exo/test/shell_surface_builder.h
@@ -17,6 +17,7 @@ namespace exo { class ClientControlledShellSurface; +class SecurityDelegate; class ShellSurface; class ShellSurfaceBase; class Surface; @@ -52,6 +53,7 @@ ShellSurfaceBuilder& SetApplicationId(const std::string& application_id); ShellSurfaceBuilder& SetDisableMovement(); ShellSurfaceBuilder& SetCentered(); + ShellSurfaceBuilder& SetSecurityDelegate(SecurityDelegate* security_delegate); // Sets parameters defined in ShellSurface. ShellSurfaceBuilder& SetParent(ShellSurface* shell_surface); @@ -89,6 +91,7 @@ absl::optional<gfx::Rect> geometry_; absl::optional<cc::Region> input_region_; absl::optional<SurfaceFrameType> type_; + SecurityDelegate* security_delegate_ = nullptr; std::string application_id_; bool use_system_modal_container_ = false; bool system_modal_ = false;
diff --git a/components/renderer_context_menu/render_view_context_menu_base.cc b/components/renderer_context_menu/render_view_context_menu_base.cc index 92bf0cec..9600ae2 100644 --- a/components/renderer_context_menu/render_view_context_menu_base.cc +++ b/components/renderer_context_menu/render_view_context_menu_base.cc
@@ -247,13 +247,13 @@ bool enabled, bool hidden, const std::u16string& label) { - int index = menu_model_.GetIndexOfCommandId(command_id); - if (index == -1) + absl::optional<size_t> index = menu_model_.GetIndexOfCommandId(command_id); + if (!index.has_value()) return; - menu_model_.SetLabel(index, label); - menu_model_.SetEnabledAt(index, enabled); - menu_model_.SetVisibleAt(index, !hidden); + menu_model_.SetLabel(index.value(), label); + menu_model_.SetEnabledAt(index.value(), enabled); + menu_model_.SetVisibleAt(index.value(), !hidden); if (toolkit_delegate_) { #if BUILDFLAG(IS_MAC) toolkit_delegate_->UpdateMenuItem(command_id, enabled, hidden, label); @@ -265,11 +265,11 @@ void RenderViewContextMenuBase::UpdateMenuIcon(int command_id, const ui::ImageModel& icon) { - int index = menu_model_.GetIndexOfCommandId(command_id); - if (index == -1) + absl::optional<size_t> index = menu_model_.GetIndexOfCommandId(command_id); + if (!index.has_value()) return; - menu_model_.SetIcon(index, icon); + menu_model_.SetIcon(index.value(), icon); #if BUILDFLAG(IS_CHROMEOS_ASH) if (toolkit_delegate_) toolkit_delegate_->RebuildMenu(); @@ -277,11 +277,11 @@ } void RenderViewContextMenuBase::RemoveMenuItem(int command_id) { - int index = menu_model_.GetIndexOfCommandId(command_id); - if (index == -1) + absl::optional<size_t> index = menu_model_.GetIndexOfCommandId(command_id); + if (!index.has_value()) return; - menu_model_.RemoveItemAt(index); + menu_model_.RemoveItemAt(index.value()); if (toolkit_delegate_) toolkit_delegate_->RebuildMenu(); } @@ -289,15 +289,15 @@ // Removes separators so that if there are two separators next to each other, // only one of them remains. void RenderViewContextMenuBase::RemoveAdjacentSeparators() { - int num_items = menu_model_.GetItemCount(); - for (int index = num_items - 1; index > 0; --index) { - ui::MenuModel::ItemType curr_type = menu_model_.GetTypeAt(index); - ui::MenuModel::ItemType prev_type = menu_model_.GetTypeAt(index - 1); + size_t num_items = menu_model_.GetItemCount(); + for (size_t index = num_items; index > 1; --index) { + ui::MenuModel::ItemType curr_type = menu_model_.GetTypeAt(index - 1); + ui::MenuModel::ItemType prev_type = menu_model_.GetTypeAt(index - 2); if (curr_type == ui::MenuModel::ItemType::TYPE_SEPARATOR && prev_type == ui::MenuModel::ItemType::TYPE_SEPARATOR) { // We found adjacent separators, remove the one at the bottom. - menu_model_.RemoveItemAt(index); + menu_model_.RemoveItemAt(index - 1); } } @@ -306,16 +306,16 @@ } void RenderViewContextMenuBase::RemoveSeparatorBeforeMenuItem(int command_id) { - int index = menu_model_.GetIndexOfCommandId(command_id); - // Ignore if command not found (index == -1) or if it's the first menu item. - if (index <= 0) + absl::optional<size_t> index = menu_model_.GetIndexOfCommandId(command_id); + // Ignore if command not found or if it's the first menu item. + if (!index.has_value() || index == size_t{0}) return; - ui::MenuModel::ItemType prev_type = menu_model_.GetTypeAt(index - 1); + ui::MenuModel::ItemType prev_type = menu_model_.GetTypeAt(index.value() - 1); if (prev_type != ui::MenuModel::ItemType::TYPE_SEPARATOR) return; - menu_model_.RemoveItemAt(index - 1); + menu_model_.RemoveItemAt(index.value() - 1); if (toolkit_delegate_) toolkit_delegate_->RebuildMenu(); @@ -408,7 +408,7 @@ } void RenderViewContextMenuBase::OnMenuWillShow(ui::SimpleMenuModel* source) { - for (int i = 0; i < source->GetItemCount(); ++i) { + for (size_t i = 0; i < source->GetItemCount(); ++i) { if (source->IsVisibleAt(i) && source->GetTypeAt(i) != ui::MenuModel::TYPE_SEPARATOR) { RecordShownItem(source->GetCommandIdAt(i),
diff --git a/components/segmentation_platform/internal/execution/processing/custom_input_processor.cc b/components/segmentation_platform/internal/execution/processing/custom_input_processor.cc index 611540e7..524166c 100644 --- a/components/segmentation_platform/internal/execution/processing/custom_input_processor.cc +++ b/components/segmentation_platform/internal/execution/processing/custom_input_processor.cc
@@ -139,7 +139,8 @@ DCHECK(custom_inputs.empty()); if (!success || feature_processor_state->error()) { result->clear(); - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kCustomInputError); } base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, @@ -158,7 +159,8 @@ bool error, Tensor current_value) { if (error) { - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kCustomInputError); } else { DCHECK_EQ(current_tensor_length, current_value.size()); } @@ -201,16 +203,20 @@ } else if (custom_input.fill_policy() == proto::CustomInput::FILL_PREDICTION_TIME) { if (!AddPredictionTime(custom_input, tensor_result)) - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kCustomInputError); } else if (custom_input.fill_policy() == proto::CustomInput::TIME_RANGE_BEFORE_PREDICTION) { if (!AddTimeRangeBeforePrediction(custom_input, tensor_result)) - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kCustomInputError); } else if (custom_input.fill_policy() == proto::CustomInput::PRICE_TRACKING_HINTS) { - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kCustomInputError); NOTREACHED() << "InputDelegate is not found"; } + return tensor_result; }
diff --git a/components/segmentation_platform/internal/execution/processing/feature_list_query_processor.cc b/components/segmentation_platform/internal/execution/processing/feature_list_query_processor.cc index b15a732..ad0a07e 100644 --- a/components/segmentation_platform/internal/execution/processing/feature_list_query_processor.cc +++ b/components/segmentation_platform/internal/execution/processing/feature_list_query_processor.cc
@@ -115,7 +115,8 @@ auto* ukm_manager = storage_service_->ukm_data_manager(); if (!ukm_manager->IsUkmEngineEnabled()) { // UKM engine is disabled, feature cannot be processed. - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kUkmEngineDisabled); feature_processor_state->RunCallback(); return; }
diff --git a/components/segmentation_platform/internal/execution/processing/feature_processor_state.cc b/components/segmentation_platform/internal/execution/processing/feature_processor_state.cc index a8ea6da..38f54b0 100644 --- a/components/segmentation_platform/internal/execution/processing/feature_processor_state.cc +++ b/components/segmentation_platform/internal/execution/processing/feature_processor_state.cc
@@ -50,7 +50,11 @@ FeatureProcessorState::~FeatureProcessorState() = default; -void FeatureProcessorState::SetError() { +void FeatureProcessorState::SetError(stats::FeatureProcessingError error) { + stats::RecordFeatureProcessingError(segment_id_, error); + DVLOG(1) << "Processing error occured: model " + << stats::OptimizationTargetToHistogramVariant(segment_id_) + << " failed with " << stats::FeatureProcessingErrorToString(error); error_ = true; input_tensor_.clear(); } @@ -79,7 +83,7 @@ if (value.type == ProcessedValue::Type::FLOAT) { tensor_result.push_back(value.float_val); } else { - SetError(); + SetError(stats::FeatureProcessingError::kResultTensorError); return; } }
diff --git a/components/segmentation_platform/internal/execution/processing/feature_processor_state.h b/components/segmentation_platform/internal/execution/processing/feature_processor_state.h index 74e7f18c..e080208 100644 --- a/components/segmentation_platform/internal/execution/processing/feature_processor_state.h +++ b/components/segmentation_platform/internal/execution/processing/feature_processor_state.h
@@ -14,6 +14,7 @@ #include "components/segmentation_platform/internal/database/ukm_types.h" #include "components/segmentation_platform/internal/execution/processing/feature_list_query_processor.h" #include "components/segmentation_platform/internal/proto/model_metadata.pb.h" +#include "components/segmentation_platform/internal/stats.h" #include "components/segmentation_platform/public/input_context.h" #include "components/segmentation_platform/public/proto/segmentation_platform.pb.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -73,9 +74,7 @@ Data PopNextData(); // Sets an error to the current feature processor state. - // TODO(haileywang): Pass in a reason for error enum here and record an enum - // histogram of feature failure reasons. - void SetError(); + void SetError(stats::FeatureProcessingError error); // Returns whether the input feature list is empty. bool IsFeatureListEmpty() const;
diff --git a/components/segmentation_platform/internal/execution/processing/sql_feature_processor.cc b/components/segmentation_platform/internal/execution/processing/sql_feature_processor.cc index 20f96f5..bf9b46a 100644 --- a/components/segmentation_platform/internal/execution/processing/sql_feature_processor.cc +++ b/components/segmentation_platform/internal/execution/processing/sql_feature_processor.cc
@@ -42,7 +42,8 @@ // Validate the proto::SqlFeature metadata. if (metadata_utils::ValidateMetadataSqlFeature(feature) != metadata_utils::ValidationResult::kValidationSuccess) { - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kSqlValidationError); base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback_), std::move(feature_processor_state), @@ -85,7 +86,8 @@ } if (total_bind_values != result.size()) { - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kSqlBindValuesError); base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback_), std::move(feature_processor_state), @@ -107,7 +109,8 @@ // Validate the result tensor. if (result.count(std::make_pair(sql_feature_index, bind_value_index)) != 1) { - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kResultTensorError); base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(std::move(callback_), std::move(feature_processor_state), @@ -137,7 +140,8 @@ bool success, IndexedTensors result) { if (!success) { - feature_processor_state->SetError(); + feature_processor_state->SetError( + stats::FeatureProcessingError::kSqlQueryRunError); } base::SequencedTaskRunnerHandle::Get()->PostTask( FROM_HERE,
diff --git a/components/segmentation_platform/internal/execution/processing/uma_feature_processor.cc b/components/segmentation_platform/internal/execution/processing/uma_feature_processor.cc index ad2ff48..9778e8f 100644 --- a/components/segmentation_platform/internal/execution/processing/uma_feature_processor.cc +++ b/components/segmentation_platform/internal/execution/processing/uma_feature_processor.cc
@@ -70,7 +70,8 @@ // Validate the proto::UMAFeature metadata. if (metadata_utils::ValidateMetadataUmaFeature(next_feature.value()) != metadata_utils::ValidationResult::kValidationSuccess) { - feature_processor_state_->SetError(); + feature_processor_state_->SetError( + stats::FeatureProcessingError::kUmaValidationError); ProcessNextUmaFeature(); return; }
diff --git a/components/segmentation_platform/internal/stats.cc b/components/segmentation_platform/internal/stats.cc index 19bf9ed4..aeb548b 100644 --- a/components/segmentation_platform/internal/stats.cc +++ b/components/segmentation_platform/internal/stats.cc
@@ -578,6 +578,35 @@ reason); } +std::string FeatureProcessingErrorToString(FeatureProcessingError error) { + switch (error) { + case FeatureProcessingError::kUkmEngineDisabled: + return "UkmEngineDisabled"; + case FeatureProcessingError::kUmaValidationError: + return "UmaValidationError"; + case FeatureProcessingError::kSqlValidationError: + return "SqlValidationError"; + case FeatureProcessingError::kCustomInputError: + return "CustomInputError"; + case FeatureProcessingError::kSqlBindValuesError: + return "SqlBindValuesError"; + case FeatureProcessingError::kSqlQueryRunError: + return "SqlQueryRunError"; + case FeatureProcessingError::kResultTensorError: + return "ResultTensorError"; + default: + return "Other"; + } +} + +void RecordFeatureProcessingError(SegmentId segment_id, + FeatureProcessingError error) { + base::UmaHistogramEnumeration( + "SegmentationPlatform.FeatureProcessing.Error." + + OptimizationTargetToHistogramVariant(segment_id), + error); +} + void RecordModelAvailability(SegmentId segment_id, SegmentationModelAvailability availability) { base::UmaHistogramEnumeration(
diff --git a/components/segmentation_platform/internal/stats.h b/components/segmentation_platform/internal/stats.h index 58ccb32..336434aa 100644 --- a/components/segmentation_platform/internal/stats.h +++ b/components/segmentation_platform/internal/stats.h
@@ -186,6 +186,26 @@ void RecordSegmentSelectionFailure(const std::string& segmentation_key, SegmentationSelectionFailureReason reason); +// Keep in sync with SegmentationPlatformFeatureProcessingError in +// //tools/metrics/histograms/enums.xml. +enum class FeatureProcessingError { + kUkmEngineDisabled = 0, + kUmaValidationError = 1, + kSqlValidationError = 2, + kCustomInputError = 3, + kSqlBindValuesError = 4, + kSqlQueryRunError = 5, + kResultTensorError = 6, + kMaxValue = kResultTensorError, +}; + +// Return a string display for the given FeatureProcessingError. +std::string FeatureProcessingErrorToString(FeatureProcessingError error); + +// Records the type of error encountered during feature processing. +void RecordFeatureProcessingError(SegmentId segment_id, + FeatureProcessingError error); + // These values are persisted to logs. Entries should not be renumbered and // numeric values should never be reused. Please keep in sync with // "SegmentationModelAvailability" in //tools/metrics/histograms/enums.xml.
diff --git a/components/translate/content/android/java/src/org/chromium/components/translate/TranslateMenuHelper.java b/components/translate/content/android/java/src/org/chromium/components/translate/TranslateMenuHelper.java index ce93d36..c240cd52 100644 --- a/components/translate/content/android/java/src/org/chromium/components/translate/TranslateMenuHelper.java +++ b/components/translate/content/android/java/src/org/chromium/components/translate/TranslateMenuHelper.java
@@ -5,8 +5,10 @@ package org.chromium.components.translate; import android.content.Context; +import android.graphics.Point; import android.graphics.Rect; import android.os.Build; +import android.util.Size; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; @@ -19,8 +21,11 @@ import android.widget.PopupWindow; import android.widget.TextView; +import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; +import org.chromium.base.supplier.Supplier; + import java.util.ArrayList; import java.util.List; @@ -31,6 +36,9 @@ private final TranslateMenuListener mMenuListener; private final TranslateOptions mOptions; + // App area in Window where the popup menu should be placed. + private final Supplier<Rect> mAppRect; + private ContextThemeWrapper mContextWrapper; private TranslateMenuAdapter mAdapter; private View mAnchorView; @@ -48,13 +56,15 @@ } public TranslateMenuHelper(Context context, View anchorView, TranslateOptions options, - TranslateMenuListener itemListener, boolean isIncognito, boolean isSourceLangUnknown) { + TranslateMenuListener itemListener, boolean isIncognito, boolean isSourceLangUnknown, + @NonNull Supplier<Rect> appRect) { mContextWrapper = new ContextThemeWrapper(context, R.style.OverflowMenuThemeOverlay); mAnchorView = anchorView; mOptions = options; mMenuListener = itemListener; mIsIncognito = isIncognito; mIsSourceLangUnknown = isSourceLangUnknown; + mAppRect = appRect; } // Helper method for deciding if a language should be skipped from the list @@ -175,17 +185,46 @@ mAdapter.refreshMenu(menuType); } + Size menuSize = null; + Point anchor = getLocationInWindow(mAnchorView); + Rect appRect = mAppRect.get(); if (menuType == TranslateMenu.MENU_OVERFLOW) { // Use measured width when it is a overflow menu. + menuSize = measureMenuSize(mAdapter, 0); Rect bgPadding = new Rect(); mPopup.getBackground().getPadding(bgPadding); - int measuredWidth = measureMenuWidth(mAdapter) + bgPadding.left + bgPadding.right; + int measuredWidth = menuSize.getWidth() + bgPadding.left + bgPadding.right; mPopup.setWidth((maxWidth > 0 && measuredWidth > maxWidth) ? maxWidth : measuredWidth); } else { // Use fixed width otherwise. int popupWidth = mContextWrapper.getResources().getDimensionPixelSize( R.dimen.infobar_translate_menu_width); mPopup.setWidth(popupWidth); + + // Measure the height manually only if needed. + if (appRect != null) { + menuSize = measureMenuSize(mAdapter, anchor.y + mAnchorView.getHeight()); + } + } + + // Set the popup's position and height manually without relying on the inner logic of + // PopupWindow, if the app client area in Window is given. + if (appRect != null) { + // Move the menu back into the screen if it is clipped on the side. + int clipWidth = anchor.x + mPopup.getWidth() - appRect.width(); + if (clipWidth > 0) mPopup.setHorizontalOffset(-clipWidth); + + int appHeight = appRect.height(); + assert menuSize != null; + int menuHeight = menuSize.getHeight(); + if (anchor.y + menuHeight > appHeight) { + // Menu should fit between (top - anchorView). In such case, specify the menu + // height explicitly to keep PopupWindow from computing the height/vertical + // position which can be wrong. + menuHeight = Math.min(menuHeight, anchor.y + mAnchorView.getHeight()); + mPopup.setHeight(menuHeight); + mPopup.setVerticalOffset(-menuHeight); + } } // When layout is RTL, set the horizontal offset to align the menu with the left side of the @@ -202,12 +241,27 @@ } } - private int measureMenuWidth(TranslateMenuAdapter adapter) { + private static Point getLocationInWindow(View view) { + int[] loc = new int[2]; + view.getLocationInWindow(loc); + return new Point(loc[0], loc[1]); + } + + /** + * Measure the menu dimension. + * @param adapter {@link TranslateMenuAdapter} providing views. + * @param maxHeight Maximum height of the menu. 0 to measure all items. Otherwise measuring is + * is stopped when the accumulated height goes over the maximum to avoid a performance + * issue that can happen when measuring the height of a very long menu. + * @return {@link Size} of the menu. + */ + private Size measureMenuSize(TranslateMenuAdapter adapter, int maxHeight) { final int widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); final int heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED); final int count = adapter.getCount(); int width = 0; + int height = 0; int itemType = 0; View itemView = null; for (int i = 0; i < count; i++) { @@ -219,8 +273,14 @@ itemView = adapter.getView(i, itemView, null); itemView.measure(widthMeasureSpec, heightMeasureSpec); width = Math.max(width, itemView.getMeasuredWidth()); + height += itemView.getMeasuredHeight(); + + // No need to loop further if the height is already bigger than the maximum. Can stop + // computing |width| as well, since |maxHeight| is only used for language lists which + // are fixed with. + if (maxHeight > 0 && height >= maxHeight) break; } - return width; + return new Size(width, height); } @Override
diff --git a/components/user_education/common/scoped_new_badge_tracker_base.h b/components/user_education/common/scoped_new_badge_tracker_base.h index 16efd24..12d723c4 100644 --- a/components/user_education/common/scoped_new_badge_tracker_base.h +++ b/components/user_education/common/scoped_new_badge_tracker_base.h
@@ -44,7 +44,7 @@ // // // In OnMenuWillShow(menu): // menu->SetIsNewFeatureAt( -// menu->GetIndexOfCommandId(IDC_MY_FEATURE), +// menu->GetIndexOfCommandId(IDC_MY_FEATURE).value(), // new_badge_tracker_.TryShowNewBadge( // feature_engagement::kIPHMyFeatureNewBadge, // &ui_features::kMyFeature));
diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn index 2f97246..cfc8837 100644 --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn
@@ -697,10 +697,10 @@ "code_cache/simple_lru_cache.h", "compositor/surface_utils.cc", "compositor/surface_utils.h", - "compute_pressure/compute_pressure_quantizer.cc", - "compute_pressure/compute_pressure_quantizer.h", - "compute_pressure/compute_pressure_service_impl.cc", - "compute_pressure/compute_pressure_service_impl.h", + "compute_pressure/pressure_quantizer.cc", + "compute_pressure/pressure_quantizer.h", + "compute_pressure/pressure_service_impl.cc", + "compute_pressure/pressure_service_impl.h", "contacts/contacts_manager_impl.cc", "contacts/contacts_manager_impl.h", "contacts/contacts_provider.h", @@ -3081,10 +3081,10 @@ "//ash/components/audio", "//ash/constants", "//chromeos/ash/components/assistant:buildflags", + "//chromeos/ash/components/network", "//chromeos/dbus", "//chromeos/dbus/power", "//chromeos/dbus/power:power_manager_proto", - "//chromeos/network", "//chromeos/system", "//components/session_manager/core", ]
diff --git a/content/browser/browser_interface_binders.cc b/content/browser/browser_interface_binders.cc index 8f8effdb..5d5ee78 100644 --- a/content/browser/browser_interface_binders.cc +++ b/content/browser/browser_interface_binders.cc
@@ -20,7 +20,7 @@ #include "content/browser/browser_context_impl.h" #include "content/browser/browser_main_loop.h" #include "content/browser/browsing_topics/browsing_topics_document_host.h" -#include "content/browser/compute_pressure/compute_pressure_service_impl.h" +#include "content/browser/compute_pressure/pressure_service_impl.h" #include "content/browser/contacts/contacts_manager_impl.h" #include "content/browser/content_index/content_index_service_impl.h" #include "content/browser/cookie_store/cookie_store_manager.h" @@ -107,7 +107,7 @@ #include "third_party/blink/public/mojom/buckets/bucket_manager_host.mojom.h" #include "third_party/blink/public/mojom/cache_storage/cache_storage.mojom.h" #include "third_party/blink/public/mojom/choosers/color_chooser.mojom.h" -#include "third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom.h" +#include "third_party/blink/public/mojom/compute_pressure/pressure_service.mojom.h" #include "third_party/blink/public/mojom/contacts/contacts_manager.mojom.h" #include "third_party/blink/public/mojom/content_index/content_index.mojom.h" #include "third_party/blink/public/mojom/cookie_store/cookie_store.mojom.h" @@ -739,8 +739,8 @@ &RenderFrameHostImpl::CreateCodeCacheHost, base::Unretained(host))); if (base::FeatureList::IsEnabled(blink::features::kComputePressure)) { - map->Add<blink::mojom::ComputePressureService>(base::BindRepeating( - &ComputePressureServiceImpl::Create, base::Unretained(host))); + map->Add<blink::mojom::PressureService>(base::BindRepeating( + &PressureServiceImpl::Create, base::Unretained(host))); } map->Add<blink::mojom::ContactsManager>(
diff --git a/content/browser/compute_pressure/COMMON_METADATA b/content/browser/compute_pressure/COMMON_METADATA index 2a4156e..47735de 100644 --- a/content/browser/compute_pressure/COMMON_METADATA +++ b/content/browser/compute_pressure/COMMON_METADATA
@@ -1,4 +1,4 @@ monorail { component: "Blink>PerformanceAPIs>ComputePressure" } -team_email: "storage-dev@chromium.org" +team_email: "device-dev@chromium.org"
diff --git a/content/browser/compute_pressure/README.md b/content/browser/compute_pressure/README.md index 4793264..779d0a0 100644 --- a/content/browser/compute_pressure/README.md +++ b/content/browser/compute_pressure/README.md
@@ -7,46 +7,42 @@ The system is made up of the following components. -`blink::mojom::ComputePressureService`, defined in Blink, is the interface -betweenthe renderer and the browser sides of the API implementation. +`blink::mojom::PressureService`, defined in Blink, is the interface between +the renderer and the browser sides of the API implementation. -`device::mojom::ComputePressureManager`, defined in Services, is the interface +`device::mojom::PressureManager`, defined in Services, is the interface between the browser and the services sides of the API implementation. -`device::ComputePressureManagerImpl` is the top-level class for the services -side implementation. The class is responsible for handling the communication +`device::PressureManagerImpl` is the top-level class for the services side +implementation. The class is responsible for handling the communication between the browser process and services. -`device::ComputePressureSample` represents the device's compute pressure -state. This information is collected by `device::CpuProbe` and bubbled up -by `device::ComputePressureSampler` to `device::ComputePressureManagerImpl`, -which broadcasts the information to the `content::ComputePressureServiceImpl` -instances. +`device::PressureSample` represents the device's compute pressure state. +This information is collected by `device::CpuProbe` and bubbled up by +`device::PressureSampler` to `device::PressureManagerImpl`, which broadcasts +the information to the `content::PressureServiceImpl` instances. -`device::ComputePressureSampler` drives measuring the device's compute -pressure state. The class is responsible for invoking platform-specific -measurement code at regular intervals, and for straddling between sequences -to meet the platform-specific code's requirements. +`device::PressureSampler` drives measuring the device's compute pressure +state. The class is responsible for invoking platform-specific measurement +code at regular intervals, and for straddling between sequences to meet +the platform-specific code's requirements. `device::CpuProbe` is an abstract base class that interfaces between -`device::ComputePressureSampler` and platform-specific code that retrieves -the compute pressure state from the operating system. This interface is also +`device::PressureSampler` and platform-specific code that retrieves the +compute pressure state from the operating system. This interface is also a dependency injection point for tests. -`content::ComputePressureServiceImpl` serves all the mojo connections for -a frame. Each instance is owned by a `content::RenderFrameHostImpl`. The -class receives `device::mojom::ComputePressureState` from -`device::ComputePressureManagerImpl` and broadcasts the information to -the `blink::ComputePressureObserver` instances. +`content::PressureServiceImpl` serves all the mojo connections for a frame. +Each instance is owned by a `content::RenderFrameHostImpl`. The class receives +`device::mojom::PressureState` from `device::PressureManagerImpl` and +broadcasts the information to the `blink::PressureObserver` instances. -`content::ComputePressureQuantizer` implements the quantization logic that -converts a high-entropy `device::mojom::ComputePressureState` into a -low-entropy one, which minimizes the amount of information exposed to a Web -page that uses the Compute Pressure API. Each -`content::ComputePressureServiceImpl` uses a -`content::ComputePressureQuantizer` instance, which stores the frame's +`content::PressureQuantizer` implements the quantization logic that converts +a high-entropy `device::mojom::PressureState` into a low-entropy one, which +minimizes the amount of information exposed to a Web page that uses the +Compute Pressure API. Each `content::PressureServiceImpl` uses a +`content::PressureQuantizer` instance, which stores the frame's quantization schema and produces quantized data suitable for frame. -`blink::ComputePressureObserver` implements bindings for the -ComputePressureObserver interface. There can be more than one -ComputePressureObserver per frame. +`blink::PressureObserver` implements bindings for the PressureObserver +interface. There can be more than one PressureObserver per frame.
diff --git a/content/browser/compute_pressure/compute_pressure_origin_trial_browsertest.cc b/content/browser/compute_pressure/compute_pressure_origin_trial_browsertest.cc index f4eae27..576f9fe 100644 --- a/content/browser/compute_pressure/compute_pressure_origin_trial_browsertest.cc +++ b/content/browser/compute_pressure/compute_pressure_origin_trial_browsertest.cc
@@ -40,7 +40,7 @@ } bool HasComputePressureApi() { - return EvalJs(shell(), "'ComputePressureObserver' in window").ExtractBool(); + return EvalJs(shell(), "'PressureObserver' in window").ExtractBool(); } protected:
diff --git a/content/browser/compute_pressure/compute_pressure_quantizer.h b/content/browser/compute_pressure/compute_pressure_quantizer.h deleted file mode 100644 index 7156f167..0000000 --- a/content/browser/compute_pressure/compute_pressure_quantizer.h +++ /dev/null
@@ -1,92 +0,0 @@ -// Copyright 2021 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 CONTENT_BROWSER_COMPUTE_PRESSURE_COMPUTE_PRESSURE_QUANTIZER_H_ -#define CONTENT_BROWSER_COMPUTE_PRESSURE_COMPUTE_PRESSURE_QUANTIZER_H_ - -#include <vector> - -#include "base/sequence_checker.h" -#include "base/thread_annotations.h" -#include "content/common/content_export.h" -#include "services/device/public/mojom/compute_pressure_state.mojom.h" -#include "third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom.h" - -namespace content { - -// Quantizes compute pressure data for a frame. -// -// See blink::mojom::ComputePressureQuantization for a descripion of the -// quantization scheme. The scheme converts a high-entropy -// device::mojom::ComputePressureState into a low-entropy one, which minimizes -// the amount of information exposed to a Web page that uses the Compute -// Pressure API. -// -// This class is not thread-safe, so each instance must be used on one sequence. -class CONTENT_EXPORT ComputePressureQuantizer { - public: - // Creates a quantizer with the single sub-interval [0, 1]. - // - // Until Assign() is called, all values will be quantized to the same value. - ComputePressureQuantizer(); - ~ComputePressureQuantizer(); - - ComputePressureQuantizer(const ComputePressureQuantizer&) = delete; - ComputePressureQuantizer& operator=(const ComputePressureQuantizer&) = delete; - - // True iff `quantization` is a valid compute pressure quantization scheme. - static bool IsValid( - const blink::mojom::ComputePressureQuantization& quantization); - - // True if this quantizer's scheme is the same as `quantization`. - // - // This is a bit more complicated than element-wise vector equality to allow - // for floating-point precision errors, such as 0.5 != 0.2 + 0.3. - // - // `quantization` must be valid. - bool IsSame( - const blink::mojom::ComputePressureQuantization& quantization) const; - - // Overwrites the quantization scheme used by this quantizer. - void Assign(blink::mojom::ComputePressureQuantizationPtr quantization); - - // Quantizes `sample` using the current quantization scheme. - device::mojom::ComputePressureState Quantize( - device::mojom::ComputePressureStatePtr sample) const; - - private: - // Quantizes a single value in compute pressure data. - class ValueQuantizer { - public: - ValueQuantizer(); - ~ValueQuantizer(); - - ValueQuantizer(const ValueQuantizer&) = delete; - ValueQuantizer& operator=(const ValueQuantizer&) = delete; - - static bool IsValid(const std::vector<double>& thresholds); - bool IsSame(const std::vector<double>& thresholds) const; - double Quantize(double value) const; - void Assign(std::vector<double> thresholds); - - private: - SEQUENCE_CHECKER(sequence_checker_); - - // The array of thresholds passes the IsValid() check. - // - // This means that the array is sorted and does not include 0.0 or 1.0. An - // empty array is a valid quantizing scheme that transforms every input to - // 0.5. - std::vector<double> thresholds_ GUARDED_BY_CONTEXT(sequence_checker_); - }; - - SEQUENCE_CHECKER(sequence_checker_); - - ValueQuantizer cpu_utilization_quantizer_ - GUARDED_BY_CONTEXT(sequence_checker_); -}; - -} // namespace content - -#endif // CONTENT_BROWSER_COMPUTE_PRESSURE_COMPUTE_PRESSURE_QUANTIZER_H_
diff --git a/content/browser/compute_pressure/compute_pressure_quantizer_unittest.cc b/content/browser/compute_pressure/compute_pressure_quantizer_unittest.cc deleted file mode 100644 index ed1e827..0000000 --- a/content/browser/compute_pressure/compute_pressure_quantizer_unittest.cc +++ /dev/null
@@ -1,133 +0,0 @@ -// Copyright 2021 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 "content/browser/compute_pressure/compute_pressure_quantizer.h" - -#include <utility> -#include <vector> - -#include "services/device/public/mojom/compute_pressure_state.mojom.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom.h" - -namespace content { - -using blink::mojom::ComputePressureQuantization; -using device::mojom::ComputePressureState; - -TEST(ComputePressureQuantizer, IsValid_Valid) { - std::vector<ComputePressureQuantization> valid_cases = { - ComputePressureQuantization{}, - ComputePressureQuantization{{0.5}}, - ComputePressureQuantization{{0.2, 0.5, 0.8}}, - }; - - for (const auto& quantization : valid_cases) { - EXPECT_TRUE(ComputePressureQuantizer::IsValid(quantization)); - } -} - -TEST(ComputePressureQuantizer, IsValid_Invalid) { - std::vector<ComputePressureQuantization> invalid_cases = { - ComputePressureQuantization{ - {0.2, 0.3, 0.4, 0.5}}, // Too many utilization thresholds. - ComputePressureQuantization{ - {0.2, 0.8, 0.5}}, // Incorrectly sorted thresholds. - ComputePressureQuantization{{-1.0}}, // Threshold outside range. - ComputePressureQuantization{{0.0}}, - ComputePressureQuantization{{1.0}}, - ComputePressureQuantization{{2.0}}, - }; - - for (const auto& quantization : invalid_cases) { - EXPECT_FALSE(ComputePressureQuantizer::IsValid(quantization)); - } -} - -TEST(ComputePressureQuantizer, IsSame_True) { - std::vector< - std::pair<ComputePressureQuantization, ComputePressureQuantization>> - true_cases = { - {ComputePressureQuantization{{0.1}}, - ComputePressureQuantization{{0.1}}}, - {ComputePressureQuantization{{0.2, 0.5, 0.8}}, - ComputePressureQuantization{{0.2, 0.5, 0.8}}}, - {ComputePressureQuantization{{0.3}}, - ComputePressureQuantization{{0.1 + 0.1 + 0.1}}}, - }; - - for (const auto& quantizations : true_cases) { - ComputePressureQuantizer quantizer; - quantizer.Assign(quantizations.first.Clone()); - EXPECT_TRUE(quantizer.IsSame(quantizations.second)); - } -} - -TEST(ComputePressureQuantizer, IsSame_False) { - std::vector< - std::pair<ComputePressureQuantization, ComputePressureQuantization>> - false_cases = { - {ComputePressureQuantization{{0.1}}, - ComputePressureQuantization{{0.2}}}, - {ComputePressureQuantization{{0.1, 0.15}}, - ComputePressureQuantization{{0.1}}}, - {ComputePressureQuantization{{0.1}}, - ComputePressureQuantization{{0.1, 0.15}}}, - {ComputePressureQuantization{{0.1}}, - ComputePressureQuantization{{0.101}}}, - {ComputePressureQuantization{{0.2, 0.5, 0.8}}, - ComputePressureQuantization{{0.2, 0.6, 0.8}}}, - {ComputePressureQuantization{{0.2, 0.5, 0.8}}, - ComputePressureQuantization{{0.2, 0.5, 0.9}}}, - }; - - for (const auto& quantizations : false_cases) { - ComputePressureQuantizer quantizer; - quantizer.Assign(quantizations.first.Clone()); - EXPECT_FALSE(quantizer.IsSame(quantizations.second)); - } -} - -TEST(ComputePressureQuantizer, Quantize_Empty) { - ComputePressureQuantizer quantizer; - auto empty_quantization_ptr = ComputePressureQuantization::New(); - quantizer.Assign(std::move(empty_quantization_ptr)); - - EXPECT_EQ(ComputePressureState{0.5}, - quantizer.Quantize(ComputePressureState{0.0}.Clone())); - EXPECT_EQ(ComputePressureState{0.5}, - quantizer.Quantize(ComputePressureState{1.0}.Clone())); -} - -TEST(ComputePressureQuantizer, Quantize) { - ComputePressureQuantizer quantizer; - auto quantization_ptr = - ComputePressureQuantization::New(std::vector<double>{0.2, 0.5, 0.8}); - quantizer.Assign(std::move(quantization_ptr)); - - std::vector<std::pair<ComputePressureState, ComputePressureState>> - test_cases = { - {ComputePressureState{0.0}, ComputePressureState{0.1}}, - {ComputePressureState{1.0}, ComputePressureState{0.9}}, - {ComputePressureState{0.1}, ComputePressureState{0.1}}, - {ComputePressureState{0.19}, ComputePressureState{0.1}}, - {ComputePressureState{0.21}, ComputePressureState{0.35}}, - {ComputePressureState{0.49}, ComputePressureState{0.35}}, - {ComputePressureState{0.51}, ComputePressureState{0.65}}, - {ComputePressureState{0.79}, ComputePressureState{0.65}}, - {ComputePressureState{0.81}, ComputePressureState{0.9}}, - {ComputePressureState{0.99}, ComputePressureState{0.9}}, - }; - - for (const auto& test_case : test_cases) { - ComputePressureState input = test_case.first; - ComputePressureState expected = test_case.second; - ComputePressureState output = quantizer.Quantize(input.Clone()); - - EXPECT_DOUBLE_EQ(expected.cpu_utilization, output.cpu_utilization) - << "Input cpu_utilization is: " << input.cpu_utilization; - } -} - -} // namespace content
diff --git a/content/browser/compute_pressure/compute_pressure_service_impl.h b/content/browser/compute_pressure/compute_pressure_service_impl.h deleted file mode 100644 index 8da4505..0000000 --- a/content/browser/compute_pressure/compute_pressure_service_impl.h +++ /dev/null
@@ -1,118 +0,0 @@ -// Copyright 2021 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 CONTENT_BROWSER_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SERVICE_IMPL_H_ -#define CONTENT_BROWSER_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SERVICE_IMPL_H_ - -#include "base/callback.h" -#include "base/sequence_checker.h" -#include "base/thread_annotations.h" -#include "base/time/time.h" -#include "content/browser/compute_pressure/compute_pressure_quantizer.h" -#include "content/common/content_export.h" -#include "content/public/browser/document_user_data.h" -#include "mojo/public/cpp/bindings/receiver_set.h" -#include "mojo/public/cpp/bindings/remote_set.h" -#include "services/device/public/mojom/compute_pressure_manager.mojom.h" -#include "services/device/public/mojom/compute_pressure_state.mojom.h" -#include "third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom.h" - -namespace content { - -class RenderFrameHost; - -// Serves all the Compute Pressure API mojo requests for a frame. -// RenderFrameHostImpl owns an instance of this class. -// -// This class is not thread-safe, so each instance must be used on one sequence. -class CONTENT_EXPORT ComputePressureServiceImpl - : public blink::mojom::ComputePressureService, - public device::mojom::ComputePressureClient, - public DocumentUserData<ComputePressureServiceImpl> { - public: - static constexpr base::TimeDelta kDefaultVisibleObserverRateLimit = - base::Seconds(1); - - static void Create( - RenderFrameHost* render_frame_host, - mojo::PendingReceiver<blink::mojom::ComputePressureService> receiver); - - ~ComputePressureServiceImpl() override; - - ComputePressureServiceImpl(const ComputePressureServiceImpl&) = delete; - ComputePressureServiceImpl& operator=(const ComputePressureServiceImpl&) = - delete; - - void BindReceiver( - mojo::PendingReceiver<blink::mojom::ComputePressureService> receiver); - - // blink::mojom::ComputePressureService implementation. - void AddObserver( - mojo::PendingRemote<blink::mojom::ComputePressureObserver> observer, - blink::mojom::ComputePressureQuantizationPtr quantization, - AddObserverCallback callback) override; - - // device::mojom::ComputePressureClient implementation. - void ComputePressureStateChanged(device::mojom::ComputePressureStatePtr state, - base::Time timestamp) override; - - private: - friend class content::DocumentUserData<ComputePressureServiceImpl>; - - ComputePressureServiceImpl(RenderFrameHost* render_frame_host, - base::TimeDelta visible_observer_rate_limit); - - void OnObserverRemoteDisconnected(mojo::RemoteSetElementId /*id*/); - - void OnManagerRemoteDisconnected(); - - void DidAddObserver( - mojo::PendingRemote<blink::mojom::ComputePressureObserver> observer, - AddObserverCallback callback, - bool success); - - // Resets the state used to dispatch updates to observers. - // - // Called when the quantizing scheme changes. - void ResetObserverState(); - - SEQUENCE_CHECKER(sequence_checker_); - - // The minimum delay between two Update() calls for observers belonging to - // the frame. - const base::TimeDelta visible_observer_rate_limit_; - - // Implements the quantizing scheme used for all the frame's observers. - ComputePressureQuantizer quantizer_ GUARDED_BY_CONTEXT(sequence_checker_); - - // The (quantized) sample that was last reported to this frame's observers. - // - // Stored to avoid sending updates when the underlying compute pressure state - // changes, but quantization produces the same values that were reported in - // the last update. - device::mojom::ComputePressureState last_reported_state_ - GUARDED_BY_CONTEXT(sequence_checker_); - - // The last time the frame's observers received an update. - // - // Stored to implement rate-limiting. - base::Time last_reported_timestamp_ GUARDED_BY_CONTEXT(sequence_checker_); - - mojo::RemoteSet<blink::mojom::ComputePressureObserver> observers_ - GUARDED_BY_CONTEXT(sequence_checker_); - mojo::ReceiverSet<blink::mojom::ComputePressureService> receivers_ - GUARDED_BY_CONTEXT(sequence_checker_); - - mojo::Remote<device::mojom::ComputePressureManager> remote_ - GUARDED_BY_CONTEXT(sequence_checker_); - mojo::Receiver<device::mojom::ComputePressureClient> GUARDED_BY_CONTEXT( - sequence_checker_) client_{this}; - - friend DocumentUserData; - DOCUMENT_USER_DATA_KEY_DECL(); -}; - -} // namespace content - -#endif // CONTENT_BROWSER_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SERVICE_IMPL_H_
diff --git a/content/browser/compute_pressure/compute_pressure_service_impl_unittest.cc b/content/browser/compute_pressure/compute_pressure_service_impl_unittest.cc deleted file mode 100644 index d2b13912..0000000 --- a/content/browser/compute_pressure/compute_pressure_service_impl_unittest.cc +++ /dev/null
@@ -1,435 +0,0 @@ -// Copyright 2021 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 "content/browser/compute_pressure/compute_pressure_service_impl.h" - -#include <vector> - -#include "base/barrier_closure.h" -#include "base/run_loop.h" -#include "base/test/bind.h" -#include "base/test/scoped_feature_list.h" -#include "base/test/test_future.h" -#include "content/test/test_render_view_host.h" -#include "content/test/test_web_contents.h" -#include "mojo/public/cpp/test_support/fake_message_dispatch_context.h" -#include "mojo/public/cpp/test_support/test_utils.h" -#include "services/device/public/cpp/test/scoped_compute_pressure_manager_overrider.h" -#include "services/device/public/mojom/compute_pressure_manager.mojom.h" -#include "services/device/public/mojom/compute_pressure_state.mojom.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" -#include "third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom.h" -#include "url/gurl.h" - -namespace content { - -using blink::mojom::ComputePressureQuantization; -using device::mojom::ComputePressureState; - -namespace { - -constexpr base::TimeDelta kRateLimit = - ComputePressureServiceImpl::kDefaultVisibleObserverRateLimit; - -// Synchronous proxy to a blink::mojom::ComputePressureService. -class ComputePressureServiceImplSync { - public: - explicit ComputePressureServiceImplSync( - blink::mojom::ComputePressureService* service) - : service_(*service) { - DCHECK(service); - } - ~ComputePressureServiceImplSync() = default; - - ComputePressureServiceImplSync(const ComputePressureServiceImplSync&) = - delete; - ComputePressureServiceImplSync& operator=( - const ComputePressureServiceImplSync&) = delete; - - blink::mojom::ComputePressureStatus AddObserver( - const ComputePressureQuantization& quantization, - mojo::PendingRemote<blink::mojom::ComputePressureObserver> observer) { - base::test::TestFuture<blink::mojom::ComputePressureStatus> future; - service_.AddObserver(std::move(observer), quantization.Clone(), - future.GetCallback()); - return future.Get(); - } - - private: - // The reference is immutable, so accessing it is thread-safe. The referenced - // blink::mojom::ComputePressureService implementation is called - // synchronously, so it's acceptable to rely on its own thread-safety checks. - blink::mojom::ComputePressureService& service_; -}; - -// Test double for ComputePressureObserver that records all updates. -class FakeComputePressureObserver - : public blink::mojom::ComputePressureObserver { - public: - FakeComputePressureObserver() : receiver_(this) {} - ~FakeComputePressureObserver() override { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - } - - FakeComputePressureObserver(const FakeComputePressureObserver&) = delete; - FakeComputePressureObserver& operator=(const FakeComputePressureObserver&) = - delete; - - // blink::mojom::ComputePressureObserver implementation. - void OnUpdate(device::mojom::ComputePressureStatePtr state) override { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - - updates_.push_back(*state); - if (update_callback_) { - std::move(update_callback_).Run(); - update_callback_.Reset(); - } - } - - std::vector<ComputePressureState>& updates() { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return updates_; - } - - void SetNextUpdateCallback(base::OnceClosure callback) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(!update_callback_) << " already called before update received"; - - update_callback_ = std::move(callback); - } - - void WaitForUpdate() { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - - base::RunLoop run_loop; - SetNextUpdateCallback(run_loop.QuitClosure()); - run_loop.Run(); - } - - static void WaitForUpdates( - std::initializer_list<FakeComputePressureObserver*> observers) { - base::RunLoop run_loop; - base::RepeatingClosure update_barrier = - base::BarrierClosure(observers.size(), run_loop.QuitClosure()); - for (FakeComputePressureObserver* observer : observers) - observer->SetNextUpdateCallback(update_barrier); - run_loop.Run(); - } - - mojo::PendingRemote<blink::mojom::ComputePressureObserver> - BindNewPipeAndPassRemote() { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - return receiver_.BindNewPipeAndPassRemote(); - } - - private: - SEQUENCE_CHECKER(sequence_checker_); - - std::vector<ComputePressureState> updates_ - GUARDED_BY_CONTEXT(sequence_checker_); - - // Used to implement WaitForUpdate(). - base::OnceClosure update_callback_ GUARDED_BY_CONTEXT(sequence_checker_); - - mojo::Receiver<blink::mojom::ComputePressureObserver> receiver_ - GUARDED_BY_CONTEXT(sequence_checker_); -}; - -} // namespace - -class ComputePressureServiceImplTest : public RenderViewHostImplTestHarness { - public: - ComputePressureServiceImplTest() = default; - ~ComputePressureServiceImplTest() override = default; - - ComputePressureServiceImplTest(const ComputePressureServiceImplTest&) = - delete; - ComputePressureServiceImplTest& operator=( - const ComputePressureServiceImplTest&) = delete; - - void SetUp() override { - RenderViewHostImplTestHarness::SetUp(); - NavigateAndCommit(kTestUrl); - - SetComputePressureServiceImpl(); - } - - void TearDown() override { - pressure_service_impl_sync_.reset(); - pressure_manager_overrider_.reset(); - task_environment()->RunUntilIdle(); - - RenderViewHostImplTestHarness::TearDown(); - } - - void SetComputePressureServiceImpl() { - pressure_manager_overrider_ = - std::make_unique<device::ScopedComputePressureManagerOverrider>(); - pressure_service_.reset(); - ComputePressureServiceImpl::Create( - contents()->GetPrimaryMainFrame(), - pressure_service_.BindNewPipeAndPassReceiver()); - pressure_service_impl_sync_ = - std::make_unique<ComputePressureServiceImplSync>( - pressure_service_.get()); - } - - protected: - const GURL kTestUrl{"https://example.com/compute_pressure.html"}; - const GURL kInsecureUrl{"http://example.com/compute_pressure.html"}; - // Quantization scheme used in most tests. - const ComputePressureQuantization kQuantization{{0.2, 0.5, 0.8}}; - - base::test::ScopedFeatureList scoped_feature_list_; - - mojo::Remote<blink::mojom::ComputePressureService> pressure_service_; - std::unique_ptr<ComputePressureServiceImplSync> pressure_service_impl_sync_; - std::unique_ptr<device::ScopedComputePressureManagerOverrider> - pressure_manager_overrider_; -}; - -TEST_F(ComputePressureServiceImplTest, OneObserver) { - FakeComputePressureObserver observer; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - const base::Time time = base::Time::Now() + kRateLimit; - const ComputePressureState state{0.42}; - pressure_manager_overrider_->UpdateClients(state, time); - observer.WaitForUpdate(); - ASSERT_EQ(observer.updates().size(), 1u); - EXPECT_EQ(observer.updates()[0], ComputePressureState{0.35}); -} - -TEST_F(ComputePressureServiceImplTest, OneObserver_UpdateRateLimiting) { - FakeComputePressureObserver observer; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - const base::Time time = base::Time::Now(); - const ComputePressureState state1{0.42}; - pressure_manager_overrider_->UpdateClients(state1, time + kRateLimit); - observer.WaitForUpdate(); - observer.updates().clear(); - - // The first update should be blocked due to rate-limiting. - const ComputePressureState state2{1.0}; - pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit * 1.5); - const ComputePressureState state3{0.0}; - pressure_manager_overrider_->UpdateClients(state3, time + kRateLimit * 2); - observer.WaitForUpdate(); - - ASSERT_EQ(observer.updates().size(), 1u); - EXPECT_EQ(observer.updates()[0], ComputePressureState{0.1}); -} - -TEST_F(ComputePressureServiceImplTest, OneObserver_NoCallbackInvoked) { - FakeComputePressureObserver observer; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - const base::Time time = base::Time::Now() + kRateLimit; - const ComputePressureState state1{0.42}; - pressure_manager_overrider_->UpdateClients(state1, time); - observer.WaitForUpdate(); - ASSERT_EQ(observer.updates().size(), 1u); - EXPECT_EQ(observer.updates()[0], ComputePressureState{0.35}); - - // The first update should be discarded due to same bucket - const ComputePressureState state2{0.37}; - pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit); - const ComputePressureState state3{0.52}; - pressure_manager_overrider_->UpdateClients(state3, time + kRateLimit * 2); - observer.WaitForUpdate(); - ASSERT_EQ(observer.updates().size(), 2u); - EXPECT_EQ(observer.updates()[1], ComputePressureState{0.65}); -} - -TEST_F(ComputePressureServiceImplTest, OneObserver_AddRateLimiting) { - const base::Time before_add = base::Time::Now(); - - FakeComputePressureObserver observer; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - const base::Time after_add = base::Time::Now(); - - ASSERT_LE(after_add - before_add, base::Milliseconds(500)) - << "test timings assume that AddObserver completes in at most 500ms"; - - // The first update should be blocked due to rate-limiting. - const ComputePressureState state1{0.42}; - const base::Time time1 = before_add + base::Milliseconds(700); - pressure_manager_overrider_->UpdateClients(state1, time1); - const ComputePressureState state2{0.0}; - const base::Time time2 = before_add + base::Milliseconds(1600); - pressure_manager_overrider_->UpdateClients(state2, time2); - observer.WaitForUpdate(); - - ASSERT_EQ(observer.updates().size(), 1u); - EXPECT_EQ(observer.updates()[0], ComputePressureState{0.1}); -} - -TEST_F(ComputePressureServiceImplTest, ThreeObservers) { - FakeComputePressureObserver observer1; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer1.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - FakeComputePressureObserver observer2; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer2.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - FakeComputePressureObserver observer3; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer3.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - const base::Time time = base::Time::Now() + kRateLimit; - const ComputePressureState state{0.42}; - pressure_manager_overrider_->UpdateClients(state, time); - FakeComputePressureObserver::WaitForUpdates( - {&observer1, &observer2, &observer3}); - - ASSERT_EQ(observer1.updates().size(), 1u); - EXPECT_THAT(observer1.updates(), - testing::Contains(ComputePressureState{0.35})); - ASSERT_EQ(observer2.updates().size(), 1u); - EXPECT_THAT(observer2.updates(), - testing::Contains(ComputePressureState{0.35})); - ASSERT_EQ(observer3.updates().size(), 1u); - EXPECT_THAT(observer3.updates(), - testing::Contains(ComputePressureState{0.35})); -} - -TEST_F(ComputePressureServiceImplTest, AddObserver_NewQuantization) { - // 0.42 would quantize as 0.4 - ComputePressureQuantization quantization1{{0.8}}; - FakeComputePressureObserver observer1; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - quantization1, observer1.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - // 0.42 would quantize as 0.6 - ComputePressureQuantization quantization2{{0.2}}; - FakeComputePressureObserver observer2; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - quantization2, observer2.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - // 0.42 will quantize as 0.25 - ComputePressureQuantization quantization3{{0.5}}; - FakeComputePressureObserver observer3; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - quantization3, observer3.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - const base::Time time = base::Time::Now() + kRateLimit; - const ComputePressureState state1{0.42}; - pressure_manager_overrider_->UpdateClients(state1, time); - observer3.WaitForUpdate(); - const ComputePressureState state2{0.84}; - pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit); - observer3.WaitForUpdate(); - - ASSERT_EQ(observer3.updates().size(), 2u); - EXPECT_THAT(observer3.updates(), - testing::Contains(ComputePressureState{0.25})); - EXPECT_THAT(observer3.updates(), - testing::Contains(ComputePressureState{0.75})); - - ASSERT_EQ(observer1.updates().size(), 0u); - ASSERT_EQ(observer2.updates().size(), 0u); -} - -TEST_F(ComputePressureServiceImplTest, AddObserver_NoVisibility) { - FakeComputePressureObserver observer; - EXPECT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - const base::Time time = base::Time::Now(); - - test_rvh()->SimulateWasHidden(); - - // The first two updates should be blocked due to invisibility. - const ComputePressureState state1{0.0}; - pressure_manager_overrider_->UpdateClients(state1, time + kRateLimit); - const ComputePressureState state2{1.0}; - pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit * 2); - task_environment()->RunUntilIdle(); - - test_rvh()->SimulateWasShown(); - - // The third update should be dispatched. It should not be rate-limited by the - // time proximity to the second update, because the second update is not - // dispatched. - const ComputePressureState state3{1.0}; - pressure_manager_overrider_->UpdateClients(state3, time + kRateLimit * 2.5); - observer.WaitForUpdate(); - - ASSERT_EQ(observer.updates().size(), 1u); - EXPECT_EQ(observer.updates()[0], ComputePressureState{0.9}); -} - -TEST_F(ComputePressureServiceImplTest, AddObserver_InvalidQuantization) { - FakeComputePressureObserver valid_observer; - ASSERT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, valid_observer.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kOk); - - FakeComputePressureObserver invalid_observer; - ComputePressureQuantization invalid_quantization{{-1.0}}; - - { - mojo::test::BadMessageObserver bad_message_observer; - EXPECT_EQ( - pressure_service_impl_sync_->AddObserver( - invalid_quantization, invalid_observer.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kSecurityError); - EXPECT_EQ("Invalid quantization", bad_message_observer.WaitForBadMessage()); - } - - const base::Time time = base::Time::Now(); - - const ComputePressureState state1{0.0}; - pressure_manager_overrider_->UpdateClients(state1, time + kRateLimit); - valid_observer.WaitForUpdate(); - const ComputePressureState state2{1.0}; - pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit * 2); - valid_observer.WaitForUpdate(); - - ASSERT_EQ(valid_observer.updates().size(), 2u); - EXPECT_THAT(valid_observer.updates(), - testing::Contains(ComputePressureState{0.1})); - EXPECT_THAT(valid_observer.updates(), - testing::Contains(ComputePressureState{0.9})); - - ASSERT_EQ(invalid_observer.updates().size(), 0u); -} - -TEST_F(ComputePressureServiceImplTest, AddObserver_NotSupported) { - pressure_manager_overrider_->set_is_supported(false); - - FakeComputePressureObserver observer; - EXPECT_EQ(pressure_service_impl_sync_->AddObserver( - kQuantization, observer.BindNewPipeAndPassRemote()), - blink::mojom::ComputePressureStatus::kNotSupported); -} - -TEST_F(ComputePressureServiceImplTest, InsecureOrigin) { - NavigateAndCommit(kInsecureUrl); - - mojo::FakeMessageDispatchContext fake_dispatch_context; - mojo::test::BadMessageObserver bad_message_observer; - SetComputePressureServiceImpl(); - EXPECT_EQ("Compute Pressure access from an insecure origin", - bad_message_observer.WaitForBadMessage()); -} - -} // namespace content
diff --git a/content/browser/compute_pressure/compute_pressure_quantizer.cc b/content/browser/compute_pressure/pressure_quantizer.cc similarity index 63% rename from content/browser/compute_pressure/compute_pressure_quantizer.cc rename to content/browser/compute_pressure/pressure_quantizer.cc index 28900f1..0c5a4b4 100644 --- a/content/browser/compute_pressure/compute_pressure_quantizer.cc +++ b/content/browser/compute_pressure/pressure_quantizer.cc
@@ -2,23 +2,23 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/browser/compute_pressure/compute_pressure_quantizer.h" +#include "content/browser/compute_pressure/pressure_quantizer.h" #include <vector> namespace content { -ComputePressureQuantizer::ComputePressureQuantizer() = default; +PressureQuantizer::PressureQuantizer() = default; -ComputePressureQuantizer::~ComputePressureQuantizer() { +PressureQuantizer::~PressureQuantizer() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } // static -bool ComputePressureQuantizer::IsValid( - const blink::mojom::ComputePressureQuantization& quantization) { +bool PressureQuantizer::IsValid( + const blink::mojom::PressureQuantization& quantization) { if (quantization.cpu_utilization_thresholds.size() > - blink::mojom::kMaxComputePressureCpuUtilizationThresholds) { + blink::mojom::kMaxPressureCpuUtilizationThresholds) { return false; } if (!ValueQuantizer::IsValid(quantization.cpu_utilization_thresholds)) @@ -27,10 +27,10 @@ return true; } -bool ComputePressureQuantizer::IsSame( - const blink::mojom::ComputePressureQuantization& quantization) const { +bool PressureQuantizer::IsSame( + const blink::mojom::PressureQuantization& quantization) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(ComputePressureQuantizer::IsValid(quantization)); + DCHECK(PressureQuantizer::IsValid(quantization)); if (!cpu_utilization_quantizer_.IsSame( quantization.cpu_utilization_thresholds)) { @@ -40,34 +40,34 @@ return true; } -device::mojom::ComputePressureState ComputePressureQuantizer::Quantize( - device::mojom::ComputePressureStatePtr sample) const { +device::mojom::PressureState PressureQuantizer::Quantize( + device::mojom::PressureStatePtr sample) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - device::mojom::ComputePressureState state; + device::mojom::PressureState state; state.cpu_utilization = cpu_utilization_quantizer_.Quantize(sample->cpu_utilization); return state; } -void ComputePressureQuantizer::Assign( - blink::mojom::ComputePressureQuantizationPtr quantization) { +void PressureQuantizer::Assign( + blink::mojom::PressureQuantizationPtr quantization) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - DCHECK(ComputePressureQuantizer::IsValid(*quantization)); + DCHECK(PressureQuantizer::IsValid(*quantization)); cpu_utilization_quantizer_.Assign( std::move(quantization->cpu_utilization_thresholds)); } -ComputePressureQuantizer::ValueQuantizer::ValueQuantizer() = default; +PressureQuantizer::ValueQuantizer::ValueQuantizer() = default; -ComputePressureQuantizer::ValueQuantizer::~ValueQuantizer() { +PressureQuantizer::ValueQuantizer::~ValueQuantizer() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } // static -bool ComputePressureQuantizer::ValueQuantizer::IsValid( +bool PressureQuantizer::ValueQuantizer::IsValid( const std::vector<double>& thresholds) { double last_threshold = 0.0; @@ -83,7 +83,7 @@ return true; } -bool ComputePressureQuantizer::ValueQuantizer::IsSame( +bool PressureQuantizer::ValueQuantizer::IsSame( const std::vector<double>& thresholds) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(ValueQuantizer::IsValid(thresholds)); @@ -98,7 +98,7 @@ return true; } -double ComputePressureQuantizer::ValueQuantizer::Quantize(double value) const { +double PressureQuantizer::ValueQuantizer::Quantize(double value) const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); double lower_bound = 0.0; @@ -116,8 +116,7 @@ return (lower_bound + upper_bound) / 2; } -void ComputePressureQuantizer::ValueQuantizer::Assign( - std::vector<double> thresholds) { +void PressureQuantizer::ValueQuantizer::Assign(std::vector<double> thresholds) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(ValueQuantizer::IsValid(thresholds));
diff --git a/content/browser/compute_pressure/pressure_quantizer.h b/content/browser/compute_pressure/pressure_quantizer.h new file mode 100644 index 0000000..c150024 --- /dev/null +++ b/content/browser/compute_pressure/pressure_quantizer.h
@@ -0,0 +1,89 @@ +// Copyright 2021 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 CONTENT_BROWSER_COMPUTE_PRESSURE_PRESSURE_QUANTIZER_H_ +#define CONTENT_BROWSER_COMPUTE_PRESSURE_PRESSURE_QUANTIZER_H_ + +#include <vector> + +#include "base/sequence_checker.h" +#include "base/thread_annotations.h" +#include "content/common/content_export.h" +#include "services/device/public/mojom/pressure_state.mojom.h" +#include "third_party/blink/public/mojom/compute_pressure/pressure_service.mojom.h" + +namespace content { + +// Quantizes compute pressure data for a frame. +// +// See blink::mojom::PressureQuantization for a descripion of the quantization +// scheme. The scheme converts a high-entropy device::mojom::PressureState +// into a low-entropy one, which minimizes the amount of information exposed +// to a Web page that uses the Compute Pressure API. +// +// This class is not thread-safe, so each instance must be used on one sequence. +class CONTENT_EXPORT PressureQuantizer { + public: + // Creates a quantizer with the single sub-interval [0, 1]. + // + // Until Assign() is called, all values will be quantized to the same value. + PressureQuantizer(); + ~PressureQuantizer(); + + PressureQuantizer(const PressureQuantizer&) = delete; + PressureQuantizer& operator=(const PressureQuantizer&) = delete; + + // True iff `quantization` is a valid pressure quantization scheme. + static bool IsValid(const blink::mojom::PressureQuantization& quantization); + + // True if this quantizer's scheme is the same as `quantization`. + // + // This is a bit more complicated than element-wise vector equality to allow + // for floating-point precision errors, such as 0.5 != 0.2 + 0.3. + // + // `quantization` must be valid. + bool IsSame(const blink::mojom::PressureQuantization& quantization) const; + + // Overwrites the quantization scheme used by this quantizer. + void Assign(blink::mojom::PressureQuantizationPtr quantization); + + // Quantizes `sample` using the current quantization scheme. + device::mojom::PressureState Quantize( + device::mojom::PressureStatePtr sample) const; + + private: + // Quantizes a single value in compute pressure data. + class ValueQuantizer { + public: + ValueQuantizer(); + ~ValueQuantizer(); + + ValueQuantizer(const ValueQuantizer&) = delete; + ValueQuantizer& operator=(const ValueQuantizer&) = delete; + + static bool IsValid(const std::vector<double>& thresholds); + bool IsSame(const std::vector<double>& thresholds) const; + double Quantize(double value) const; + void Assign(std::vector<double> thresholds); + + private: + SEQUENCE_CHECKER(sequence_checker_); + + // The array of thresholds passes the IsValid() check. + // + // This means that the array is sorted and does not include 0.0 or 1.0. An + // empty array is a valid quantizing scheme that transforms every input to + // 0.5. + std::vector<double> thresholds_ GUARDED_BY_CONTEXT(sequence_checker_); + }; + + SEQUENCE_CHECKER(sequence_checker_); + + ValueQuantizer cpu_utilization_quantizer_ + GUARDED_BY_CONTEXT(sequence_checker_); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_COMPUTE_PRESSURE_PRESSURE_QUANTIZER_H_
diff --git a/content/browser/compute_pressure/pressure_quantizer_unittest.cc b/content/browser/compute_pressure/pressure_quantizer_unittest.cc new file mode 100644 index 0000000..a140186 --- /dev/null +++ b/content/browser/compute_pressure/pressure_quantizer_unittest.cc
@@ -0,0 +1,122 @@ +// Copyright 2021 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 "content/browser/compute_pressure/pressure_quantizer.h" + +#include <utility> +#include <vector> + +#include "services/device/public/mojom/pressure_state.mojom.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/public/mojom/compute_pressure/pressure_service.mojom.h" + +namespace content { + +using blink::mojom::PressureQuantization; +using device::mojom::PressureState; + +TEST(PressureQuantizer, IsValid_Valid) { + std::vector<PressureQuantization> valid_cases = { + PressureQuantization{}, + PressureQuantization{{0.5}}, + PressureQuantization{{0.2, 0.5, 0.8}}, + }; + + for (const auto& quantization : valid_cases) { + EXPECT_TRUE(PressureQuantizer::IsValid(quantization)); + } +} + +TEST(PressureQuantizer, IsValid_Invalid) { + std::vector<PressureQuantization> invalid_cases = { + PressureQuantization{ + {0.2, 0.3, 0.4, 0.5}}, // Too many utilization thresholds. + PressureQuantization{{0.2, 0.8, 0.5}}, // Incorrectly sorted thresholds. + PressureQuantization{{-1.0}}, // Threshold outside range. + PressureQuantization{{0.0}}, + PressureQuantization{{1.0}}, + PressureQuantization{{2.0}}, + }; + + for (const auto& quantization : invalid_cases) { + EXPECT_FALSE(PressureQuantizer::IsValid(quantization)); + } +} + +TEST(PressureQuantizer, IsSame_True) { + std::vector<std::pair<PressureQuantization, PressureQuantization>> + true_cases = { + {PressureQuantization{{0.1}}, PressureQuantization{{0.1}}}, + {PressureQuantization{{0.2, 0.5, 0.8}}, + PressureQuantization{{0.2, 0.5, 0.8}}}, + {PressureQuantization{{0.3}}, + PressureQuantization{{0.1 + 0.1 + 0.1}}}, + }; + + for (const auto& quantizations : true_cases) { + PressureQuantizer quantizer; + quantizer.Assign(quantizations.first.Clone()); + EXPECT_TRUE(quantizer.IsSame(quantizations.second)); + } +} + +TEST(PressureQuantizer, IsSame_False) { + std::vector<std::pair<PressureQuantization, PressureQuantization>> + false_cases = { + {PressureQuantization{{0.1}}, PressureQuantization{{0.2}}}, + {PressureQuantization{{0.1, 0.15}}, PressureQuantization{{0.1}}}, + {PressureQuantization{{0.1}}, PressureQuantization{{0.1, 0.15}}}, + {PressureQuantization{{0.1}}, PressureQuantization{{0.101}}}, + {PressureQuantization{{0.2, 0.5, 0.8}}, + PressureQuantization{{0.2, 0.6, 0.8}}}, + {PressureQuantization{{0.2, 0.5, 0.8}}, + PressureQuantization{{0.2, 0.5, 0.9}}}, + }; + + for (const auto& quantizations : false_cases) { + PressureQuantizer quantizer; + quantizer.Assign(quantizations.first.Clone()); + EXPECT_FALSE(quantizer.IsSame(quantizations.second)); + } +} + +TEST(PressureQuantizer, Quantize_Empty) { + PressureQuantizer quantizer; + auto empty_quantization_ptr = PressureQuantization::New(); + quantizer.Assign(std::move(empty_quantization_ptr)); + + EXPECT_EQ(PressureState{0.5}, quantizer.Quantize(PressureState{0.0}.Clone())); + EXPECT_EQ(PressureState{0.5}, quantizer.Quantize(PressureState{1.0}.Clone())); +} + +TEST(PressureQuantizer, Quantize) { + PressureQuantizer quantizer; + auto quantization_ptr = + PressureQuantization::New(std::vector<double>{0.2, 0.5, 0.8}); + quantizer.Assign(std::move(quantization_ptr)); + + std::vector<std::pair<PressureState, PressureState>> test_cases = { + {PressureState{0.0}, PressureState{0.1}}, + {PressureState{1.0}, PressureState{0.9}}, + {PressureState{0.1}, PressureState{0.1}}, + {PressureState{0.19}, PressureState{0.1}}, + {PressureState{0.21}, PressureState{0.35}}, + {PressureState{0.49}, PressureState{0.35}}, + {PressureState{0.51}, PressureState{0.65}}, + {PressureState{0.79}, PressureState{0.65}}, + {PressureState{0.81}, PressureState{0.9}}, + {PressureState{0.99}, PressureState{0.9}}, + }; + + for (const auto& test_case : test_cases) { + PressureState input = test_case.first; + PressureState expected = test_case.second; + PressureState output = quantizer.Quantize(input.Clone()); + + EXPECT_DOUBLE_EQ(expected.cpu_utilization, output.cpu_utilization) + << "Input cpu_utilization is: " << input.cpu_utilization; + } +} + +} // namespace content
diff --git a/content/browser/compute_pressure/compute_pressure_service_impl.cc b/content/browser/compute_pressure/pressure_service_impl.cc similarity index 64% rename from content/browser/compute_pressure/compute_pressure_service_impl.cc rename to content/browser/compute_pressure/pressure_service_impl.cc index 0510981a..ac1033a 100644 --- a/content/browser/compute_pressure/compute_pressure_service_impl.cc +++ b/content/browser/compute_pressure/pressure_service_impl.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/browser/compute_pressure/compute_pressure_service_impl.h" +#include "content/browser/compute_pressure/pressure_service_impl.h" #include <utility> @@ -13,18 +13,17 @@ #include "mojo/public/cpp/bindings/message.h" #include "services/network/public/cpp/is_potentially_trustworthy.h" #include "third_party/blink/public/common/features.h" -#include "third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom.h" +#include "third_party/blink/public/mojom/compute_pressure/pressure_service.mojom.h" #include "third_party/blink/public/mojom/page/page_visibility_state.mojom.h" namespace content { -constexpr base::TimeDelta - ComputePressureServiceImpl::kDefaultVisibleObserverRateLimit; +constexpr base::TimeDelta PressureServiceImpl::kDefaultVisibleObserverRateLimit; // static -void ComputePressureServiceImpl::Create( +void PressureServiceImpl::Create( RenderFrameHost* render_frame_host, - mojo::PendingReceiver<blink::mojom::ComputePressureService> receiver) { + mojo::PendingReceiver<blink::mojom::PressureService> receiver) { if (!network::IsOriginPotentiallyTrustworthy( render_frame_host->GetLastCommittedOrigin())) { mojo::ReportBadMessage("Compute Pressure access from an insecure origin"); @@ -39,48 +38,46 @@ GetForCurrentDocument(render_frame_host)->BindReceiver(std::move(receiver)); } -ComputePressureServiceImpl::ComputePressureServiceImpl( +PressureServiceImpl::PressureServiceImpl( RenderFrameHost* render_frame_host, base::TimeDelta visible_observer_rate_limit) - : DocumentUserData<ComputePressureServiceImpl>(render_frame_host), + : DocumentUserData<PressureServiceImpl>(render_frame_host), visible_observer_rate_limit_(visible_observer_rate_limit) { DCHECK(render_frame_host); // base::Unretained use is safe because mojo guarantees the callback will not // be called after `observers_` is deallocated, and `observers_` is owned by - // ComputePressureServiceImpl. - observers_.set_disconnect_handler(base::BindRepeating( - &ComputePressureServiceImpl::OnObserverRemoteDisconnected, - base::Unretained(this))); + // PressureServiceImpl. + observers_.set_disconnect_handler( + base::BindRepeating(&PressureServiceImpl::OnObserverRemoteDisconnected, + base::Unretained(this))); } -ComputePressureServiceImpl::~ComputePressureServiceImpl() { +PressureServiceImpl::~PressureServiceImpl() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } -void ComputePressureServiceImpl::BindReceiver( - mojo::PendingReceiver<blink::mojom::ComputePressureService> receiver) { +void PressureServiceImpl::BindReceiver( + mojo::PendingReceiver<blink::mojom::PressureService> receiver) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); receivers_.Add(this, std::move(receiver)); } -void ComputePressureServiceImpl::AddObserver( - mojo::PendingRemote<blink::mojom::ComputePressureObserver> observer, - blink::mojom::ComputePressureQuantizationPtr quantization, +void PressureServiceImpl::AddObserver( + mojo::PendingRemote<blink::mojom::PressureObserver> observer, + blink::mojom::PressureQuantizationPtr quantization, AddObserverCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - if (!ComputePressureQuantizer::IsValid(*quantization)) { + if (!PressureQuantizer::IsValid(*quantization)) { mojo::ReportBadMessage("Invalid quantization"); - std::move(callback).Run( - blink::mojom::ComputePressureStatus::kSecurityError); + std::move(callback).Run(blink::mojom::PressureStatus::kSecurityError); return; } if (!render_frame_host().IsActive()) { - std::move(callback).Run( - blink::mojom::ComputePressureStatus::kSecurityError); + std::move(callback).Run(blink::mojom::PressureStatus::kSecurityError); return; } @@ -88,11 +85,11 @@ auto receiver = remote_.BindNewPipeAndPassReceiver(); // base::Unretained use is safe because mojo guarantees the callback will // not be called after `remote_` is deallocated, and `remote_` is owned by - // ComputePressureServiceImpl. - remote_.set_disconnect_handler(base::BindRepeating( - &ComputePressureServiceImpl::OnManagerRemoteDisconnected, - base::Unretained(this))); - GetDeviceService().BindComputePressureManager(std::move(receiver)); + // PressureServiceImpl. + remote_.set_disconnect_handler( + base::BindRepeating(&PressureServiceImpl::OnManagerRemoteDisconnected, + base::Unretained(this))); + GetDeviceService().BindPressureManager(std::move(receiver)); } if (observers_.empty() || !quantizer_.IsSame(*quantization)) { @@ -103,28 +100,27 @@ if (!client_.is_bound()) { remote_->AddClient( client_.BindNewPipeAndPassRemote(), - base::BindOnce(&ComputePressureServiceImpl::DidAddObserver, + base::BindOnce(&PressureServiceImpl::DidAddObserver, base::Unretained(this), std::move(observer), std::move(callback))); // base::Unretained use is safe because mojo guarantees the callback will // not be called after `client_` is deallocated, and `client_` is owned by - // ComputePressureServiceImpl. - client_.set_disconnect_handler( - base::BindOnce(&ComputePressureServiceImpl::ResetObserverState, - base::Unretained(this))); + // PressureServiceImpl. + client_.set_disconnect_handler(base::BindOnce( + &PressureServiceImpl::ResetObserverState, base::Unretained(this))); return; } DidAddObserver(std::move(observer), std::move(callback), true); } -void ComputePressureServiceImpl::ComputePressureStateChanged( - device::mojom::ComputePressureStatePtr state, +void PressureServiceImpl::PressureStateChanged( + device::mojom::PressureStatePtr state, base::Time timestamp) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - device::mojom::ComputePressureState quantized_state = + device::mojom::PressureState quantized_state = quantizer_.Quantize(std::move(state)); // TODO(jsbell): Rate-limit observers in non-visible frames instead of @@ -155,7 +151,7 @@ observer->OnUpdate(quantized_state.Clone()); } -void ComputePressureServiceImpl::OnObserverRemoteDisconnected( +void PressureServiceImpl::OnObserverRemoteDisconnected( mojo::RemoteSetElementId /*id*/) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -165,7 +161,7 @@ } } -void ComputePressureServiceImpl::OnManagerRemoteDisconnected() { +void PressureServiceImpl::OnManagerRemoteDisconnected() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); observers_.Clear(); @@ -173,22 +169,22 @@ remote_.reset(); } -void ComputePressureServiceImpl::DidAddObserver( - mojo::PendingRemote<blink::mojom::ComputePressureObserver> observer, +void PressureServiceImpl::DidAddObserver( + mojo::PendingRemote<blink::mojom::PressureObserver> observer, AddObserverCallback callback, bool success) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (!success) { - std::move(callback).Run(blink::mojom::ComputePressureStatus::kNotSupported); + std::move(callback).Run(blink::mojom::PressureStatus::kNotSupported); return; } observers_.Add(std::move(observer)); - std::move(callback).Run(blink::mojom::ComputePressureStatus::kOk); + std::move(callback).Run(blink::mojom::PressureStatus::kOk); } -void ComputePressureServiceImpl::ResetObserverState() { +void PressureServiceImpl::ResetObserverState() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); observers_.Clear(); @@ -198,9 +194,9 @@ last_reported_timestamp_ = base::Time::Now(); // Setting to an invalid value, so any state is considered an update. - last_reported_state_ = device::mojom::ComputePressureState(-1); + last_reported_state_ = device::mojom::PressureState(-1); } -DOCUMENT_USER_DATA_KEY_IMPL(ComputePressureServiceImpl); +DOCUMENT_USER_DATA_KEY_IMPL(PressureServiceImpl); } // namespace content
diff --git a/content/browser/compute_pressure/pressure_service_impl.h b/content/browser/compute_pressure/pressure_service_impl.h new file mode 100644 index 0000000..ca40e84 --- /dev/null +++ b/content/browser/compute_pressure/pressure_service_impl.h
@@ -0,0 +1,116 @@ +// Copyright 2021 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 CONTENT_BROWSER_COMPUTE_PRESSURE_PRESSURE_SERVICE_IMPL_H_ +#define CONTENT_BROWSER_COMPUTE_PRESSURE_PRESSURE_SERVICE_IMPL_H_ + +#include "base/callback.h" +#include "base/sequence_checker.h" +#include "base/thread_annotations.h" +#include "base/time/time.h" +#include "content/browser/compute_pressure/pressure_quantizer.h" +#include "content/common/content_export.h" +#include "content/public/browser/document_user_data.h" +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/remote_set.h" +#include "services/device/public/mojom/pressure_manager.mojom.h" +#include "services/device/public/mojom/pressure_state.mojom.h" +#include "third_party/blink/public/mojom/compute_pressure/pressure_service.mojom.h" + +namespace content { + +class RenderFrameHost; + +// Serves all the Compute Pressure API mojo requests for a frame. +// RenderFrameHostImpl owns an instance of this class. +// +// This class is not thread-safe, so each instance must be used on one sequence. +class CONTENT_EXPORT PressureServiceImpl + : public blink::mojom::PressureService, + public device::mojom::PressureClient, + public DocumentUserData<PressureServiceImpl> { + public: + static constexpr base::TimeDelta kDefaultVisibleObserverRateLimit = + base::Seconds(1); + + static void Create( + RenderFrameHost* render_frame_host, + mojo::PendingReceiver<blink::mojom::PressureService> receiver); + + ~PressureServiceImpl() override; + + PressureServiceImpl(const PressureServiceImpl&) = delete; + PressureServiceImpl& operator=(const PressureServiceImpl&) = delete; + + void BindReceiver( + mojo::PendingReceiver<blink::mojom::PressureService> receiver); + + // blink::mojom::PressureService implementation. + void AddObserver(mojo::PendingRemote<blink::mojom::PressureObserver> observer, + blink::mojom::PressureQuantizationPtr quantization, + AddObserverCallback callback) override; + + // device::mojom::PressureClient implementation. + void PressureStateChanged(device::mojom::PressureStatePtr state, + base::Time timestamp) override; + + private: + friend class content::DocumentUserData<PressureServiceImpl>; + + PressureServiceImpl(RenderFrameHost* render_frame_host, + base::TimeDelta visible_observer_rate_limit); + + void OnObserverRemoteDisconnected(mojo::RemoteSetElementId /*id*/); + + void OnManagerRemoteDisconnected(); + + void DidAddObserver( + mojo::PendingRemote<blink::mojom::PressureObserver> observer, + AddObserverCallback callback, + bool success); + + // Resets the state used to dispatch updates to observers. + // + // Called when the quantizing scheme changes. + void ResetObserverState(); + + SEQUENCE_CHECKER(sequence_checker_); + + // The minimum delay between two Update() calls for observers belonging to + // the frame. + const base::TimeDelta visible_observer_rate_limit_; + + // Implements the quantizing scheme used for all the frame's observers. + PressureQuantizer quantizer_ GUARDED_BY_CONTEXT(sequence_checker_); + + // The (quantized) sample that was last reported to this frame's observers. + // + // Stored to avoid sending updates when the underlying compute pressure state + // changes, but quantization produces the same values that were reported in + // the last update. + device::mojom::PressureState last_reported_state_ + GUARDED_BY_CONTEXT(sequence_checker_); + + // The last time the frame's observers received an update. + // + // Stored to implement rate-limiting. + base::Time last_reported_timestamp_ GUARDED_BY_CONTEXT(sequence_checker_); + + mojo::RemoteSet<blink::mojom::PressureObserver> observers_ + GUARDED_BY_CONTEXT(sequence_checker_); + mojo::ReceiverSet<blink::mojom::PressureService> receivers_ + GUARDED_BY_CONTEXT(sequence_checker_); + + mojo::Remote<device::mojom::PressureManager> remote_ + GUARDED_BY_CONTEXT(sequence_checker_); + mojo::Receiver<device::mojom::PressureClient> GUARDED_BY_CONTEXT( + sequence_checker_) client_{this}; + + friend DocumentUserData; + DOCUMENT_USER_DATA_KEY_DECL(); +}; + +} // namespace content + +#endif // CONTENT_BROWSER_COMPUTE_PRESSURE_PRESSURE_SERVICE_IMPL_H_
diff --git a/content/browser/compute_pressure/pressure_service_impl_unittest.cc b/content/browser/compute_pressure/pressure_service_impl_unittest.cc new file mode 100644 index 0000000..9c18b97 --- /dev/null +++ b/content/browser/compute_pressure/pressure_service_impl_unittest.cc
@@ -0,0 +1,417 @@ +// Copyright 2021 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 "content/browser/compute_pressure/pressure_service_impl.h" + +#include <vector> + +#include "base/barrier_closure.h" +#include "base/run_loop.h" +#include "base/test/bind.h" +#include "base/test/scoped_feature_list.h" +#include "base/test/test_future.h" +#include "content/test/test_render_view_host.h" +#include "content/test/test_web_contents.h" +#include "mojo/public/cpp/test_support/fake_message_dispatch_context.h" +#include "mojo/public/cpp/test_support/test_utils.h" +#include "services/device/public/cpp/test/scoped_pressure_manager_overrider.h" +#include "services/device/public/mojom/pressure_manager.mojom.h" +#include "services/device/public/mojom/pressure_state.mojom.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "third_party/blink/public/mojom/compute_pressure/pressure_service.mojom.h" +#include "url/gurl.h" + +namespace content { + +using blink::mojom::PressureQuantization; +using device::mojom::PressureState; + +namespace { + +constexpr base::TimeDelta kRateLimit = + PressureServiceImpl::kDefaultVisibleObserverRateLimit; + +// Synchronous proxy to a blink::mojom::PressureService. +class PressureServiceImplSync { + public: + explicit PressureServiceImplSync(blink::mojom::PressureService* service) + : service_(*service) { + DCHECK(service); + } + ~PressureServiceImplSync() = default; + + PressureServiceImplSync(const PressureServiceImplSync&) = delete; + PressureServiceImplSync& operator=(const PressureServiceImplSync&) = delete; + + blink::mojom::PressureStatus AddObserver( + const PressureQuantization& quantization, + mojo::PendingRemote<blink::mojom::PressureObserver> observer) { + base::test::TestFuture<blink::mojom::PressureStatus> future; + service_.AddObserver(std::move(observer), quantization.Clone(), + future.GetCallback()); + return future.Get(); + } + + private: + // The reference is immutable, so accessing it is thread-safe. The referenced + // blink::mojom::PressureService implementation is called synchronously, + // so it's acceptable to rely on its own thread-safety checks. + blink::mojom::PressureService& service_; +}; + +// Test double for PressureObserver that records all updates. +class FakePressureObserver : public blink::mojom::PressureObserver { + public: + FakePressureObserver() : receiver_(this) {} + ~FakePressureObserver() override { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + } + + FakePressureObserver(const FakePressureObserver&) = delete; + FakePressureObserver& operator=(const FakePressureObserver&) = delete; + + // blink::mojom::PressureObserver implementation. + void OnUpdate(device::mojom::PressureStatePtr state) override { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + updates_.push_back(*state); + if (update_callback_) { + std::move(update_callback_).Run(); + update_callback_.Reset(); + } + } + + std::vector<PressureState>& updates() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return updates_; + } + + void SetNextUpdateCallback(base::OnceClosure callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + DCHECK(!update_callback_) << " already called before update received"; + + update_callback_ = std::move(callback); + } + + void WaitForUpdate() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + base::RunLoop run_loop; + SetNextUpdateCallback(run_loop.QuitClosure()); + run_loop.Run(); + } + + static void WaitForUpdates( + std::initializer_list<FakePressureObserver*> observers) { + base::RunLoop run_loop; + base::RepeatingClosure update_barrier = + base::BarrierClosure(observers.size(), run_loop.QuitClosure()); + for (FakePressureObserver* observer : observers) + observer->SetNextUpdateCallback(update_barrier); + run_loop.Run(); + } + + mojo::PendingRemote<blink::mojom::PressureObserver> + BindNewPipeAndPassRemote() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + return receiver_.BindNewPipeAndPassRemote(); + } + + private: + SEQUENCE_CHECKER(sequence_checker_); + + std::vector<PressureState> updates_ GUARDED_BY_CONTEXT(sequence_checker_); + + // Used to implement WaitForUpdate(). + base::OnceClosure update_callback_ GUARDED_BY_CONTEXT(sequence_checker_); + + mojo::Receiver<blink::mojom::PressureObserver> receiver_ + GUARDED_BY_CONTEXT(sequence_checker_); +}; + +} // namespace + +class PressureServiceImplTest : public RenderViewHostImplTestHarness { + public: + PressureServiceImplTest() = default; + ~PressureServiceImplTest() override = default; + + PressureServiceImplTest(const PressureServiceImplTest&) = delete; + PressureServiceImplTest& operator=(const PressureServiceImplTest&) = delete; + + void SetUp() override { + RenderViewHostImplTestHarness::SetUp(); + NavigateAndCommit(kTestUrl); + + SetPressureServiceImpl(); + } + + void TearDown() override { + pressure_service_impl_sync_.reset(); + pressure_manager_overrider_.reset(); + task_environment()->RunUntilIdle(); + + RenderViewHostImplTestHarness::TearDown(); + } + + void SetPressureServiceImpl() { + pressure_manager_overrider_ = + std::make_unique<device::ScopedPressureManagerOverrider>(); + pressure_service_.reset(); + PressureServiceImpl::Create(contents()->GetPrimaryMainFrame(), + pressure_service_.BindNewPipeAndPassReceiver()); + pressure_service_impl_sync_ = + std::make_unique<PressureServiceImplSync>(pressure_service_.get()); + } + + protected: + const GURL kTestUrl{"https://example.com/compute_pressure.html"}; + const GURL kInsecureUrl{"http://example.com/compute_pressure.html"}; + // Quantization scheme used in most tests. + const PressureQuantization kQuantization{{0.2, 0.5, 0.8}}; + + base::test::ScopedFeatureList scoped_feature_list_; + + mojo::Remote<blink::mojom::PressureService> pressure_service_; + std::unique_ptr<PressureServiceImplSync> pressure_service_impl_sync_; + std::unique_ptr<device::ScopedPressureManagerOverrider> + pressure_manager_overrider_; +}; + +TEST_F(PressureServiceImplTest, OneObserver) { + FakePressureObserver observer; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + const base::Time time = base::Time::Now() + kRateLimit; + const PressureState state{0.42}; + pressure_manager_overrider_->UpdateClients(state, time); + observer.WaitForUpdate(); + ASSERT_EQ(observer.updates().size(), 1u); + EXPECT_EQ(observer.updates()[0], PressureState{0.35}); +} + +TEST_F(PressureServiceImplTest, OneObserver_UpdateRateLimiting) { + FakePressureObserver observer; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + const base::Time time = base::Time::Now(); + const PressureState state1{0.42}; + pressure_manager_overrider_->UpdateClients(state1, time + kRateLimit); + observer.WaitForUpdate(); + observer.updates().clear(); + + // The first update should be blocked due to rate-limiting. + const PressureState state2{1.0}; + pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit * 1.5); + const PressureState state3{0.0}; + pressure_manager_overrider_->UpdateClients(state3, time + kRateLimit * 2); + observer.WaitForUpdate(); + + ASSERT_EQ(observer.updates().size(), 1u); + EXPECT_EQ(observer.updates()[0], PressureState{0.1}); +} + +TEST_F(PressureServiceImplTest, OneObserver_NoCallbackInvoked) { + FakePressureObserver observer; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + const base::Time time = base::Time::Now() + kRateLimit; + const PressureState state1{0.42}; + pressure_manager_overrider_->UpdateClients(state1, time); + observer.WaitForUpdate(); + ASSERT_EQ(observer.updates().size(), 1u); + EXPECT_EQ(observer.updates()[0], PressureState{0.35}); + + // The first update should be discarded due to same bucket + const PressureState state2{0.37}; + pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit); + const PressureState state3{0.52}; + pressure_manager_overrider_->UpdateClients(state3, time + kRateLimit * 2); + observer.WaitForUpdate(); + ASSERT_EQ(observer.updates().size(), 2u); + EXPECT_EQ(observer.updates()[1], PressureState{0.65}); +} + +TEST_F(PressureServiceImplTest, OneObserver_AddRateLimiting) { + const base::Time before_add = base::Time::Now(); + + FakePressureObserver observer; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + const base::Time after_add = base::Time::Now(); + + ASSERT_LE(after_add - before_add, base::Milliseconds(500)) + << "test timings assume that AddObserver completes in at most 500ms"; + + // The first update should be blocked due to rate-limiting. + const PressureState state1{0.42}; + const base::Time time1 = before_add + base::Milliseconds(700); + pressure_manager_overrider_->UpdateClients(state1, time1); + const PressureState state2{0.0}; + const base::Time time2 = before_add + base::Milliseconds(1600); + pressure_manager_overrider_->UpdateClients(state2, time2); + observer.WaitForUpdate(); + + ASSERT_EQ(observer.updates().size(), 1u); + EXPECT_EQ(observer.updates()[0], PressureState{0.1}); +} + +TEST_F(PressureServiceImplTest, ThreeObservers) { + FakePressureObserver observer1; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer1.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + FakePressureObserver observer2; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer2.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + FakePressureObserver observer3; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer3.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + const base::Time time = base::Time::Now() + kRateLimit; + const PressureState state{0.42}; + pressure_manager_overrider_->UpdateClients(state, time); + FakePressureObserver::WaitForUpdates({&observer1, &observer2, &observer3}); + + ASSERT_EQ(observer1.updates().size(), 1u); + EXPECT_THAT(observer1.updates(), testing::Contains(PressureState{0.35})); + ASSERT_EQ(observer2.updates().size(), 1u); + EXPECT_THAT(observer2.updates(), testing::Contains(PressureState{0.35})); + ASSERT_EQ(observer3.updates().size(), 1u); + EXPECT_THAT(observer3.updates(), testing::Contains(PressureState{0.35})); +} + +TEST_F(PressureServiceImplTest, AddObserver_NewQuantization) { + // 0.42 would quantize as 0.4 + PressureQuantization quantization1{{0.8}}; + FakePressureObserver observer1; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + quantization1, observer1.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + // 0.42 would quantize as 0.6 + PressureQuantization quantization2{{0.2}}; + FakePressureObserver observer2; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + quantization2, observer2.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + // 0.42 will quantize as 0.25 + PressureQuantization quantization3{{0.5}}; + FakePressureObserver observer3; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + quantization3, observer3.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + const base::Time time = base::Time::Now() + kRateLimit; + const PressureState state1{0.42}; + pressure_manager_overrider_->UpdateClients(state1, time); + observer3.WaitForUpdate(); + const PressureState state2{0.84}; + pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit); + observer3.WaitForUpdate(); + + ASSERT_EQ(observer3.updates().size(), 2u); + EXPECT_THAT(observer3.updates(), testing::Contains(PressureState{0.25})); + EXPECT_THAT(observer3.updates(), testing::Contains(PressureState{0.75})); + + ASSERT_EQ(observer1.updates().size(), 0u); + ASSERT_EQ(observer2.updates().size(), 0u); +} + +TEST_F(PressureServiceImplTest, AddObserver_NoVisibility) { + FakePressureObserver observer; + EXPECT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + const base::Time time = base::Time::Now(); + + test_rvh()->SimulateWasHidden(); + + // The first two updates should be blocked due to invisibility. + const PressureState state1{0.0}; + pressure_manager_overrider_->UpdateClients(state1, time + kRateLimit); + const PressureState state2{1.0}; + pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit * 2); + task_environment()->RunUntilIdle(); + + test_rvh()->SimulateWasShown(); + + // The third update should be dispatched. It should not be rate-limited by the + // time proximity to the second update, because the second update is not + // dispatched. + const PressureState state3{1.0}; + pressure_manager_overrider_->UpdateClients(state3, time + kRateLimit * 2.5); + observer.WaitForUpdate(); + + ASSERT_EQ(observer.updates().size(), 1u); + EXPECT_EQ(observer.updates()[0], PressureState{0.9}); +} + +TEST_F(PressureServiceImplTest, AddObserver_InvalidQuantization) { + FakePressureObserver valid_observer; + ASSERT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, valid_observer.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kOk); + + FakePressureObserver invalid_observer; + PressureQuantization invalid_quantization{{-1.0}}; + + { + mojo::test::BadMessageObserver bad_message_observer; + EXPECT_EQ( + pressure_service_impl_sync_->AddObserver( + invalid_quantization, invalid_observer.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kSecurityError); + EXPECT_EQ("Invalid quantization", bad_message_observer.WaitForBadMessage()); + } + + const base::Time time = base::Time::Now(); + + const PressureState state1{0.0}; + pressure_manager_overrider_->UpdateClients(state1, time + kRateLimit); + valid_observer.WaitForUpdate(); + const PressureState state2{1.0}; + pressure_manager_overrider_->UpdateClients(state2, time + kRateLimit * 2); + valid_observer.WaitForUpdate(); + + ASSERT_EQ(valid_observer.updates().size(), 2u); + EXPECT_THAT(valid_observer.updates(), testing::Contains(PressureState{0.1})); + EXPECT_THAT(valid_observer.updates(), testing::Contains(PressureState{0.9})); + + ASSERT_EQ(invalid_observer.updates().size(), 0u); +} + +TEST_F(PressureServiceImplTest, AddObserver_NotSupported) { + pressure_manager_overrider_->set_is_supported(false); + + FakePressureObserver observer; + EXPECT_EQ(pressure_service_impl_sync_->AddObserver( + kQuantization, observer.BindNewPipeAndPassRemote()), + blink::mojom::PressureStatus::kNotSupported); +} + +TEST_F(PressureServiceImplTest, InsecureOrigin) { + NavigateAndCommit(kInsecureUrl); + + mojo::FakeMessageDispatchContext fake_dispatch_context; + mojo::test::BadMessageObserver bad_message_observer; + SetPressureServiceImpl(); + EXPECT_EQ("Compute Pressure access from an insecure origin", + bad_message_observer.WaitForBadMessage()); +} + +} // namespace content
diff --git a/content/browser/screenlock_monitor/screenlock_monitor.cc b/content/browser/screenlock_monitor/screenlock_monitor.cc index 9f3de49a..3867942 100644 --- a/content/browser/screenlock_monitor/screenlock_monitor.cc +++ b/content/browser/screenlock_monitor/screenlock_monitor.cc
@@ -5,6 +5,7 @@ #include "content/browser/screenlock_monitor/screenlock_monitor.h" #include "base/logging.h" +#include "base/metrics/histogram_functions.h" #include "base/trace_event/trace_event.h" #include "content/browser/screenlock_monitor/screenlock_monitor_source.h" @@ -43,6 +44,7 @@ "ScreenlockMonitor::NotifyScreenLocked", TRACE_EVENT_SCOPE_GLOBAL); DVLOG(1) << "Screen Locked"; + ReportLockUnlockDuration(/*is_locked=*/true); observers_->Notify(FROM_HERE, &ScreenlockObserver::OnScreenLocked); } @@ -51,7 +53,35 @@ "ScreenlockMonitor::NotifyScreenUnlocked", TRACE_EVENT_SCOPE_GLOBAL); DVLOG(1) << "Screen Unlocked"; + ReportLockUnlockDuration(/*is_locked=*/false); observers_->Notify(FROM_HERE, &ScreenlockObserver::OnScreenUnlocked); } +void ScreenlockMonitor::ReportLockUnlockDuration(bool is_locked) { + const base::TimeTicks now = base::TimeTicks::Now(); + + // If it is the first time called, just record the time and lock state. + if (last_lock_unlock_time_.is_null()) { + last_lock_unlock_time_ = now; + is_locked_ = is_locked; + return; + } + + // Skip if duplicated lock state is called. + if (is_locked_ == is_locked) + return; + + is_locked_ = is_locked; + + // Record metrics. + if (is_locked_) { + base::UmaHistogramLongTimes("ScreenLocker.Unlocked.Duration", + now - last_lock_unlock_time_); + } else { + base::UmaHistogramLongTimes("ScreenLocker.Locked.Duration", + now - last_lock_unlock_time_); + } + last_lock_unlock_time_ = now; +} + } // namespace content
diff --git a/content/browser/screenlock_monitor/screenlock_monitor.h b/content/browser/screenlock_monitor/screenlock_monitor.h index c509695..109353b 100644 --- a/content/browser/screenlock_monitor/screenlock_monitor.h +++ b/content/browser/screenlock_monitor/screenlock_monitor.h
@@ -9,6 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/observer_list_threadsafe.h" +#include "base/time/time.h" #include "content/common/content_export.h" #include "content/public/browser/screenlock_observer.h" @@ -44,7 +45,10 @@ void NotifyScreenLocked(); void NotifyScreenUnlocked(); + void ReportLockUnlockDuration(bool is_locked); + base::TimeTicks last_lock_unlock_time_; + bool is_locked_ = false; scoped_refptr<base::ObserverListThreadSafe<ScreenlockObserver>> observers_; std::unique_ptr<ScreenlockMonitorSource> source_; };
diff --git a/content/browser/screenlock_monitor/screenlock_monitor_unittest.cc b/content/browser/screenlock_monitor/screenlock_monitor_unittest.cc index e24873da..abed3596 100644 --- a/content/browser/screenlock_monitor/screenlock_monitor_unittest.cc +++ b/content/browser/screenlock_monitor/screenlock_monitor_unittest.cc
@@ -7,6 +7,7 @@ #include "base/memory/raw_ptr.h" #include "base/run_loop.h" #include "base/task/current_thread.h" +#include "base/test/metrics/histogram_tester.h" #include "base/test/task_environment.h" #include "content/browser/screenlock_monitor/screenlock_monitor_source.h" #include "testing/gtest/include/gtest/gtest.h" @@ -64,8 +65,8 @@ raw_ptr<ScreenlockMonitorTestSource> screenlock_monitor_source_; std::unique_ptr<ScreenlockMonitor> screenlock_monitor_; - private: - base::test::SingleThreadTaskEnvironment task_environment_; + base::test::SingleThreadTaskEnvironment task_environment_{ + base::test::SingleThreadTaskEnvironment::TimeSource::MOCK_TIME}; }; TEST_F(ScreenlockMonitorTest, ScreenlockNotifications) { @@ -88,4 +89,33 @@ EXPECT_FALSE(observers[index].IsScreenLocked()); } +TEST_F(ScreenlockMonitorTest, HistogramTest) { + base::HistogramTester histogram_tester; + + base::TimeDelta time_to_advance = base::Seconds(10); + task_environment_.AdvanceClock(time_to_advance); + screenlock_monitor_source_->GenerateScreenLockedEvent(); + // We should not log any metrics for the first lock event. + histogram_tester.ExpectTotalCount("ScreenLocker.Unlocked.Duration", 0); + histogram_tester.ExpectTotalCount("ScreenLocker.Locked.Duration", 0); + + time_to_advance = base::Seconds(11); + task_environment_.AdvanceClock(time_to_advance); + screenlock_monitor_source_->GenerateScreenUnlockedEvent(); + // A Locked event with duration should be logged on unlock. + histogram_tester.ExpectTotalCount("ScreenLocker.Unlocked.Duration", 0); + histogram_tester.ExpectTotalCount("ScreenLocker.Locked.Duration", 1); + histogram_tester.ExpectUniqueTimeSample("ScreenLocker.Locked.Duration", + time_to_advance, 1); + + time_to_advance = base::Seconds(12); + task_environment_.AdvanceClock(time_to_advance); + screenlock_monitor_source_->GenerateScreenLockedEvent(); + // A Unlocked event with duration should be logged on lock. + histogram_tester.ExpectTotalCount("ScreenLocker.Unlocked.Duration", 1); + histogram_tester.ExpectTotalCount("ScreenLocker.Locked.Duration", 1); + histogram_tester.ExpectUniqueTimeSample("ScreenLocker.Unlocked.Duration", + time_to_advance, 1); +} + } // namespace content
diff --git a/content/browser/webui/url_data_manager_backend.cc b/content/browser/webui/url_data_manager_backend.cc index 630da6d..3ed4bcf 100644 --- a/content/browser/webui/url_data_manager_backend.cc +++ b/content/browser/webui/url_data_manager_backend.cc
@@ -147,7 +147,7 @@ scoped_refptr<net::HttpResponseHeaders> URLDataManagerBackend::GetHeaders( URLDataSourceImpl* source_impl, - const std::string& path, + const GURL& url, const std::string& origin) { // Set the headers so that requests serviced by ChromeURLDataManager return a // status code of 200. Without this they return a 0, which makes the status @@ -211,7 +211,7 @@ if (!source->AllowCaching()) headers->SetHeader("Cache-Control", "no-cache"); - std::string mime_type = source->GetMimeType(path); + std::string mime_type = source->GetMimeType(url); if (source->ShouldServeMimeTypeAsContentTypeHeader() && !mime_type.empty()) headers->SetHeader(net::HttpRequestHeaders::kContentType, mime_type);
diff --git a/content/browser/webui/url_data_manager_backend.h b/content/browser/webui/url_data_manager_backend.h index 17bc2f8..779afb9 100644 --- a/content/browser/webui/url_data_manager_backend.h +++ b/content/browser/webui/url_data_manager_backend.h
@@ -62,7 +62,7 @@ // Creates and sets the response headers for the given request. static scoped_refptr<net::HttpResponseHeaders> GetHeaders( URLDataSourceImpl* source, - const std::string& path, + const GURL& url, const std::string& origin); // Returns whether |url| passes some sanity checks and is a valid GURL.
diff --git a/content/browser/webui/web_ui_security_browsertest.cc b/content/browser/webui/web_ui_security_browsertest.cc index 67d2e862..b2e10e3 100644 --- a/content/browser/webui/web_ui_security_browsertest.cc +++ b/content/browser/webui/web_ui_security_browsertest.cc
@@ -573,9 +573,7 @@ const std::string& origin) override { return origin; } - std::string GetMimeType(const std::string& path) override { - return "text/html"; - } + std::string GetMimeType(const GURL& url) override { return "text/html"; } void StartDataRequest(const GURL& url, const WebContents::Getter& wc_getter, GotDataCallback callback) override {
diff --git a/content/browser/webui/web_ui_url_loader_factory.cc b/content/browser/webui/web_ui_url_loader_factory.cc index ffe13064..9fbaf27 100644 --- a/content/browser/webui/web_ui_url_loader_factory.cc +++ b/content/browser/webui/web_ui_url_loader_factory.cc
@@ -230,7 +230,7 @@ request.headers.GetHeader(net::HttpRequestHeaders::kOrigin, &origin_header); scoped_refptr<net::HttpResponseHeaders> headers = - URLDataManagerBackend::GetHeaders(source, path, origin_header); + URLDataManagerBackend::GetHeaders(source, request.url, origin_header); auto resource_response = network::mojom::URLResponseHead::New(); @@ -239,7 +239,7 @@ // process. resource_response->parsed_headers = network::PopulateParsedHeaders( resource_response->headers.get(), request.url); - resource_response->mime_type = source->source()->GetMimeType(path); + resource_response->mime_type = source->source()->GetMimeType(request.url); // TODO: fill all the time related field i.e. request_time response_time // request_start response_start @@ -255,10 +255,10 @@ bool replace_in_js = source->source()->ShouldReplaceI18nInJS() && - source->source()->GetMimeType(path) == "application/javascript"; + source->source()->GetMimeType(request.url) == "application/javascript"; const ui::TemplateReplacements* replacements = nullptr; - const std::string mime_type = source->source()->GetMimeType(path); + const std::string mime_type = source->source()->GetMimeType(request.url); if (mime_type == "text/html" || mime_type == "text/css" || replace_in_js) replacements = source->source()->GetReplacements();
diff --git a/content/browser/webui/web_ui_url_loader_factory_unittest.cc b/content/browser/webui/web_ui_url_loader_factory_unittest.cc index 0f30adc..ce366e69 100644 --- a/content/browser/webui/web_ui_url_loader_factory_unittest.cc +++ b/content/browser/webui/web_ui_url_loader_factory_unittest.cc
@@ -58,9 +58,7 @@ std::move(callback).Run(std::move(resource)); } - std::string GetMimeType(const std::string& path) override { - return "video/webm"; - } + std::string GetMimeType(const GURL& url) override { return "video/webm"; } private: const size_t resource_size_; @@ -83,9 +81,7 @@ std::move(callback).Run(std::move(resource)); } - std::string GetMimeType(const std::string& path) override { - return "video/webm"; - } + std::string GetMimeType(const GURL& url) override { return "video/webm"; } private: // An implementation of RefCountedMemory representing a very large "virtual"
diff --git a/content/common/url_schemes.cc b/content/common/url_schemes.cc index 41d374e..4d2b52b 100644 --- a/content/common/url_schemes.cc +++ b/content/common/url_schemes.cc
@@ -107,6 +107,9 @@ url::EnableNonStandardSchemesForAndroidWebView(); #endif + for (auto& [scheme, handler] : schemes.predefined_handler_schemes) + url::AddPredefinedHandlerScheme(scheme.c_str(), handler.c_str()); + schemes.service_worker_schemes.push_back(kIsolatedAppScheme); // This should only be registered if the // kEnableServiceWorkerForChromeUntrusted feature is enabled but checking
diff --git a/content/public/browser/url_data_source.cc b/content/public/browser/url_data_source.cc index fc37ef1..0ac7cac 100644 --- a/content/public/browser/url_data_source.cc +++ b/content/public/browser/url_data_source.cc
@@ -54,6 +54,15 @@ return std::string(); } +std::string URLDataSource::GetMimeType(const GURL& url) { + return GetMimeType(URLDataSource::URLToRequestPath(url)); +} + +std::string URLDataSource::GetMimeType(const std::string& path) { + NOTREACHED(); + return std::string(); +} + bool URLDataSource::ShouldReplaceExistingSource() { return true; }
diff --git a/content/public/browser/url_data_source.h b/content/public/browser/url_data_source.h index 9d4dd983..cdda3262 100644 --- a/content/public/browser/url_data_source.h +++ b/content/public/browser/url_data_source.h
@@ -69,7 +69,12 @@ // Return the mimetype that should be sent with this response, or empty // string to specify no mime type. - virtual std::string GetMimeType(const std::string& path) = 0; + virtual std::string GetMimeType(const GURL& url); + + // Deprecated. Prefer method above. + // TODO(crbug.com/1344742): Remove after migrating to + // `GetMimeType(const GURL& url)`. + virtual std::string GetMimeType(const std::string& path); // Returns true if the URLDataSource should replace an existing URLDataSource // with the same name that has already been registered. The default is true.
diff --git a/content/public/common/content_client.h b/content/public/common/content_client.h index d4f69c0d..89a5f06 100644 --- a/content/public/common/content_client.h +++ b/content/public/common/content_client.h
@@ -143,6 +143,11 @@ std::vector<std::string> empty_document_schemes; // Registers a URL scheme as extension scheme. std::vector<std::string> extension_schemes; + // Registers a URL scheme with a predefined default custom handler. + // This pair of strings must be normalized protocol handler parameters as + // described in the Custom Handler specification. + // https://html.spec.whatwg.org/multipage/system-state.html#normalize-protocol-handler-parameters + std::vector<std::pair<std::string, std::string>> predefined_handler_schemes; #if BUILDFLAG(IS_ANDROID) // Normally, non-standard schemes canonicalize to opaque origins. However, // Android WebView requires non-standard schemes to still be preserved.
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn index 3ac2527..83254bf 100644 --- a/content/test/BUILD.gn +++ b/content/test/BUILD.gn
@@ -2135,8 +2135,8 @@ "../browser/client_hints/client_hints_unittest.cc", "../browser/code_cache/generated_code_cache_unittest.cc", "../browser/code_cache/simple_lru_cache_unittest.cc", - "../browser/compute_pressure/compute_pressure_quantizer_unittest.cc", - "../browser/compute_pressure/compute_pressure_service_impl_unittest.cc", + "../browser/compute_pressure/pressure_quantizer_unittest.cc", + "../browser/compute_pressure/pressure_service_impl_unittest.cc", "../browser/content_index/content_index_database_unittest.cc", "../browser/content_index/content_index_service_impl_unittest.cc", "../browser/cookie_store/cookie_store_manager_unittest.cc",
diff --git a/docs/windows_build_instructions.md b/docs/windows_build_instructions.md index 32532aa0..12fc2e2e 100644 --- a/docs/windows_build_instructions.md +++ b/docs/windows_build_instructions.md
@@ -348,7 +348,7 @@ You can also get a visual report of the build performance with [ninjatracing](https://github.com/nico/ninjatracing). This converts the -.ninja_log file into a .json file which can be loaded into chrome://tracing: +.ninja_log file into a .json file which can be loaded into [chrome://tracing](chrome://tracing): ```shell $ python ninjatracing out\Default\.ninja_log >build.json
diff --git a/extensions/browser/BUILD.gn b/extensions/browser/BUILD.gn index a595e16..030df1e 100644 --- a/extensions/browser/BUILD.gn +++ b/extensions/browser/BUILD.gn
@@ -746,12 +746,12 @@ "//chromeos/ash/components/dbus/media_analytics", "//chromeos/ash/components/dbus/media_analytics:media_perception_proto", "//chromeos/ash/components/dbus/upstart", + "//chromeos/ash/components/network", "//chromeos/dbus:test_support", "//chromeos/dbus/permission_broker", "//chromeos/dbus/power", "//chromeos/dbus/power:power_manager_proto", "//chromeos/login/login_state", - "//chromeos/network", "//components/crash/content/browser/error_reporting:mock_crash_endpoint", "//extensions/common:mojom", ]
diff --git a/extensions/browser/api/networking_private/BUILD.gn b/extensions/browser/api/networking_private/BUILD.gn index e01a8f9..afb4618d 100644 --- a/extensions/browser/api/networking_private/BUILD.gn +++ b/extensions/browser/api/networking_private/BUILD.gn
@@ -73,10 +73,10 @@ "networking_private_event_router_chromeos.cc", ] deps += [ + "//chromeos/ash/components/network", "//chromeos/ash/components/network/portal_detector", "//chromeos/components/onc", "//chromeos/login/login_state", - "//chromeos/network", "//components/proxy_config", ] } else {
diff --git a/extensions/browser/api/networking_private/networking_private_chromeos.cc b/extensions/browser/api/networking_private/networking_private_chromeos.cc index 8a44ce5..3d939953 100644 --- a/extensions/browser/api/networking_private/networking_private_chromeos.cc +++ b/extensions/browser/api/networking_private/networking_private_chromeos.cc
@@ -108,8 +108,7 @@ const chromeos::DeviceState* device, NetworkingPrivateDelegate::DeviceStateList* device_state_list) { DCHECK(!type.empty()); - NetworkTypePattern pattern = - chromeos::onc::NetworkTypePatternFromOncType(type); + NetworkTypePattern pattern = ash::onc::NetworkTypePatternFromOncType(type); NetworkStateHandler::TechnologyState technology_state = GetStateHandler()->GetTechnologyState(pattern); private_api::DeviceStateType state = private_api::DEVICE_STATE_TYPE_NONE; @@ -243,19 +242,19 @@ using PortalState = chromeos::NetworkState::PortalState; switch (portal_state) { case PortalState::kUnknown: - return chromeos::NetworkPortalDetector::CaptivePortalStatusString( - chromeos::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN); + return ash::NetworkPortalDetector::CaptivePortalStatusString( + ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_UNKNOWN); case PortalState::kOnline: - return chromeos::NetworkPortalDetector::CaptivePortalStatusString( - chromeos::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE); + return ash::NetworkPortalDetector::CaptivePortalStatusString( + ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE); case PortalState::kPortalSuspected: case PortalState::kPortal: case PortalState::kNoInternet: - return chromeos::NetworkPortalDetector::CaptivePortalStatusString( - chromeos::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL); + return ash::NetworkPortalDetector::CaptivePortalStatusString( + ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL); case PortalState::kProxyAuthRequired: - return chromeos::NetworkPortalDetector::CaptivePortalStatusString( - chromeos::NetworkPortalDetector:: + return ash::NetworkPortalDetector::CaptivePortalStatusString( + ash::NetworkPortalDetector:: CAPTIVE_PORTAL_STATUS_PROXY_AUTH_REQUIRED); } return "Unrecognized"; @@ -492,7 +491,7 @@ NetworkTypePattern pattern = (!visible_only && network_type == ::onc::network_type::kEthernet) ? NetworkTypePattern::EthernetOrEthernetEAP() - : chromeos::onc::NetworkTypePatternFromOncType(network_type); + : ash::onc::NetworkTypePatternFromOncType(network_type); base::Value network_properties_list = chromeos::network_util::TranslateNetworkListToONC( pattern, configured_only, visible_only, limit); @@ -573,8 +572,8 @@ } if (!network->IsConnectedState()) { std::move(success_callback) - .Run(chromeos::NetworkPortalDetector::CaptivePortalStatusString( - chromeos::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE)); + .Run(ash::NetworkPortalDetector::CaptivePortalStatusString( + ash::NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_OFFLINE)); return; } chromeos::NetworkState::PortalState portal_state = network->portal_state(); @@ -759,8 +758,7 @@ void NetworkingPrivateChromeOS::EnableNetworkType(const std::string& type, BoolCallback callback) { - NetworkTypePattern pattern = - chromeos::onc::NetworkTypePatternFromOncType(type); + NetworkTypePattern pattern = ash::onc::NetworkTypePatternFromOncType(type); NET_LOG(USER) << __func__ << ":" << type; GetStateHandler()->SetTechnologyEnabled( @@ -771,8 +769,7 @@ void NetworkingPrivateChromeOS::DisableNetworkType(const std::string& type, BoolCallback callback) { - NetworkTypePattern pattern = - chromeos::onc::NetworkTypePatternFromOncType(type); + NetworkTypePattern pattern = ash::onc::NetworkTypePatternFromOncType(type); NET_LOG(USER) << __func__ << ":" << type; GetStateHandler()->SetTechnologyEnabled( @@ -783,7 +780,7 @@ void NetworkingPrivateChromeOS::RequestScan(const std::string& type, BoolCallback callback) { - NetworkTypePattern pattern = chromeos::onc::NetworkTypePatternFromOncType( + NetworkTypePattern pattern = ash::onc::NetworkTypePatternFromOncType( type.empty() ? ::onc::network_type::kAllTypes : type); GetStateHandler()->RequestScan(pattern);
diff --git a/extensions/browser/api/networking_private/networking_private_chromeos.h b/extensions/browser/api/networking_private/networking_private_chromeos.h index cf075f9..5e6dc57 100644 --- a/extensions/browser/api/networking_private/networking_private_chromeos.h +++ b/extensions/browser/api/networking_private/networking_private_chromeos.h
@@ -109,7 +109,7 @@ // Populate ThirdPartyVPN.ProviderName with the provider name for third-party // VPNs. The provider name needs to be looked up from the list of extensions - // which is not available to the chromeos/network module. + // which is not available to the chromeos/ash/components/network module. void AppendThirdPartyProviderName(base::Value* dictionary); content::BrowserContext* browser_context_;
diff --git a/extensions/browser/api/socket/BUILD.gn b/extensions/browser/api/socket/BUILD.gn index a93ec9f..86fb82e 100644 --- a/extensions/browser/api/socket/BUILD.gn +++ b/extensions/browser/api/socket/BUILD.gn
@@ -40,7 +40,7 @@ ] deps += [ - "//chromeos/network", + "//chromeos/ash/components/network", "//components/keyed_service/content", ] }
diff --git a/extensions/renderer/bindings/listener_tracker_unittest.cc b/extensions/renderer/bindings/listener_tracker_unittest.cc index fc424887..85443f20 100644 --- a/extensions/renderer/bindings/listener_tracker_unittest.cc +++ b/extensions/renderer/bindings/listener_tracker_unittest.cc
@@ -52,20 +52,29 @@ ListenerTracker tracker; auto [was_first_of_kind, filter_id1] = tracker.AddFilteredListener( - kOwner1, kEvent1, filter1->CreateDeepCopy(), kRoutingId); + kOwner1, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter1->Clone())), + kRoutingId); EXPECT_TRUE(was_first_of_kind); EXPECT_NE(-1, filter_id1); int filter_id2 = -1; std::tie(was_first_of_kind, filter_id2) = tracker.AddFilteredListener( - kOwner1, kEvent1, filter1->CreateDeepCopy(), kRoutingId); + kOwner1, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter1->Clone())), + kRoutingId); EXPECT_FALSE(was_first_of_kind); EXPECT_NE(-1, filter_id2); EXPECT_NE(filter_id1, filter_id2); int filter_id3 = -1; std::tie(was_first_of_kind, filter_id3) = tracker.AddFilteredListener( - kOwner1, kEvent1, filter2->CreateDeepCopy(), kRoutingId); + kOwner1, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter2->Clone())), + kRoutingId); EXPECT_TRUE(was_first_of_kind); EXPECT_NE(-1, filter_id3); @@ -95,13 +104,19 @@ ListenerTracker tracker; auto [was_first_of_kind, filter_id1] = tracker.AddFilteredListener( - kOwner1, kEvent1, filter->CreateDeepCopy(), kRoutingId); + kOwner1, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter->Clone())), + kRoutingId); EXPECT_TRUE(was_first_of_kind); EXPECT_NE(-1, filter_id1); int filter_id2 = -1; std::tie(was_first_of_kind, filter_id2) = tracker.AddFilteredListener( - kOwner2, kEvent1, filter->CreateDeepCopy(), kRoutingId); + kOwner2, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter->Clone())), + kRoutingId); EXPECT_TRUE(was_first_of_kind); EXPECT_NE(-1, filter_id2); EXPECT_NE(filter_id1, filter_id2); @@ -126,13 +141,19 @@ ListenerTracker tracker; auto [was_first_of_kind, filter_id1] = tracker.AddFilteredListener( - kOwner1, kEvent1, filter->CreateDeepCopy(), kRoutingId); + kOwner1, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter->Clone())), + kRoutingId); EXPECT_TRUE(was_first_of_kind); EXPECT_NE(-1, filter_id1); int filter_id2 = -1; std::tie(was_first_of_kind, filter_id2) = tracker.AddFilteredListener( - kOwner1, kEvent2, filter->CreateDeepCopy(), kRoutingId); + kOwner1, kEvent2, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter->Clone())), + kRoutingId); EXPECT_TRUE(was_first_of_kind); EXPECT_NE(-1, filter_id2); EXPECT_NE(filter_id1, filter_id2); @@ -174,17 +195,26 @@ ListenerTracker tracker; auto [was_first_of_kind, filter_id1] = tracker.AddFilteredListener( - kOwner1, kEvent1, filter1->CreateDeepCopy(), kRoutingId); + kOwner1, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter1->Clone())), + kRoutingId); EXPECT_NE(-1, filter_id1); int filter_id2 = -1; std::tie(was_first_of_kind, filter_id2) = tracker.AddFilteredListener( - kOwner1, kEvent1, filter2->CreateDeepCopy(), kRoutingId); + kOwner1, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter2->Clone())), + kRoutingId); EXPECT_NE(-1, filter_id2); int filter_id3 = -1; std::tie(was_first_of_kind, filter_id3) = tracker.AddFilteredListener( - kOwner2, kEvent1, filter3->CreateDeepCopy(), kRoutingId); + kOwner2, kEvent1, + base::DictionaryValue::From( + base::Value::ToUniquePtrValue(filter3->Clone())), + kRoutingId); EXPECT_NE(-1, filter_id3); mojom::EventFilteringInfoPtr filtering_info =
diff --git a/extensions/shell/BUILD.gn b/extensions/shell/BUILD.gn index 5dfb9e97..54e265c 100644 --- a/extensions/shell/BUILD.gn +++ b/extensions/shell/BUILD.gn
@@ -235,11 +235,11 @@ "//ash/components/disks", "//ash/constants", "//chromeos/ash/components/dbus/audio", + "//chromeos/ash/components/dbus/cros_disks", "//chromeos/ash/components/dbus/hermes", + "//chromeos/ash/components/network", "//chromeos/dbus", - "//chromeos/dbus/cros_disks", "//chromeos/login/login_state", - "//chromeos/network", "//ui/chromeos", "//ui/display/manager", ]
diff --git a/extensions/shell/browser/shell_browser_main_parts.cc b/extensions/shell/browser/shell_browser_main_parts.cc index baa0d28..152df36 100644 --- a/extensions/shell/browser/shell_browser_main_parts.cc +++ b/extensions/shell/browser/shell_browser_main_parts.cc
@@ -64,9 +64,9 @@ #include "ash/components/audio/cras_audio_handler.h" #include "ash/components/disks/disk_mount_manager.h" #include "chromeos/ash/components/dbus/audio/cras_audio_client.h" +#include "chromeos/ash/components/dbus/cros_disks/cros_disks_client.h" #include "chromeos/ash/components/dbus/hermes/hermes_clients.h" #include "chromeos/ash/components/network/network_handler.h" -#include "chromeos/dbus/cros_disks/cros_disks_client.h" #include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/power/power_manager_client.h" #include "extensions/shell/browser/shell_audio_controller_chromeos.h"
diff --git a/ios/chrome/browser/resources/Settings.bundle/Experimental.plist b/ios/chrome/browser/resources/Settings.bundle/Experimental.plist index 1ce0cb1..3654d05 100644 --- a/ios/chrome/browser/resources/Settings.bundle/Experimental.plist +++ b/ios/chrome/browser/resources/Settings.bundle/Experimental.plist
@@ -53,6 +53,36 @@ <false/> </dict> <dict> + <key>Title</key> + <string>Additional Feed Background Refresh Settings</string> + <key>Type</key> + <string>PSGroupSpecifier</string> + <key>FooterText</key> + <string>Background Refresh must be enabled in chrome://flags to use these additional settings</string> + </dict> + <dict> + <key>Type</key> + <string>PSToggleSwitchSpecifier</string> + <key>Title</key> + <string>Force Background Refresh for Following Feed</string> + <key>Key</key> + <string>ForceBackgroundRefreshForFollowingFeedEnabled</string> + <key>DefaultValue</key> + <false/> + </dict> + <dict> + <key>Type</key> + <string>PSTextFieldSpecifier</string> + <key>Title</key> + <string>Feed Max Age In Seconds</string> + <key>Key</key> + <string>BackgroundRefreshMaxAgeInSeconds</string> + <key>DefaultValue</key> + <string></string> + <key>KeyboardType</key> + <string>NumberPad</string> + </dict> + <dict> <key>Type</key> <string>PSGroupSpecifier</string> <key>Title</key>
diff --git a/ios/chrome/browser/system_flags.h b/ios/chrome/browser/system_flags.h index 4e5a0d26..68bc9ad 100644 --- a/ios/chrome/browser/system_flags.h +++ b/ios/chrome/browser/system_flags.h
@@ -59,6 +59,15 @@ // TODO(crbug.com/1312124): Remove after launch. bool ShouldAlwaysShowFirstFollow(); +// Returns true if background refresh should also be used for the Following +// feed. If false, the default value or finch feature flag value should be used. +bool IsForceBackgroundRefreshForFollowingFeedEnabled(); + +// The maximum age a response can be before it is refreshed in the background. +// This check is done when the background task is executed. The default value of +// 0 means the age check is ignored. +double GetBackgroundRefreshMaxAgeInSeconds(); + // Whether memory debugging tools are enabled. bool IsMemoryDebuggingEnabled();
diff --git a/ios/chrome/browser/system_flags.mm b/ios/chrome/browser/system_flags.mm index 67c8a95..2e15d6e 100644 --- a/ios/chrome/browser/system_flags.mm +++ b/ios/chrome/browser/system_flags.mm
@@ -36,6 +36,12 @@ NSString* const kClearApplicationGroup = @"ClearApplicationGroup"; const base::Feature kEnableThirdPartyKeyboardWorkaround{ "EnableThirdPartyKeyboardWorkaround", base::FEATURE_ENABLED_BY_DEFAULT}; + +NSString* const kForceBackgroundRefreshForFollowingFeedEnabled = + @"ForceBackgroundRefreshForFollowingFeedEnabled"; +NSString* const kBackgroundRefreshMaxAgeInSeconds = + @"BackgroundRefreshMaxAgeInSeconds"; + } // namespace namespace experimental_flags { @@ -86,6 +92,16 @@ boolForKey:@"AlwaysShowFirstFollow"]; } +bool IsForceBackgroundRefreshForFollowingFeedEnabled() { + return [[NSUserDefaults standardUserDefaults] + boolForKey:kForceBackgroundRefreshForFollowingFeedEnabled]; +} + +double GetBackgroundRefreshMaxAgeInSeconds() { + return [[NSUserDefaults standardUserDefaults] + doubleForKey:kBackgroundRefreshMaxAgeInSeconds]; +} + bool IsMemoryDebuggingEnabled() { // Always return true for Chromium builds, but check the user default for // official builds because memory debugging should never be enabled on stable.
diff --git a/ios/chrome/browser/ui/autofill/legacy_card_unmask_prompt_view_bridge.h b/ios/chrome/browser/ui/autofill/legacy_card_unmask_prompt_view_bridge.h index 160e964..99eab9f 100644 --- a/ios/chrome/browser/ui/autofill/legacy_card_unmask_prompt_view_bridge.h +++ b/ios/chrome/browser/ui/autofill/legacy_card_unmask_prompt_view_bridge.h
@@ -54,7 +54,11 @@ void DeleteSelf(); protected: - LegacyCardUnmaskPromptViewController* view_controller_; + // The presented UINavigationController. + UINavigationController* view_controller_; + + // The view controller with the unmask prompt UI. + LegacyCardUnmaskPromptViewController* card_view_controller_; private: // The controller `this` queries for logic and state.
diff --git a/ios/chrome/browser/ui/autofill/legacy_card_unmask_prompt_view_bridge.mm b/ios/chrome/browser/ui/autofill/legacy_card_unmask_prompt_view_bridge.mm index d8a3deb..623a8b1 100644 --- a/ios/chrome/browser/ui/autofill/legacy_card_unmask_prompt_view_bridge.mm +++ b/ios/chrome/browser/ui/autofill/legacy_card_unmask_prompt_view_bridge.mm
@@ -65,11 +65,18 @@ } void LegacyCardUnmaskPromptViewBridge::Show() { - view_controller_ = + card_view_controller_ = [[LegacyCardUnmaskPromptViewController alloc] initWithBridge:this]; + + view_controller_ = [[UINavigationController alloc] + initWithRootViewController:card_view_controller_]; [view_controller_ setModalPresentationStyle:UIModalPresentationFormSheet]; [view_controller_ setModalTransitionStyle:UIModalTransitionStyleCoverVertical]; + // If this prompt is swiped away, it cannot be opened again. Work + // around this bug by preventing swipe-to-dismiss. + [view_controller_ setModalInPresentation:YES]; + [base_view_controller_ presentViewController:view_controller_ animated:YES completion:nil]; @@ -81,14 +88,14 @@ } void LegacyCardUnmaskPromptViewBridge::DisableAndWaitForVerification() { - [view_controller_ showSpinner]; + [card_view_controller_ showSpinner]; } void LegacyCardUnmaskPromptViewBridge::GotVerificationResult( const std::u16string& error_message, bool allow_retry) { if (error_message.empty()) { - [view_controller_ showSuccess]; + [card_view_controller_ showSuccess]; base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( FROM_HERE, base::BindOnce(&LegacyCardUnmaskPromptViewBridge::PerformClose, @@ -96,10 +103,10 @@ controller_->GetSuccessMessageDuration()); } else { if (allow_retry) { - [view_controller_ + [card_view_controller_ showCVCInputFormWithError:base::SysUTF16ToNSString(error_message)]; } else { - [view_controller_ showError:base::SysUTF16ToNSString(error_message)]; + [card_view_controller_ showError:base::SysUTF16ToNSString(error_message)]; } } } @@ -144,7 +151,7 @@ UICollectionViewLayout* layout = [[MDCCollectionViewFlowLayout alloc] init]; DCHECK(bridge); self = [super initWithLayout:layout - style:CollectionViewControllerStyleAppBar]; + style:CollectionViewControllerStyleDefault]; if (self) { _bridge = bridge; self.title =
diff --git a/ios/chrome/browser/ui/autofill/manual_fill/full_card_requester_unittest.mm b/ios/chrome/browser/ui/autofill/manual_fill/full_card_requester_unittest.mm index 6176b61..1b9aea6 100644 --- a/ios/chrome/browser/ui/autofill/manual_fill/full_card_requester_unittest.mm +++ b/ios/chrome/browser/ui/autofill/manual_fill/full_card_requester_unittest.mm
@@ -6,6 +6,7 @@ #import <string> +#import "base/mac/foundation_util.h" #import "base/test/ios/wait_util.h" #import "base/time/time.h" #import "components/autofill/core/browser/autofill_test_utils.h" @@ -162,6 +163,11 @@ // Spin the run loop to trigger the animation. base::test::ios::SpinRunLoopWithMaxDelay(base::Seconds(1.0)); EXPECT_TRUE([base_view_controller.presentedViewController + isMemberOfClass:[UINavigationController class]]); + UINavigationController* navigation_controller = + base::mac::ObjCCast<UINavigationController>( + base_view_controller.presentedViewController); + EXPECT_TRUE([navigation_controller.topViewController isMemberOfClass:[LegacyCardUnmaskPromptViewController class]]); full_card_requester.OnUnmaskVerificationResult(
diff --git a/ios/chrome/common/ui/util/text_view_util.mm b/ios/chrome/common/ui/util/text_view_util.mm index 3c19bc7..35109fe 100644 --- a/ios/chrome/common/ui/util/text_view_util.mm +++ b/ios/chrome/common/ui/util/text_view_util.mm
@@ -8,13 +8,20 @@ #error "This file requires ARC support." #endif -UITextView* CreateUITextViewWithTextKit1() { +#if !defined(__IPHONE_16_0) || __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_16_0 +@interface UITextView (TextKit) +// Forward declare iOS 16 `+textViewUsingTextLayoutManager` on iOS 15 SDK +// builds. ++ (instancetype)textViewUsingTextLayoutManager:(BOOL)usingTextLayoutManager; +@end +#endif + // TODO(crbug.com/1335912): On iOS 16, EG is unable to tap links in // TextKit2-based UITextViews. Fall back to TextKit1 until this issue // is resolved. -#if defined(__IPHONE_16_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_16_0 +// Creates a UITextView with TextKit1 by disabling TextKit2. +UITextView* CreateUITextViewWithTextKit1() { if (@available(iOS 16, *)) return [UITextView textViewUsingTextLayoutManager:NO]; -#endif return [[UITextView alloc] init]; }
diff --git a/media/audio/cras/cras_input.cc b/media/audio/cras/cras_input.cc index 7ffca72..df5667d 100644 --- a/media/audio/cras/cras_input.cc +++ b/media/audio/cras/cras_input.cc
@@ -441,9 +441,7 @@ } bool CrasInputStream::IsMuted() { - int muted = 0; - libcras_client_get_system_capture_muted(client_, &muted); - return static_cast<bool>(muted); + return false; } void CrasInputStream::SetOutputDeviceForAec(
diff --git a/media/base/android/BUILD.gn b/media/base/android/BUILD.gn index 997884d..2a4f4fdb 100644 --- a/media/base/android/BUILD.gn +++ b/media/base/android/BUILD.gn
@@ -140,6 +140,7 @@ "java/src/org/chromium/media/MediaPlayerBridge.java", "java/src/org/chromium/media/MediaPlayerListener.java", "java/src/org/chromium/media/MediaServerCrashListener.java", + "java/src/org/chromium/media/VideoEncodeAcceleratorUtil.java", ] } @@ -194,6 +195,7 @@ "java/src/org/chromium/media/MediaPlayerListener.java", "java/src/org/chromium/media/MediaServerCrashListener.java", "java/src/org/chromium/media/ScreenResolutionUtil.java", + "java/src/org/chromium/media/VideoEncodeAcceleratorUtil.java", ] }
diff --git a/media/base/android/java/src/org/chromium/media/CodecProfileLevelList.java b/media/base/android/java/src/org/chromium/media/CodecProfileLevelList.java index b88c644b..513a18f 100644 --- a/media/base/android/java/src/org/chromium/media/CodecProfileLevelList.java +++ b/media/base/android/java/src/org/chromium/media/CodecProfileLevelList.java
@@ -74,16 +74,17 @@ private static class UnsupportedCodecProfileException extends RuntimeException {} - private static int getCodecFromMime(String mime) { + public static int getCodecFromMime(String mime) { if (mime.endsWith("vp9")) return VideoCodec.VP9; if (mime.endsWith("vp8")) return VideoCodec.VP8; + if (mime.endsWith("av01")) return VideoCodec.AV1; if (mime.endsWith("avc")) return VideoCodec.H264; if (mime.endsWith("hevc")) return VideoCodec.HEVC; if (mime.endsWith("dolby-vision")) return VideoCodec.DOLBY_VISION; throw new UnsupportedCodecProfileException(); } - private static int mediaCodecProfileToChromiumMediaProfile(int codec, int profile) { + public static int mediaCodecProfileToChromiumMediaProfile(int codec, int profile) { switch (codec) { case VideoCodec.H264: switch (profile) { @@ -126,6 +127,16 @@ default: throw new UnsupportedCodecProfileException(); } + case VideoCodec.AV1: + switch (profile) { + case CodecProfileLevel.AV1ProfileMain8: + case CodecProfileLevel.AV1ProfileMain10: + case CodecProfileLevel.AV1ProfileMain10HDR10: + case CodecProfileLevel.AV1ProfileMain10HDR10Plus: + return VideoCodecProfile.AV1PROFILE_PROFILE_MAIN; + default: + throw new UnsupportedCodecProfileException(); + } case VideoCodec.HEVC: switch (profile) { case CodecProfileLevel.HEVCProfileMain:
diff --git a/media/base/android/java/src/org/chromium/media/VideoEncodeAcceleratorUtil.java b/media/base/android/java/src/org/chromium/media/VideoEncodeAcceleratorUtil.java new file mode 100644 index 0000000..3c2d6d7 --- /dev/null +++ b/media/base/android/java/src/org/chromium/media/VideoEncodeAcceleratorUtil.java
@@ -0,0 +1,231 @@ +// Copyright 2022 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.media; + +import android.media.MediaCodecInfo; +import android.media.MediaCodecInfo.CodecProfileLevel; +import android.media.MediaCodecList; +import android.os.Build; +import android.util.Range; + +import androidx.annotation.RequiresApi; + +import org.chromium.base.annotations.CalledByNative; +import org.chromium.base.annotations.JNINamespace; + +import java.util.ArrayList; +import java.util.HashSet; + +/** + * A collection of SDK based helper functions for the NDK VideoEncoder that + * unfortunately don't have NDK equivalents. Only called from the GPU process, + * so doesn't need to be tagged with MainDex. + */ +@JNINamespace("media") +class VideoEncodeAcceleratorUtil { + private static final String TAG = "VideoEncodeAcceleratorUtil"; + + private static final String[] SUPPORTED_TYPES = { + MediaCodecUtil.MimeTypes.VIDEO_VP8, + MediaCodecUtil.MimeTypes.VIDEO_VP9, + MediaCodecUtil.MimeTypes.VIDEO_AV1, + MediaCodecUtil.MimeTypes.VIDEO_H264, + }; + + private static class SupportedProfileAdapter { + public int profile; + public int maxWidth; + public int maxHeight; + public int minWidth; + public int minHeight; + public int maxFramerateNumerator; + public int maxFramerateDenominator; + public boolean supportsCbr; + public boolean supportsVbr; + + @CalledByNative("SupportedProfileAdapter") + public int getProfile() { + return this.profile; + } + + @CalledByNative("SupportedProfileAdapter") + public int getMaxWidth() { + return this.maxWidth; + } + + @CalledByNative("SupportedProfileAdapter") + public int getMaxHeight() { + return this.maxHeight; + } + + @CalledByNative("SupportedProfileAdapter") + public int getMinWidth() { + return this.minWidth; + } + + @CalledByNative("SupportedProfileAdapter") + public int getMinHeight() { + return this.minHeight; + } + + @CalledByNative("SupportedProfileAdapter") + public int getMaxFramerateNumerator() { + return this.maxFramerateNumerator; + } + + @CalledByNative("SupportedProfileAdapter") + public int getMaxFramerateDenominator() { + return this.maxFramerateDenominator; + } + + @CalledByNative("SupportedProfileAdapter") + public boolean supportsCbr() { + return this.supportsCbr; + } + + @CalledByNative("SupportedProfileAdapter") + public boolean supportsVbr() { + return this.supportsVbr; + } + } + + // Currently our encoder only supports NV12. + private static boolean hasSupportedColorFormat(int[] colorFormats) { + for (int format : colorFormats) { + if (format == MediaCodecInfo.CodecCapabilities.COLOR_FormatYUV420SemiPlanar) { + return true; + } + } + return false; + } + + // Chromium doesn't bundle a software encoder for H.264 so allow it. + private static boolean requiresHardware(String type) { + return !type.equalsIgnoreCase(MediaCodecUtil.MimeTypes.VIDEO_H264); + } + + /** + * Returns an array of SupportedProfileAdapter entries since the NDK + * doesn't provide this functionality :/ + */ + @CalledByNative + @RequiresApi(Build.VERSION_CODES.Q) + private static SupportedProfileAdapter[] getSupportedProfiles() { + MediaCodecInfo[] codecList; + try { + codecList = new MediaCodecList(MediaCodecList.REGULAR_CODECS).getCodecInfos(); + } catch (Throwable e) { + // Swallow the exception due to bad Android implementation and pretend + // MediaCodecList is not supported. + return null; + } + + ArrayList<SupportedProfileAdapter> hardwareProfiles = + new ArrayList<SupportedProfileAdapter>(); + ArrayList<SupportedProfileAdapter> softwareProfiles = + new ArrayList<SupportedProfileAdapter>(); + HashSet<Integer> hardwareProfileSet = new HashSet<Integer>(); + + for (String type : SUPPORTED_TYPES) { + for (MediaCodecInfo info : codecList) { + if (!info.isEncoder()) continue; + if (!info.isHardwareAccelerated() && requiresHardware(type)) continue; + + MediaCodecInfo.CodecCapabilities capabilities = null; + try { + capabilities = info.getCapabilitiesForType(type); + } catch (IllegalArgumentException e) { + // Type is not supported. + continue; + } + + if (!hasSupportedColorFormat(capabilities.colorFormats)) continue; + + MediaCodecInfo.EncoderCapabilities encoderCapabilities = + capabilities.getEncoderCapabilities(); + boolean supportsCbr = encoderCapabilities.isBitrateModeSupported( + MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_CBR); + boolean supportsVbr = encoderCapabilities.isBitrateModeSupported( + MediaCodecInfo.EncoderCapabilities.BITRATE_MODE_VBR); + + MediaCodecInfo.VideoCapabilities videoCapabilities = + capabilities.getVideoCapabilities(); + + // In landscape mode, width is always larger than height, so first get the + // maximum width and then the height range supported for that width. + Range<Integer> supportedWidths = videoCapabilities.getSupportedWidths(); + Range<Integer> supportedHeights = + videoCapabilities.getSupportedHeightsFor(supportedWidths.getUpper()); + boolean needsPortraitEntry = + !supportedHeights.getUpper().equals(supportedWidths.getUpper()) + && videoCapabilities.isSizeSupported( + supportedHeights.getUpper(), supportedWidths.getUpper()); + + // The frame rate entry in the supported profile is independent of the resolution + // range, so we don't query based on the maximum resolution. + Range<Integer> supportedFrameRates = videoCapabilities.getSupportedFrameRates(); + + // Since the supported profiles interface doesn't support levels, we just attach + // the same min/max to every profile. + HashSet<Integer> supportedProfiles = new HashSet<Integer>(); + int codec = CodecProfileLevelList.getCodecFromMime(type); + for (CodecProfileLevel cpl : capabilities.profileLevels) { + try { + supportedProfiles.add( + CodecProfileLevelList.mediaCodecProfileToChromiumMediaProfile( + codec, cpl.profile)); + } catch (RuntimeException e) { + continue; + } + } + + if (info.isHardwareAccelerated()) hardwareProfileSet.addAll(supportedProfiles); + ArrayList<SupportedProfileAdapter> profiles = + info.isHardwareAccelerated() ? hardwareProfiles : softwareProfiles; + for (int mediaProfile : supportedProfiles) { + SupportedProfileAdapter profile = new SupportedProfileAdapter(); + + profile.profile = mediaProfile; + profile.minWidth = supportedWidths.getLower(); + profile.minHeight = supportedHeights.getLower(); + profile.maxWidth = supportedWidths.getUpper(); + profile.maxHeight = supportedHeights.getUpper(); + profile.maxFramerateNumerator = supportedFrameRates.getUpper(); + profile.maxFramerateDenominator = 1; + profile.supportsCbr = supportsCbr; + profile.supportsVbr = supportsVbr; + profiles.add(profile); + + // Invert min/max height/width for a portrait mode entry if needed. + if (needsPortraitEntry) { + profile = new SupportedProfileAdapter(); + + profile.profile = mediaProfile; + profile.minWidth = supportedHeights.getLower(); + profile.minHeight = supportedWidths.getLower(); + profile.maxWidth = supportedHeights.getUpper(); + profile.maxHeight = supportedWidths.getUpper(); + profile.maxFramerateNumerator = supportedFrameRates.getUpper(); + profile.maxFramerateDenominator = 1; + profile.supportsCbr = supportsCbr; + profile.supportsVbr = supportsVbr; + profiles.add(profile); + } + } + } + } + + // For allowed software codecs, if we don't also have hardware support, add the software + // capabilities. + ArrayList<SupportedProfileAdapter> profiles = hardwareProfiles; + for (SupportedProfileAdapter profile : softwareProfiles) { + if (!hardwareProfileSet.contains(profile.profile)) profiles.add(profile); + } + + SupportedProfileAdapter[] profileArray = new SupportedProfileAdapter[profiles.size()]; + profiles.toArray(profileArray); + return profileArray; + } +}
diff --git a/media/capture/video/chromeos/video_capture_device_chromeos_delegate.cc b/media/capture/video/chromeos/video_capture_device_chromeos_delegate.cc index c3ca248..387f0bc 100644 --- a/media/capture/video/chromeos/video_capture_device_chromeos_delegate.cc +++ b/media/capture/video/chromeos/video_capture_device_chromeos_delegate.cc
@@ -9,19 +9,13 @@ #include <utility> #include "base/bind.h" -#include "base/callback_helpers.h" #include "base/location.h" #include "base/synchronization/waitable_event.h" -#include "base/threading/platform_thread.h" -#include "base/trace_event/typed_macros.h" #include "chromeos/dbus/power/power_manager_client.h" -#include "media/base/bind_to_current_loop.h" #include "media/capture/video/chromeos/camera_app_device_bridge_impl.h" #include "media/capture/video/chromeos/camera_device_delegate.h" #include "media/capture/video/chromeos/camera_hal_delegate.h" #include "ui/display/display.h" -#include "ui/display/display_observer.h" -#include "ui/display/screen.h" namespace media { @@ -131,7 +125,8 @@ std::move(ui_task_runner)); } -VideoCaptureDeviceChromeOSDelegate::~VideoCaptureDeviceChromeOSDelegate() {} +VideoCaptureDeviceChromeOSDelegate::~VideoCaptureDeviceChromeOSDelegate() = + default; void VideoCaptureDeviceChromeOSDelegate::Shutdown() { DCHECK(capture_task_runner_->BelongsToCurrentThread()); @@ -288,8 +283,9 @@ device_closed->Signal(); }, base::Unretained(&device_closed_)))); - base::TimeDelta kWaitTimeoutSecs = base::Seconds(3); + const base::TimeDelta kWaitTimeoutSecs = base::Seconds(1); device_closed_.TimedWait(kWaitTimeoutSecs); + if (!unblock_suspend_token.is_empty()) power_manager_client_proxy_->UnblockSuspend(unblock_suspend_token); }
diff --git a/media/capture/video/chromeos/video_capture_device_chromeos_delegate.h b/media/capture/video/chromeos/video_capture_device_chromeos_delegate.h index a0225c0..302f12c 100644 --- a/media/capture/video/chromeos/video_capture_device_chromeos_delegate.h +++ b/media/capture/video/chromeos/video_capture_device_chromeos_delegate.h
@@ -9,7 +9,6 @@ #include "base/containers/flat_map.h" #include "base/memory/weak_ptr.h" -#include "base/synchronization/lock.h" #include "base/task/single_thread_task_runner.h" #include "base/threading/thread.h" #include "media/capture/video/chromeos/camera_device_context.h"
diff --git a/media/formats/hls/media_playlist.cc b/media/formats/hls/media_playlist.cc index 2f71c57..28eee298 100644 --- a/media/formats/hls/media_playlist.cc +++ b/media/formats/hls/media_playlist.cc
@@ -52,6 +52,7 @@ MediaPlaylist::~MediaPlaylist() = default; +// static ParseStatus::Or<MediaPlaylist> MediaPlaylist::Parse( base::StringPiece source, GURL uri,
diff --git a/media/formats/hls/multivariant_playlist.cc b/media/formats/hls/multivariant_playlist.cc index c3269934..678b6983 100644 --- a/media/formats/hls/multivariant_playlist.cc +++ b/media/formats/hls/multivariant_playlist.cc
@@ -31,6 +31,7 @@ MultivariantPlaylist::~MultivariantPlaylist() = default; +// static ParseStatus::Or<MultivariantPlaylist> MultivariantPlaylist::Parse( base::StringPiece source, GURL uri) {
diff --git a/media/formats/hls/source_string.cc b/media/formats/hls/source_string.cc index d5ff280..a1ba778 100644 --- a/media/formats/hls/source_string.cc +++ b/media/formats/hls/source_string.cc
@@ -11,6 +11,7 @@ namespace media::hls { +// static template <> SourceString SourceString::Create(base::PassKey<SourceLineIterator>, size_t line, @@ -18,6 +19,7 @@ return SourceString(line, 1, str, {}); } +// static template <> ResolvedSourceString ResolvedSourceString::Create( base::PassKey<VariableDictionary>, @@ -28,12 +30,14 @@ return ResolvedSourceString(line, column, str, resolution_state); } +// static template <typename ResolutionState> GenericSourceString<ResolutionState> GenericSourceString<ResolutionState>::CreateForTesting(base::StringPiece str) { return GenericSourceString::CreateForTesting(1, 1, str); } +// static template <> SourceString SourceString::CreateForTesting(size_t line, size_t column, @@ -41,6 +45,7 @@ return SourceString::CreateForTesting(line, column, str, {}); } +// static template <> ResolvedSourceString ResolvedSourceString::CreateForTesting( size_t line, @@ -51,6 +56,7 @@ ResolvedSourceStringState{.contains_substitutions = false}); } +// static template <typename ResolutionState> GenericSourceString<ResolutionState> GenericSourceString<ResolutionState>::CreateForTesting(
diff --git a/media/formats/hls/tags.cc b/media/formats/hls/tags.cc index 1cc7a0d..0f2bce69 100644 --- a/media/formats/hls/tags.cc +++ b/media/formats/hls/tags.cc
@@ -241,10 +241,12 @@ } // namespace +// static ParseStatus::Or<M3uTag> M3uTag::Parse(TagItem tag) { return ParseEmptyTag<M3uTag>(tag); } +// static ParseStatus::Or<XVersionTag> XVersionTag::Parse(TagItem tag) { auto result = ParseDecimalIntegerTag(tag, &XVersionTag::version); if (result.has_error()) { @@ -261,6 +263,7 @@ return out; } +// static ParseStatus::Or<InfTag> InfTag::Parse(TagItem tag) { DCHECK(tag.GetName() == ToTagName(InfTag::kName)); @@ -297,36 +300,44 @@ return InfTag{.duration = duration, .title = title_str}; } +// static ParseStatus::Or<XIndependentSegmentsTag> XIndependentSegmentsTag::Parse( TagItem tag) { return ParseEmptyTag<XIndependentSegmentsTag>(tag); } +// static ParseStatus::Or<XEndListTag> XEndListTag::Parse(TagItem tag) { return ParseEmptyTag<XEndListTag>(tag); } +// static ParseStatus::Or<XIFramesOnlyTag> XIFramesOnlyTag::Parse(TagItem tag) { return ParseEmptyTag<XIFramesOnlyTag>(tag); } +// static ParseStatus::Or<XDiscontinuityTag> XDiscontinuityTag::Parse(TagItem tag) { return ParseEmptyTag<XDiscontinuityTag>(tag); } +// static ParseStatus::Or<XGapTag> XGapTag::Parse(TagItem tag) { return ParseEmptyTag<XGapTag>(tag); } +// static XDefineTag XDefineTag::CreateDefinition(types::VariableName name, base::StringPiece value) { return XDefineTag{.name = name, .value = value}; } +// static XDefineTag XDefineTag::CreateImport(types::VariableName name) { return XDefineTag{.name = name, .value = absl::nullopt}; } +// static ParseStatus::Or<XDefineTag> XDefineTag::Parse(TagItem tag) { DCHECK(tag.GetName() == ToTagName(XDefineTag::kName)); @@ -396,6 +407,7 @@ return ParseStatusCode::kMalformedTag; } +// static ParseStatus::Or<XPlaylistTypeTag> XPlaylistTypeTag::Parse(TagItem tag) { DCHECK(tag.GetName() == ToTagName(XPlaylistTypeTag::kName)); @@ -426,6 +438,7 @@ XStreamInfTag& XStreamInfTag::operator=(XStreamInfTag&&) = default; +// static ParseStatus::Or<XStreamInfTag> XStreamInfTag::Parse( TagItem tag, const VariableDictionary& variable_dict, @@ -527,6 +540,7 @@ return out; } +// static ParseStatus::Or<XTargetDurationTag> XTargetDurationTag::Parse(TagItem tag) { DCHECK(tag.GetName() == ToTagName(XTargetDurationTag::kName)); if (!tag.GetContent().has_value()) { @@ -548,6 +562,7 @@ return XTargetDurationTag{.duration = duration}; } +// static ParseStatus::Or<XPartInfTag> XPartInfTag::Parse(TagItem tag) { DCHECK(tag.GetName() == ToTagName(XPartInfTag::kName)); if (!tag.GetContent().has_value()) { @@ -588,6 +603,7 @@ return XPartInfTag{.target_duration = part_target}; } +// static ParseStatus::Or<XPartTag> XPartTag::Parse( TagItem tag, const VariableDictionary& variable_dict, @@ -677,6 +693,7 @@ .gap = gap}; } +// static ParseStatus::Or<XServerControlTag> XServerControlTag::Parse(TagItem tag) { DCHECK(tag.GetName() == ToTagName(XServerControlTag::kName)); if (!tag.GetContent().has_value()) { @@ -783,15 +800,18 @@ }; } +// static ParseStatus::Or<XMediaSequenceTag> XMediaSequenceTag::Parse(TagItem tag) { return ParseDecimalIntegerTag(tag, &XMediaSequenceTag::number); } +// static ParseStatus::Or<XDiscontinuitySequenceTag> XDiscontinuitySequenceTag::Parse( TagItem tag) { return ParseDecimalIntegerTag(tag, &XDiscontinuitySequenceTag::number); } +// static ParseStatus::Or<XByteRangeTag> XByteRangeTag::Parse(TagItem tag) { DCHECK(tag.GetName() == ToTagName(XByteRangeTag::kName)); if (!tag.GetContent().has_value()) { @@ -808,6 +828,7 @@ return XByteRangeTag{.range = std::move(range).value()}; } +// static ParseStatus::Or<XBitrateTag> XBitrateTag::Parse(TagItem tag) { return ParseDecimalIntegerTag(tag, &XBitrateTag::bitrate); }
diff --git a/media/formats/hls/types.cc b/media/formats/hls/types.cc index 08de04e..fe9e2e54 100644 --- a/media/formats/hls/types.cc +++ b/media/formats/hls/types.cc
@@ -175,6 +175,7 @@ return result; } +// static ParseStatus::Or<DecimalResolution> DecimalResolution::Parse( ResolvedSourceString source_str) { // decimal-resolution values are in the format: DecimalInteger 'x' @@ -202,6 +203,7 @@ .height = std::move(height).value()}; } +// static ParseStatus::Or<ByteRangeExpression> ByteRangeExpression::Parse( ResolvedSourceString source_str) { // If this ByteRange has an offset, it will be separated from the length by @@ -231,6 +233,7 @@ .offset = offset}; } +// static absl::optional<ByteRange> ByteRange::Validate(DecimalInteger length, DecimalInteger offset) { if (length == 0) { @@ -390,6 +393,7 @@ } } +// static ParseStatus::Or<VariableName> VariableName::Parse(SourceString source_str) { static const base::NoDestructor<re2::RE2> variable_name_regex( "[a-zA-Z0-9_-]+"); @@ -402,6 +406,7 @@ return VariableName(source_str.Str()); } +// static ParseStatus::Or<StableId> StableId::Parse(ResolvedSourceString str) { const auto is_char_valid = [](char c) -> bool { return base::IsAsciiAlphaNumeric(c) || IsOneOf(c, "+/=.-_"); @@ -414,6 +419,7 @@ return StableId(std::string{str.Str()}); } +// static ParseStatus::Or<InstreamId> InstreamId::Parse(ResolvedSourceString str) { constexpr base::StringPiece kCcStr = "CC"; constexpr base::StringPiece kServiceStr = "SERVICE"; @@ -461,6 +467,7 @@ AudioChannels::~AudioChannels() = default; +// static ParseStatus::Or<AudioChannels> AudioChannels::Parse(ResolvedSourceString str) { // First parameter is a decimal-integer indicating the number of channels const auto max_channels_str = str.ConsumeDelimiter('/');
diff --git a/media/gpu/android/ndk_video_encode_accelerator.cc b/media/gpu/android/ndk_video_encode_accelerator.cc index b945f45..e8f1922 100644 --- a/media/gpu/android/ndk_video_encode_accelerator.cc +++ b/media/gpu/android/ndk_video_encode_accelerator.cc
@@ -13,6 +13,7 @@ #include "base/strings/stringprintf.h" #include "build/build_config.h" #include "media/base/android/media_codec_util.h" +#include "media/base/android/media_jni_headers/VideoEncodeAcceleratorUtil_jni.h" #include "media/base/bitstream_buffer.h" #include "media/base/video_frame.h" #include "media/gpu/android/mediacodec_stubs.h" @@ -45,18 +46,6 @@ using MediaFormatPtr = std::unique_ptr<AMediaFormat, AMediaFormatDeleter>; -absl::optional<PixelFormat> GetSupportedColorFormatForMime( - const std::string& mime) { - if (mime.empty()) - return {}; - - auto formats = MediaCodecUtil::GetEncoderColorFormats(mime); - if (formats.count(COLOR_FORMAT_YUV420_SEMIPLANAR) > 0) - return COLOR_FORMAT_YUV420_SEMIPLANAR; - - return {}; -} - MediaFormatPtr CreateVideoFormat(const std::string& mime, const VideoEncodeAccelerator::Config& config, int framerate, @@ -106,16 +95,10 @@ static bool InitMediaCodec() { // We need at least Android P for AMediaCodec_getInputFormat(), but in - // Android P we have issues with CFI and dynamic linker on arm64. - const base::android::SdkVersion min_supported_version = -#if defined(ARCH_CPU_ARMEL) - base::android::SDK_VERSION_P; -#else - base::android::SDK_VERSION_Q; -#endif - + // Android P we have issues with CFI and dynamic linker on arm64. However + // GetSupportedProfiles() needs Q+, so just limit to Q. if (base::android::BuildInfo::GetInstance()->sdk_int() < - min_supported_version) { + base::android::SDK_VERSION_Q) { return false; } @@ -134,29 +117,6 @@ return true; } -bool IsThereGoodMediaCodecFor(VideoCodec codec) { - switch (codec) { - case VideoCodec::kH264: - if (!MediaCodecUtil::IsH264EncoderAvailable()) - return false; - break; - case VideoCodec::kVP8: - if (!MediaCodecUtil::IsVp8EncoderAvailable()) - return false; - break; - default: - return false; - } - - // TODO(eugene): We should allow unaccelerated MediaCodecs for H.264 - // because on Android we don't ship a software codec of our own. - // It's not enough to remove a call to IsKnownUnaccelerated(), we'll also need - // to change MediaCodecUtil::IsH264EncoderAvailable() to allow software - // encoders. - return !MediaCodecUtil::IsKnownUnaccelerated(codec, - MediaCodecDirection::ENCODER); -} - } // namespace NdkVideoEncodeAccelerator::NdkVideoEncodeAccelerator( @@ -176,25 +136,39 @@ VideoEncodeAccelerator::SupportedProfiles NdkVideoEncodeAccelerator::GetSupportedProfiles() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - SupportedProfiles profiles; + SupportedProfiles profiles; if (!IsSupported()) return profiles; - // That's what Android CTS uses, so all compliant devices should support it. - SupportedProfile supported_profile; - supported_profile.max_resolution.SetSize(1920, 1080); - supported_profile.max_framerate_numerator = 30; - supported_profile.max_framerate_denominator = 1; - supported_profile.rate_control_modes = - media::VideoEncodeAccelerator::kConstantMode | - media::VideoEncodeAccelerator::kVariableMode; - - for (auto profile : {H264PROFILE_BASELINE, VP8PROFILE_ANY}) { - if (!IsThereGoodMediaCodecFor(VideoCodecProfileToVideoCodec(profile))) - continue; - supported_profile.profile = profile; - profiles.push_back(supported_profile); + // Sadly the NDK doesn't provide a mechanism for accessing the equivalent of + // the SDK's MediaCodecList, so we must call into Java to enumerate support. + JNIEnv* env = base::android::AttachCurrentThread(); + auto java_profiles = + Java_VideoEncodeAcceleratorUtil_getSupportedProfiles(env); + if (java_profiles) { + for (auto java_profile : java_profiles.ReadElements<jobject>()) { + VideoEncodeAccelerator::SupportedProfile result; + result.profile = static_cast<VideoCodecProfile>( + Java_SupportedProfileAdapter_getProfile(env, java_profile)); + result.min_resolution = gfx::Size( + Java_SupportedProfileAdapter_getMinWidth(env, java_profile), + Java_SupportedProfileAdapter_getMinHeight(env, java_profile)); + result.max_resolution = gfx::Size( + Java_SupportedProfileAdapter_getMaxWidth(env, java_profile), + Java_SupportedProfileAdapter_getMaxHeight(env, java_profile)); + result.max_framerate_numerator = + Java_SupportedProfileAdapter_getMaxFramerateNumerator(env, + java_profile); + result.max_framerate_denominator = + Java_SupportedProfileAdapter_getMaxFramerateDenominator(env, + java_profile); + if (Java_SupportedProfileAdapter_supportsCbr(env, java_profile)) + result.rate_control_modes |= kConstantMode; + if (Java_SupportedProfileAdapter_supportsVbr(env, java_profile)) + result.rate_control_modes |= kVariableMode; + profiles.push_back(result); + } } return profiles; } @@ -241,14 +215,9 @@ return false; } - auto format = GetSupportedColorFormatForMime(mime); - if (!format.has_value()) { - MEDIA_LOG(ERROR, log_) << "Unsupported pixel format"; - return false; - } effective_framerate_ = config.initial_framerate.value_or(kDefaultFramerate); - auto media_format = - CreateVideoFormat(mime, config, effective_framerate_, format.value()); + auto media_format = CreateVideoFormat(mime, config, effective_framerate_, + COLOR_FORMAT_YUV420_SEMIPLANAR); media_codec_.reset(AMediaCodec_createEncoderByType(mime.c_str())); if (!media_codec_) { @@ -708,4 +677,15 @@ output_buffer.buffer_index, false); } +bool NdkVideoEncodeAccelerator::IsThereGoodMediaCodecFor(VideoCodec codec) { + // GetSupportedProfiles() already accounts for codec support, so if the codec + // is listed it's supported. + static const SupportedProfiles kSupportedProfiles = GetSupportedProfiles(); + for (const auto& profile : kSupportedProfiles) { + if (codec == VideoCodecProfileToVideoCodec(profile.profile)) + return true; + } + return false; +} + } // namespace media
diff --git a/media/gpu/android/ndk_video_encode_accelerator.h b/media/gpu/android/ndk_video_encode_accelerator.h index 21e6e8b..de5bda1 100644 --- a/media/gpu/android/ndk_video_encode_accelerator.h +++ b/media/gpu/android/ndk_video_encode_accelerator.h
@@ -107,6 +107,8 @@ void NotifyMediaCodecError(std::string message, media_status_t status); void NotifyError(base::StringPiece message, Error code); + bool IsThereGoodMediaCodecFor(VideoCodec codec); + base::TimeDelta AssignMonotonicTimestamp(base::TimeDelta real_timestamp); base::TimeDelta RetrieveRealTimestamp(base::TimeDelta monotonic_timestamp);
diff --git a/media/gpu/gpu_video_accelerator_util.cc b/media/gpu/gpu_video_accelerator_util.cc index eee356b..b6fceed7 100644 --- a/media/gpu/gpu_video_accelerator_util.cc +++ b/media/gpu/gpu_video_accelerator_util.cc
@@ -186,7 +186,7 @@ for (const auto& profile : new_profiles) { bool duplicate = false; for (const auto& media_profile : *media_profiles) { - if (media_profile.profile == profile.profile) { + if (media_profile == profile) { duplicate = true; break; }
diff --git a/media/gpu/v4l2/v4l2_device.cc b/media/gpu/v4l2/v4l2_device.cc index 5ae926d..d205262 100644 --- a/media/gpu/v4l2/v4l2_device.cc +++ b/media/gpu/v4l2/v4l2_device.cc
@@ -20,6 +20,7 @@ #include "base/bind.h" #include "base/logging.h" +#include "base/numerics/checked_math.h" #include "base/numerics/safe_conversions.h" #include "base/posix/eintr_wrapper.h" #include "base/strings/string_number_conversions.h" @@ -27,6 +28,7 @@ #include "build/build_config.h" #include "media/base/bind_to_current_loop.h" #include "media/base/color_plane_layout.h" +#include "media/base/media_switches.h" #include "media/base/video_types.h" #include "media/gpu/chromeos/fourcc.h" #include "media/gpu/chromeos/platform_video_frame_utils.h" @@ -2002,6 +2004,45 @@ } } +VideoEncodeAccelerator::SupportedRateControlMode +V4L2Device::GetSupportedRateControlMode() { + auto rate_control_mode = VideoEncodeAccelerator::kNoMode; + v4l2_queryctrl query_ctrl; + memset(&query_ctrl, 0, sizeof(query_ctrl)); + query_ctrl.id = V4L2_CID_MPEG_VIDEO_BITRATE_MODE; + if (Ioctl(VIDIOC_QUERYCTRL, &query_ctrl)) { + DPLOG(WARNING) << "QUERYCTRL for bitrate mode failed"; + return rate_control_mode; + } + + v4l2_querymenu query_menu; + memset(&query_menu, 0, sizeof(query_menu)); + query_menu.id = query_ctrl.id; + for (query_menu.index = query_ctrl.minimum; + base::checked_cast<int>(query_menu.index) <= query_ctrl.maximum; + query_menu.index++) { + if (Ioctl(VIDIOC_QUERYMENU, &query_menu) == 0) { + switch (query_menu.index) { + case V4L2_MPEG_VIDEO_BITRATE_MODE_CBR: + rate_control_mode |= VideoEncodeAccelerator::kConstantMode; + break; + case V4L2_MPEG_VIDEO_BITRATE_MODE_VBR: + if (!base::FeatureList::IsEnabled(kChromeOSHWVBREncoding)) { + DVLOGF(3) << "Skip VBR capability"; + break; + } + rate_control_mode |= VideoEncodeAccelerator::kVariableMode; + break; + default: + DVLOGF(4) << "Skip bitrate mode: " << query_menu.index; + break; + } + } + } + + return rate_control_mode; +} + std::vector<uint32_t> V4L2Device::EnumerateSupportedPixelformats( v4l2_buf_type buf_type) { std::vector<uint32_t> pixelformats; @@ -2063,12 +2104,16 @@ VideoEncodeAccelerator::SupportedProfile profile; profile.max_framerate_numerator = 30; profile.max_framerate_denominator = 1; - // TODO(b/182240945): remove hard-coding when VBR is supported - profile.rate_control_modes = media::VideoEncodeAccelerator::kConstantMode; + + profile.rate_control_modes = GetSupportedRateControlMode(); + if (profile.rate_control_modes == VideoEncodeAccelerator::kNoMode) { + DLOG(ERROR) << "Skipped because no bitrate mode is supported for " + << FourccToString(pixelformat); + continue; + } gfx::Size min_resolution; GetSupportedResolution(pixelformat, &min_resolution, &profile.max_resolution); - const auto video_codec_profiles = V4L2PixFmtToVideoCodecProfiles(pixelformat);
diff --git a/media/gpu/v4l2/v4l2_device.h b/media/gpu/v4l2/v4l2_device.h index ba0600b5..339c80d 100644 --- a/media/gpu/v4l2/v4l2_device.h +++ b/media/gpu/v4l2/v4l2_device.h
@@ -731,6 +731,11 @@ gfx::Size* min_resolution, gfx::Size* max_resolution); + // Get the supported bitrate control modes. This function should be called + // when V4L2Device opens an encoder driver node. + VideoEncodeAccelerator::SupportedRateControlMode + GetSupportedRateControlMode(); + std::vector<uint32_t> EnumerateSupportedPixelformats(v4l2_buf_type buf_type); // NOTE: The below methods to query capabilities have a side effect of
diff --git a/media/gpu/v4l2/v4l2_video_encode_accelerator.cc b/media/gpu/v4l2/v4l2_video_encode_accelerator.cc index d49e914..3d28ebb 100644 --- a/media/gpu/v4l2/v4l2_video_encode_accelerator.cc +++ b/media/gpu/v4l2/v4l2_video_encode_accelerator.cc
@@ -32,6 +32,7 @@ #include "media/base/bitstream_buffer.h" #include "media/base/color_plane_layout.h" #include "media/base/media_log.h" +#include "media/base/media_switches.h" #include "media/base/scopedfd_helper.h" #include "media/base/video_frame_layout.h" #include "media/base/video_types.h" @@ -173,7 +174,6 @@ native_input_mode_(false), output_buffer_byte_size_(0), output_format_fourcc_(0), - current_bitrate_(0), current_framerate_(0), encoder_state_(kUninitialized), device_(std::move(device)), @@ -350,6 +350,37 @@ } encoder_state_ = kInitialized; + uint32_t bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR; + switch (config.bitrate.mode()) { + case Bitrate::Mode::kConstant: + current_bitrate_ = Bitrate::ConstantBitrate(0u); + bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR; + break; + case Bitrate::Mode::kVariable: + if (!base::FeatureList::IsEnabled(kChromeOSHWVBREncoding)) { + VLOGF(1) << "VBR encoding is disabled"; + NOTIFY_ERROR(kPlatformFailureError); + return; + } + current_bitrate_ = Bitrate::VariableBitrate(0u, 0u); + bitrate_mode = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR; + break; + default: + VLOGF(1) << "Invalid bitrate mode: " + << base::strict_cast<int>(config.bitrate.mode()); + NOTIFY_ERROR(kInvalidArgumentError); + return; + } + + if (!device_->SetExtCtrls( + V4L2_CID_MPEG_CLASS, + {V4L2ExtCtrl(V4L2_CID_MPEG_VIDEO_BITRATE_MODE, bitrate_mode)})) { + VLOGF(1) << "Failed to configure bitrate mode: " + << base::strict_cast<int>(config.bitrate.mode()); + NOTIFY_ERROR(kPlatformFailureError); + return; + } + RequestEncodingParametersChangeTask( config.bitrate, config.initial_framerate.value_or( VideoEncodeAccelerator::kDefaultFramerate)); @@ -1492,37 +1523,42 @@ void V4L2VideoEncodeAccelerator::RequestEncodingParametersChangeTask( const Bitrate& bitrate, uint32_t framerate) { - // If this is changed to use variable bitrate encoding, change this to check - // that the mode matches the current mode. - if (bitrate.mode() != Bitrate::Mode::kConstant) - return; - - // Set bitrate control to CBR - // Not all devices support multiple bitrate control algorithms, - // so this control can't be mandatory and therefore the return - // value is not checked. - device_->SetExtCtrls(V4L2_CID_MPEG_CLASS, - {V4L2ExtCtrl(V4L2_CID_MPEG_VIDEO_BITRATE_MODE, - V4L2_MPEG_VIDEO_BITRATE_MODE_CBR)}); - - if (current_bitrate_ == bitrate.target_bps() && - current_framerate_ == framerate) { - return; - } - if (bitrate.target_bps() == 0 || framerate == 0) + DCHECK_CALLED_ON_VALID_SEQUENCE(encoder_sequence_checker_); + if (current_bitrate_ == bitrate && current_framerate_ == framerate) return; VLOGF(2) << "bitrate=" << bitrate.ToString() << ", framerate=" << framerate; - DCHECK_CALLED_ON_VALID_SEQUENCE(encoder_sequence_checker_); + if (bitrate.mode() != current_bitrate_.mode()) { + VLOGF(1) << "Bitrate mode changed during encoding"; + NOTIFY_ERROR(kInvalidArgumentError); + return; + } + TRACE_EVENT2("media,gpu", "V4L2VEA::RequestEncodingParametersChangeTask", "bitrate", bitrate.ToString(), "framerate", framerate); - if (current_bitrate_ != bitrate.target_bps() && - !device_->SetExtCtrls( - V4L2_CTRL_CLASS_MPEG, - {V4L2ExtCtrl(V4L2_CID_MPEG_VIDEO_BITRATE, bitrate.target_bps())})) { - VLOGF(1) << "Failed changing bitrate"; - NOTIFY_ERROR(kPlatformFailureError); - return; + if (current_bitrate_ != bitrate) { + switch (bitrate.mode()) { + case Bitrate::Mode::kVariable: + if (!device_->SetExtCtrls(V4L2_CTRL_CLASS_MPEG, + {V4L2ExtCtrl(V4L2_CID_MPEG_VIDEO_BITRATE_PEAK, + bitrate.peak_bps())})) { + VLOGF(1) << "Failed to change peak bitrate"; + NOTIFY_ERROR(kPlatformFailureError); + return; + } + + // Both the average and peak bitrate are to be set in VBR. + // Only the average bitrate are to be set in CBR. + [[fallthrough]]; + case Bitrate::Mode::kConstant: + if (!device_->SetExtCtrls(V4L2_CTRL_CLASS_MPEG, + {V4L2ExtCtrl(V4L2_CID_MPEG_VIDEO_BITRATE, + bitrate.target_bps())})) { + VLOGF(1) << "Failed to change average bitrate"; + NOTIFY_ERROR(kPlatformFailureError); + return; + } + } } if (current_framerate_ != framerate) { @@ -1536,7 +1572,7 @@ IOCTL_OR_ERROR_RETURN(VIDIOC_S_PARM, &parms); } - current_bitrate_ = bitrate.target_bps(); + current_bitrate_ = bitrate; current_framerate_ = framerate; }
diff --git a/media/gpu/v4l2/v4l2_video_encode_accelerator.h b/media/gpu/v4l2/v4l2_video_encode_accelerator.h index 793c530..686b3c2 100644 --- a/media/gpu/v4l2/v4l2_video_encode_accelerator.h +++ b/media/gpu/v4l2/v4l2_video_encode_accelerator.h
@@ -294,7 +294,7 @@ size_t output_buffer_byte_size_; uint32_t output_format_fourcc_; - uint32_t current_bitrate_; + Bitrate current_bitrate_; size_t current_framerate_; // Encoder state, owned and operated by |encoder_task_runner_|.
diff --git a/pdf/pdfium/pdfium_font_linux.cc b/pdf/pdfium/pdfium_font_linux.cc index bf69ba23..e3a06c5 100644 --- a/pdf/pdfium/pdfium_font_linux.cc +++ b/pdf/pdfium/pdfium_font_linux.cc
@@ -139,21 +139,19 @@ int pitch_family, const char* face, int* exact) { - if (PDFiumEngine::GetFontMappingMode() == FontMappingMode::kNoMapping) + // The code below is Blink-specific, return early in non-Blink mode to avoid + // crashing. + if (PDFiumEngine::GetFontMappingMode() != FontMappingMode::kBlink) { + DCHECK_EQ(PDFiumEngine::GetFontMappingMode(), FontMappingMode::kNoMapping); return nullptr; + } // Pretend the system does not have the Symbol font to force a fallback to // the built in Symbol font in CFX_FontMapper::FindSubstFont(). if (strcmp(face, "Symbol") == 0) return nullptr; - // TODO(crbug.com/702993): `blink::WebFontDescription::family` is a - // `blink::WebString`, which can only be used if Blink is initialized. Store - // the field in `font_family` for now, but remove the variable when this code - // will only execute in a renderer process. blink::WebFontDescription desc; - std::string font_family; - if (pitch_family & FXFONT_FF_FIXEDPITCH) { desc.generic_family = blink::WebFontDescription::kGenericFamilyMonospace; } else if (pitch_family & FXFONT_FF_ROMAN) { @@ -211,7 +209,7 @@ size_t i; for (i = 0; i < std::size(kPdfFontSubstitutions); ++i) { if (strcmp(face, kPdfFontSubstitutions[i].pdf_name) == 0) { - font_family = kPdfFontSubstitutions[i].face; + desc.family = blink::WebString::FromUTF8(kPdfFontSubstitutions[i].face); if (kPdfFontSubstitutions[i].bold) desc.weight = blink::WebFontDescription::kWeightBold; if (kPdfFontSubstitutions[i].italic) @@ -236,13 +234,11 @@ if (face_utf8.empty()) return nullptr; - font_family = face_utf8; + desc.family = blink::WebString::FromUTF8(face_utf8); desc.weight = WeightToBlinkWeight(weight); desc.italic = italic > 0; } - DCHECK_EQ(PDFiumEngine::GetFontMappingMode(), FontMappingMode::kBlink); - desc.family = blink::WebString::FromUTF8(font_family); return GetBlinkFontMapper().MapFont(desc, charset); }
diff --git a/services/device/BUILD.gn b/services/device/BUILD.gn index 2218ded..b03d612 100644 --- a/services/device/BUILD.gn +++ b/services/device/BUILD.gn
@@ -135,10 +135,10 @@ sources = [ "battery/battery_status_service_unittest.cc", - "compute_pressure/compute_pressure_manager_impl_unittest.cc", - "compute_pressure/compute_pressure_sampler_unittest.cc", - "compute_pressure/compute_pressure_test_support.cc", - "compute_pressure/compute_pressure_test_support.h", + "compute_pressure/pressure_manager_impl_unittest.cc", + "compute_pressure/pressure_sampler_unittest.cc", + "compute_pressure/pressure_test_support.cc", + "compute_pressure/pressure_test_support.h", "generic_sensor/absolute_orientation_euler_angles_fusion_algorithm_using_accelerometer_and_magnetometer_unittest.cc", "generic_sensor/fake_platform_sensor_and_provider.cc", "generic_sensor/fake_platform_sensor_and_provider.h",
diff --git a/services/device/binder_overrides.cc b/services/device/binder_overrides.cc index 2a9ff10..a40865d06 100644 --- a/services/device/binder_overrides.cc +++ b/services/device/binder_overrides.cc
@@ -15,8 +15,8 @@ return *binder; } -ComputePressureManagerBinder& GetComputePressureManagerBinderOverride() { - static base::NoDestructor<ComputePressureManagerBinder> binder; +PressureManagerBinder& GetPressureManagerBinderOverride() { + static base::NoDestructor<PressureManagerBinder> binder; return *binder; }
diff --git a/services/device/binder_overrides.h b/services/device/binder_overrides.h index b0abd95..0cc0a79 100644 --- a/services/device/binder_overrides.h +++ b/services/device/binder_overrides.h
@@ -9,8 +9,8 @@ #include "base/component_export.h" #include "build/build_config.h" #include "mojo/public/cpp/bindings/pending_receiver.h" -#include "services/device/public/mojom/compute_pressure_manager.mojom.h" #include "services/device/public/mojom/geolocation_context.mojom.h" +#include "services/device/public/mojom/pressure_manager.mojom.h" #if BUILDFLAG(IS_ANDROID) #include "services/device/public/mojom/nfc_provider.mojom.h" @@ -24,10 +24,10 @@ COMPONENT_EXPORT(DEVICE_SERVICE_BINDER_OVERRIDES) GeolocationContextBinder& GetGeolocationContextBinderOverride(); -using ComputePressureManagerBinder = base::RepeatingCallback<void( - mojo::PendingReceiver<device::mojom::ComputePressureManager>)>; +using PressureManagerBinder = base::RepeatingCallback<void( + mojo::PendingReceiver<device::mojom::PressureManager>)>; COMPONENT_EXPORT(DEVICE_SERVICE_BINDER_OVERRIDES) -ComputePressureManagerBinder& GetComputePressureManagerBinderOverride(); +PressureManagerBinder& GetPressureManagerBinderOverride(); #if BUILDFLAG(IS_ANDROID) using NFCProviderBinder = base::RepeatingCallback<void(
diff --git a/services/device/compute_pressure/BUILD.gn b/services/device/compute_pressure/BUILD.gn index 31b5551..f0ad9fe 100644 --- a/services/device/compute_pressure/BUILD.gn +++ b/services/device/compute_pressure/BUILD.gn
@@ -8,13 +8,13 @@ visibility = [ "//services/device:*" ] sources = [ - "compute_pressure_manager_impl.cc", - "compute_pressure_manager_impl.h", - "compute_pressure_sample.h", - "compute_pressure_sampler.cc", - "compute_pressure_sampler.h", "cpu_probe.cc", "cpu_probe.h", + "pressure_manager_impl.cc", + "pressure_manager_impl.h", + "pressure_sample.h", + "pressure_sampler.cc", + "pressure_sampler.h", ] public_deps = [ "//services/device/public/mojom" ]
diff --git a/services/device/compute_pressure/compute_pressure_manager_impl.cc b/services/device/compute_pressure/compute_pressure_manager_impl.cc deleted file mode 100644 index 24359a8..0000000 --- a/services/device/compute_pressure/compute_pressure_manager_impl.cc +++ /dev/null
@@ -1,99 +0,0 @@ -// Copyright 2021 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 "services/device/compute_pressure/compute_pressure_manager_impl.h" - -#include <utility> - -#include "base/bind.h" -#include "base/memory/ptr_util.h" -#include "base/time/time.h" -#include "mojo/public/cpp/bindings/message.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" -#include "services/device/compute_pressure/compute_pressure_sampler.h" -#include "services/device/compute_pressure/cpu_probe.h" -#include "services/device/public/mojom/compute_pressure_state.mojom.h" - -namespace device { - -constexpr base::TimeDelta ComputePressureManagerImpl::kDefaultSamplingInterval; - -// static -std::unique_ptr<ComputePressureManagerImpl> -ComputePressureManagerImpl::Create() { - return base::WrapUnique(new ComputePressureManagerImpl( - CpuProbe::Create(), - ComputePressureManagerImpl::kDefaultSamplingInterval)); -} - -// static -std::unique_ptr<ComputePressureManagerImpl> -ComputePressureManagerImpl::CreateForTesting( - std::unique_ptr<CpuProbe> cpu_probe, - base::TimeDelta sampling_interval) { - return base::WrapUnique( - new ComputePressureManagerImpl(std::move(cpu_probe), sampling_interval)); -} - -ComputePressureManagerImpl::ComputePressureManagerImpl( - std::unique_ptr<CpuProbe> cpu_probe, - base::TimeDelta sampling_interval) - // base::Unretained usage is safe here because the callback is only run - // while `sampler_` is alive, and `sampler_` is owned by this instance. - : sampler_(std::move(cpu_probe), - sampling_interval, - base::BindRepeating(&ComputePressureManagerImpl::UpdateClients, - base::Unretained(this))) { - // base::Unretained use is safe because mojo guarantees the callback will not - // be called after `clients_` is deallocated, and `clients_` is owned by - // ComputePressureManagerImpl. - clients_.set_disconnect_handler(base::BindRepeating( - &ComputePressureManagerImpl::OnClientRemoteDisconnected, - base::Unretained(this))); -} - -ComputePressureManagerImpl::~ComputePressureManagerImpl() { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -} - -void ComputePressureManagerImpl::Bind( - mojo::PendingReceiver<mojom::ComputePressureManager> receiver) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - - receivers_.Add(this, std::move(receiver)); -} - -void ComputePressureManagerImpl::AddClient( - mojo::PendingRemote<mojom::ComputePressureClient> client, - AddClientCallback callback) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - - if (!sampler_.has_probe()) { - std::move(callback).Run(false); - return; - } - clients_.Add(std::move(client)); - sampler_.EnsureStarted(); - std::move(callback).Run(true); -} - -void ComputePressureManagerImpl::UpdateClients(ComputePressureSample sample) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - - const mojom::ComputePressureState state{sample.cpu_utilization}; - const base::Time timestamp = base::Time::Now(); - for (auto& client : clients_) - client->ComputePressureStateChanged(state.Clone(), timestamp); -} - -void ComputePressureManagerImpl::OnClientRemoteDisconnected( - mojo::RemoteSetElementId /*id*/) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - - if (clients_.empty()) - sampler_.Stop(); -} - -} // namespace device
diff --git a/services/device/compute_pressure/compute_pressure_manager_impl.h b/services/device/compute_pressure/compute_pressure_manager_impl.h deleted file mode 100644 index fb67813..0000000 --- a/services/device/compute_pressure/compute_pressure_manager_impl.h +++ /dev/null
@@ -1,83 +0,0 @@ -// Copyright 2021 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 SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_MANAGER_IMPL_H_ -#define SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_MANAGER_IMPL_H_ - -#include <memory> - -#include "base/sequence_checker.h" -#include "base/thread_annotations.h" -#include "base/time/time.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "mojo/public/cpp/bindings/receiver_set.h" -#include "mojo/public/cpp/bindings/remote_set.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" -#include "services/device/compute_pressure/compute_pressure_sampler.h" -#include "services/device/public/mojom/compute_pressure_manager.mojom.h" - -namespace device { - -class CpuProbe; - -// Handles the communication between the browser process and services. -// -// This class owns one instance of ComputePressureSampler. The -// ComputePressureSampler instance keeps collecting compute pressure -// information from the underlying operating system when `clients_` is -// not empty and stops collecting when `clients_` becomes empty. -// -// DeviceService owns one instance of this class. -// -// Instances are not thread-safe and should be used on the same sequence. -class ComputePressureManagerImpl : public mojom::ComputePressureManager { - public: - // The sampling interval must be smaller or equal to the rate-limit for - // observer updates. - static constexpr base::TimeDelta kDefaultSamplingInterval = base::Seconds(1); - - // Factory method for production instances. - static std::unique_ptr<ComputePressureManagerImpl> Create(); - - // Factory method with dependency injection support for testing. - static std::unique_ptr<ComputePressureManagerImpl> CreateForTesting( - std::unique_ptr<CpuProbe> cpu_probe, - base::TimeDelta sampling_interval); - - ~ComputePressureManagerImpl() override; - - ComputePressureManagerImpl(const ComputePressureManagerImpl&) = delete; - ComputePressureManagerImpl& operator=(const ComputePressureManagerImpl&) = - delete; - - void Bind(mojo::PendingReceiver<mojom::ComputePressureManager> receiver); - - // device::mojom::ComputePressureManager implementation. - void AddClient(mojo::PendingRemote<mojom::ComputePressureClient> client, - AddClientCallback callback) override; - - private: - ComputePressureManagerImpl(std::unique_ptr<CpuProbe> cpu_probe, - base::TimeDelta sampling_interval); - - // Called periodically by ComputePressureSampler. - void UpdateClients(ComputePressureSample sample); - - // Stop `sampler_` once there is no client. - void OnClientRemoteDisconnected(mojo::RemoteSetElementId /*id*/); - - SEQUENCE_CHECKER(sequence_checker_); - - ComputePressureSampler sampler_ GUARDED_BY_CONTEXT(sequence_checker_); - - mojo::ReceiverSet<mojom::ComputePressureManager> receivers_ - GUARDED_BY_CONTEXT(sequence_checker_); - mojo::RemoteSet<mojom::ComputePressureClient> clients_ - GUARDED_BY_CONTEXT(sequence_checker_); -}; - -} // namespace device - -#endif // SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_MANAGER_IMPL_H_
diff --git a/services/device/compute_pressure/compute_pressure_manager_impl_unittest.cc b/services/device/compute_pressure/compute_pressure_manager_impl_unittest.cc deleted file mode 100644 index d5c4a62f..0000000 --- a/services/device/compute_pressure/compute_pressure_manager_impl_unittest.cc +++ /dev/null
@@ -1,202 +0,0 @@ -// Copyright 2021 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 "services/device/compute_pressure/compute_pressure_manager_impl.h" - -#include <utility> - -#include "base/barrier_closure.h" -#include "base/run_loop.h" -#include "base/test/bind.h" -#include "base/test/test_future.h" -#include "build/build_config.h" -#include "services/device/compute_pressure/compute_pressure_test_support.h" -#include "services/device/compute_pressure/cpu_probe.h" -#include "services/device/device_service_test_base.h" -#include "services/device/public/mojom/compute_pressure_manager.mojom.h" -#include "services/device/public/mojom/compute_pressure_state.mojom.h" -#include "testing/gmock/include/gmock/gmock.h" -#include "testing/gtest/include/gtest/gtest.h" - -namespace device { - -namespace { - -constexpr base::TimeDelta kDefaultSamplingIntervalForTesting = base::Seconds(1); - -// Synchronous proxy to a device::mojom::ComputePressureManager. -class ComputePressureManagerImplSync { - public: - explicit ComputePressureManagerImplSync( - mojom::ComputePressureManager* manager) - : manager_(*manager) { - DCHECK(manager); - } - ~ComputePressureManagerImplSync() = default; - - ComputePressureManagerImplSync(const ComputePressureManagerImplSync&) = - delete; - ComputePressureManagerImplSync& operator=( - const ComputePressureManagerImplSync&) = delete; - - bool AddClient(mojo::PendingRemote<mojom::ComputePressureClient> client) { - base::test::TestFuture<bool> future; - manager_.AddClient(std::move(client), future.GetCallback()); - return future.Get(); - } - - private: - // The reference is immutable, so accessing it is thread-safe. The referenced - // device::mojom::ComputePressureManager implementation is called - // synchronously, so it's acceptable to rely on its own thread-safety checks. - mojom::ComputePressureManager& manager_; -}; - -class FakeComputePressureClient : public mojom::ComputePressureClient { - public: - FakeComputePressureClient() : client_(this) {} - ~FakeComputePressureClient() override = default; - - FakeComputePressureClient(const FakeComputePressureClient&) = delete; - FakeComputePressureClient& operator=(const FakeComputePressureClient&) = - delete; - - // device::mojom::ComputePressureClient implementation. - void ComputePressureStateChanged(device::mojom::ComputePressureStatePtr state, - base::Time timestamp) override { - updates_.emplace_back(*state, timestamp); - if (update_callback_) { - std::move(update_callback_).Run(); - update_callback_.Reset(); - } - } - - const std::vector<std::pair<mojom::ComputePressureState, base::Time>>& - updates() const { - return updates_; - } - - void SetNextUpdateCallback(base::OnceClosure callback) { - DCHECK(!update_callback_) << " already called before update received"; - update_callback_ = std::move(callback); - } - - void WaitForUpdate() { - base::RunLoop run_loop; - SetNextUpdateCallback(run_loop.QuitClosure()); - run_loop.Run(); - } - - static void WaitForUpdates( - std::initializer_list<FakeComputePressureClient*> clients) { - base::RunLoop run_loop; - base::RepeatingClosure update_barrier = - base::BarrierClosure(clients.size(), run_loop.QuitClosure()); - for (FakeComputePressureClient* client : clients) - client->SetNextUpdateCallback(update_barrier); - run_loop.Run(); - } - - mojo::PendingRemote<mojom::ComputePressureClient> BindNewPipeAndPassRemote() { - return client_.BindNewPipeAndPassRemote(); - } - - private: - // Used to save pairs of ComputePressureState and its timestamp. - std::vector<std::pair<mojom::ComputePressureState, base::Time>> updates_; - - // Used to implement WaitForUpdate(). - base::OnceClosure update_callback_; - - mojo::Receiver<mojom::ComputePressureClient> client_; -}; - -} // namespace - -class ComputePressureManagerImplTest : public DeviceServiceTestBase { - public: - ComputePressureManagerImplTest() = default; - ~ComputePressureManagerImplTest() override = default; - - ComputePressureManagerImplTest(const ComputePressureManagerImplTest&) = - delete; - ComputePressureManagerImplTest& operator=( - const ComputePressureManagerImplTest&) = delete; - - void SetUp() override { - DeviceServiceTestBase::SetUp(); - CreateConnection(std::make_unique<FakeCpuProbe>(), - kDefaultSamplingIntervalForTesting); - } - - void CreateConnection(std::unique_ptr<CpuProbe> cpu_probe, - base::TimeDelta sampling_interval) { - manager_impl_ = ComputePressureManagerImpl::CreateForTesting( - std::move(cpu_probe), sampling_interval); - manager_.reset(); - manager_impl_->Bind(manager_.BindNewPipeAndPassReceiver()); - manager_impl_sync_ = - std::make_unique<ComputePressureManagerImplSync>(manager_.get()); - } - - protected: - std::unique_ptr<ComputePressureManagerImpl> manager_impl_; - mojo::Remote<mojom::ComputePressureManager> manager_; - std::unique_ptr<ComputePressureManagerImplSync> manager_impl_sync_; -}; - -// Disabled on Fuchsia arm64 debug builds: https://crbug.com/1250654 -#if BUILDFLAG(IS_FUCHSIA) && defined(_DEBUG) && defined(ARCH_CPU_ARM64) -#define MAYBE_OneClient DISABLED_OneClient -#elif BUILDFLAG(IS_LINUX) && defined(USE_OZONE) // https://crbug.com/1226086 -#define MAYBE_OneClient DISABLED_OneClient -#else -#define MAYBE_OneClient OneClient -#endif -TEST_F(ComputePressureManagerImplTest, MAYBE_OneClient) { - FakeComputePressureClient client; - ASSERT_TRUE(manager_impl_sync_->AddClient(client.BindNewPipeAndPassRemote())); - - client.WaitForUpdate(); - ASSERT_EQ(client.updates().size(), 1u); - EXPECT_EQ(client.updates()[0].first, mojom::ComputePressureState{0.42}); -} - -// Disabled on Fuchsia arm64 debug builds: https://crbug.com/1250654 -#if BUILDFLAG(IS_FUCHSIA) && defined(_DEBUG) && defined(ARCH_CPU_ARM64) -#define MAYBE_ThreeClients DISABLED_ThreeClients -#elif BUILDFLAG(IS_LINUX) && defined(USE_OZONE) // https://crbug.com/1226086 -#define MAYBE_ThreeClients DISABLED_ThreeClients -#else -#define MAYBE_ThreeClients ThreeClients -#endif -TEST_F(ComputePressureManagerImplTest, MAYBE_ThreeClients) { - FakeComputePressureClient client1; - ASSERT_TRUE( - manager_impl_sync_->AddClient(client1.BindNewPipeAndPassRemote())); - FakeComputePressureClient client2; - ASSERT_TRUE( - manager_impl_sync_->AddClient(client2.BindNewPipeAndPassRemote())); - FakeComputePressureClient client3; - ASSERT_TRUE( - manager_impl_sync_->AddClient(client3.BindNewPipeAndPassRemote())); - - FakeComputePressureClient::WaitForUpdates({&client1, &client2, &client3}); - ASSERT_EQ(client1.updates().size(), 1u); - EXPECT_EQ(client1.updates()[0].first, mojom::ComputePressureState{0.42}); - ASSERT_EQ(client2.updates().size(), 1u); - EXPECT_EQ(client2.updates()[0].first, mojom::ComputePressureState{0.42}); - ASSERT_EQ(client3.updates().size(), 1u); - EXPECT_EQ(client3.updates()[0].first, mojom::ComputePressureState{0.42}); -} - -TEST_F(ComputePressureManagerImplTest, AddClient_NoProbe) { - CreateConnection(nullptr, kDefaultSamplingIntervalForTesting); - - FakeComputePressureClient client; - ASSERT_FALSE( - manager_impl_sync_->AddClient(client.BindNewPipeAndPassRemote())); -} - -} // namespace device
diff --git a/services/device/compute_pressure/compute_pressure_test_support.h b/services/device/compute_pressure/compute_pressure_test_support.h deleted file mode 100644 index a893aba..0000000 --- a/services/device/compute_pressure/compute_pressure_test_support.h +++ /dev/null
@@ -1,50 +0,0 @@ -// Copyright 2021 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 SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_TEST_SUPPORT_H_ -#define SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_TEST_SUPPORT_H_ - -#include <ostream> - -#include "base/sequence_checker.h" -#include "base/synchronization/lock.h" -#include "base/thread_annotations.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" -#include "services/device/compute_pressure/cpu_probe.h" - -namespace device { - -// googletest integration with ComputePressureSample. -bool operator==(const ComputePressureSample& lhs, - const ComputePressureSample& rhs) noexcept; - -std::ostream& operator<<(std::ostream& os, const ComputePressureSample& sample); - -// Test double for CpuProbe that always returns a predetermined value. -class FakeCpuProbe : public CpuProbe { - public: - // Value returned by LastSample() if SetLastSample() is not called. - static constexpr ComputePressureSample kInitialSample{0.42}; - - FakeCpuProbe(); - ~FakeCpuProbe() override; - - // CpuProbe implementation. - void Update() override; - ComputePressureSample LastSample() override; - - // Can be called from any thread. - void SetLastSample(ComputePressureSample sample); - - private: - // Bound to the sequence for Update() and LastSample(). - SEQUENCE_CHECKER(sequence_checker_); - - base::Lock lock_; - ComputePressureSample last_sample_ GUARDED_BY_CONTEXT(lock_); -}; - -} // namespace device - -#endif // SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_TEST_SUPPORT_H_
diff --git a/services/device/compute_pressure/cpu_probe.cc b/services/device/compute_pressure/cpu_probe.cc index 4d94462d6..7df8527 100644 --- a/services/device/compute_pressure/cpu_probe.cc +++ b/services/device/compute_pressure/cpu_probe.cc
@@ -9,14 +9,14 @@ #include "base/sequence_checker.h" #include "base/threading/scoped_blocking_call.h" #include "build/build_config.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" +#include "services/device/compute_pressure/pressure_sample.h" #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) #include "services/device/compute_pressure/cpu_probe_linux.h" #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) namespace device { -constexpr ComputePressureSample CpuProbe::kUnsupportedValue; +constexpr PressureSample CpuProbe::kUnsupportedValue; CpuProbe::CpuProbe() = default; CpuProbe::~CpuProbe() = default; @@ -39,7 +39,7 @@ FROM_HERE, base::BlockingType::MAY_BLOCK); } - ComputePressureSample LastSample() override { + PressureSample LastSample() override { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return CpuProbe::kUnsupportedValue; }
diff --git a/services/device/compute_pressure/cpu_probe.h b/services/device/compute_pressure/cpu_probe.h index d8c36be..63511cc 100644 --- a/services/device/compute_pressure/cpu_probe.h +++ b/services/device/compute_pressure/cpu_probe.h
@@ -7,7 +7,7 @@ #include <memory> -#include "services/device/compute_pressure/compute_pressure_sample.h" +#include "services/device/compute_pressure/pressure_sample.h" namespace device { @@ -32,8 +32,7 @@ class CpuProbe { public: // LastSample() return value when the implementation fails to get a result. - static constexpr ComputePressureSample kUnsupportedValue = {.cpu_utilization = - 0.0}; + static constexpr PressureSample kUnsupportedValue = {.cpu_utilization = 0.0}; // Instantiates the CpuProbe subclass most suitable for the current platform. // @@ -52,7 +51,7 @@ virtual void Update() = 0; // CPU compute resource availability between the last two Update() calls. - virtual ComputePressureSample LastSample() = 0; + virtual PressureSample LastSample() = 0; protected: // The constructor is intentionally only exposed to subclasses. Production
diff --git a/services/device/compute_pressure/cpu_probe_linux.cc b/services/device/compute_pressure/cpu_probe_linux.cc index f44ce80..8202a1c 100644 --- a/services/device/compute_pressure/cpu_probe_linux.cc +++ b/services/device/compute_pressure/cpu_probe_linux.cc
@@ -74,7 +74,7 @@ } } -ComputePressureSample CpuProbeLinux::LastSample() { +PressureSample CpuProbeLinux::LastSample() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); return last_sample_; }
diff --git a/services/device/compute_pressure/cpu_probe_linux.h b/services/device/compute_pressure/cpu_probe_linux.h index 6f4a419..63db509 100644 --- a/services/device/compute_pressure/cpu_probe_linux.h +++ b/services/device/compute_pressure/cpu_probe_linux.h
@@ -13,8 +13,8 @@ #include "base/files/file_path.h" #include "base/sequence_checker.h" #include "base/thread_annotations.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" #include "services/device/compute_pressure/cpu_probe.h" +#include "services/device/compute_pressure/pressure_sample.h" #include "services/device/compute_pressure/procfs_stat_cpu_parser.h" namespace device { @@ -35,7 +35,7 @@ // CpuProbe implementation. void Update() override; - ComputePressureSample LastSample() override; + PressureSample LastSample() override; private: explicit CpuProbeLinux(base::FilePath procfs_stat_path); @@ -56,7 +56,7 @@ std::vector<ProcfsStatCpuParser::CoreTimes> last_core_times_ GUARDED_BY_CONTEXT(sequence_checker_); - ComputePressureSample last_sample_ GUARDED_BY_CONTEXT(sequence_checker_); + PressureSample last_sample_ GUARDED_BY_CONTEXT(sequence_checker_); }; } // namespace device
diff --git a/services/device/compute_pressure/pressure_manager_impl.cc b/services/device/compute_pressure/pressure_manager_impl.cc new file mode 100644 index 0000000..b5a2478a --- /dev/null +++ b/services/device/compute_pressure/pressure_manager_impl.cc
@@ -0,0 +1,95 @@ +// Copyright 2021 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 "services/device/compute_pressure/pressure_manager_impl.h" + +#include <utility> + +#include "base/bind.h" +#include "base/memory/ptr_util.h" +#include "base/time/time.h" +#include "mojo/public/cpp/bindings/message.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "services/device/compute_pressure/cpu_probe.h" +#include "services/device/compute_pressure/pressure_sample.h" +#include "services/device/compute_pressure/pressure_sampler.h" +#include "services/device/public/mojom/pressure_state.mojom.h" + +namespace device { + +constexpr base::TimeDelta PressureManagerImpl::kDefaultSamplingInterval; + +// static +std::unique_ptr<PressureManagerImpl> PressureManagerImpl::Create() { + return base::WrapUnique(new PressureManagerImpl( + CpuProbe::Create(), PressureManagerImpl::kDefaultSamplingInterval)); +} + +// static +std::unique_ptr<PressureManagerImpl> PressureManagerImpl::CreateForTesting( + std::unique_ptr<CpuProbe> cpu_probe, + base::TimeDelta sampling_interval) { + return base::WrapUnique( + new PressureManagerImpl(std::move(cpu_probe), sampling_interval)); +} + +PressureManagerImpl::PressureManagerImpl(std::unique_ptr<CpuProbe> cpu_probe, + base::TimeDelta sampling_interval) + // base::Unretained usage is safe here because the callback is only run + // while `sampler_` is alive, and `sampler_` is owned by this instance. + : sampler_(std::move(cpu_probe), + sampling_interval, + base::BindRepeating(&PressureManagerImpl::UpdateClients, + base::Unretained(this))) { + // base::Unretained use is safe because mojo guarantees the callback will not + // be called after `clients_` is deallocated, and `clients_` is owned by + // PressureManagerImpl. + clients_.set_disconnect_handler( + base::BindRepeating(&PressureManagerImpl::OnClientRemoteDisconnected, + base::Unretained(this))); +} + +PressureManagerImpl::~PressureManagerImpl() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +} + +void PressureManagerImpl::Bind( + mojo::PendingReceiver<mojom::PressureManager> receiver) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + receivers_.Add(this, std::move(receiver)); +} + +void PressureManagerImpl::AddClient( + mojo::PendingRemote<mojom::PressureClient> client, + AddClientCallback callback) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + if (!sampler_.has_probe()) { + std::move(callback).Run(false); + return; + } + clients_.Add(std::move(client)); + sampler_.EnsureStarted(); + std::move(callback).Run(true); +} + +void PressureManagerImpl::UpdateClients(PressureSample sample) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + const mojom::PressureState state{sample.cpu_utilization}; + const base::Time timestamp = base::Time::Now(); + for (auto& client : clients_) + client->PressureStateChanged(state.Clone(), timestamp); +} + +void PressureManagerImpl::OnClientRemoteDisconnected( + mojo::RemoteSetElementId /*id*/) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); + + if (clients_.empty()) + sampler_.Stop(); +} + +} // namespace device
diff --git a/services/device/compute_pressure/pressure_manager_impl.h b/services/device/compute_pressure/pressure_manager_impl.h new file mode 100644 index 0000000..85d579d --- /dev/null +++ b/services/device/compute_pressure/pressure_manager_impl.h
@@ -0,0 +1,82 @@ +// Copyright 2021 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 SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_MANAGER_IMPL_H_ +#define SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_MANAGER_IMPL_H_ + +#include <memory> + +#include "base/sequence_checker.h" +#include "base/thread_annotations.h" +#include "base/time/time.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/remote_set.h" +#include "services/device/compute_pressure/pressure_sample.h" +#include "services/device/compute_pressure/pressure_sampler.h" +#include "services/device/public/mojom/pressure_manager.mojom.h" + +namespace device { + +class CpuProbe; + +// Handles the communication between the browser process and services. +// +// This class owns one instance of PressureSampler. The PressureSampler +// instance keeps collecting compute pressure information from the +// underlying operating system when `clients_` is not empty and stops +// collecting when `clients_` becomes empty. +// +// DeviceService owns one instance of this class. +// +// Instances are not thread-safe and should be used on the same sequence. +class PressureManagerImpl : public mojom::PressureManager { + public: + // The sampling interval must be smaller or equal to the rate-limit for + // observer updates. + static constexpr base::TimeDelta kDefaultSamplingInterval = base::Seconds(1); + + // Factory method for production instances. + static std::unique_ptr<PressureManagerImpl> Create(); + + // Factory method with dependency injection support for testing. + static std::unique_ptr<PressureManagerImpl> CreateForTesting( + std::unique_ptr<CpuProbe> cpu_probe, + base::TimeDelta sampling_interval); + + ~PressureManagerImpl() override; + + PressureManagerImpl(const PressureManagerImpl&) = delete; + PressureManagerImpl& operator=(const PressureManagerImpl&) = delete; + + void Bind(mojo::PendingReceiver<mojom::PressureManager> receiver); + + // device::mojom::PressureManager implementation. + void AddClient(mojo::PendingRemote<mojom::PressureClient> client, + AddClientCallback callback) override; + + private: + PressureManagerImpl(std::unique_ptr<CpuProbe> cpu_probe, + base::TimeDelta sampling_interval); + + // Called periodically by PressureSampler. + void UpdateClients(PressureSample sample); + + // Stop `sampler_` once there is no client. + void OnClientRemoteDisconnected(mojo::RemoteSetElementId /*id*/); + + SEQUENCE_CHECKER(sequence_checker_); + + PressureSampler sampler_ GUARDED_BY_CONTEXT(sequence_checker_); + + mojo::ReceiverSet<mojom::PressureManager> receivers_ + GUARDED_BY_CONTEXT(sequence_checker_); + mojo::RemoteSet<mojom::PressureClient> clients_ + GUARDED_BY_CONTEXT(sequence_checker_); +}; + +} // namespace device + +#endif // SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_MANAGER_IMPL_H_
diff --git a/services/device/compute_pressure/pressure_manager_impl_unittest.cc b/services/device/compute_pressure/pressure_manager_impl_unittest.cc new file mode 100644 index 0000000..f9fe69b --- /dev/null +++ b/services/device/compute_pressure/pressure_manager_impl_unittest.cc
@@ -0,0 +1,196 @@ +// Copyright 2021 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 "services/device/compute_pressure/pressure_manager_impl.h" + +#include <utility> + +#include "base/barrier_closure.h" +#include "base/run_loop.h" +#include "base/test/bind.h" +#include "base/test/test_future.h" +#include "build/build_config.h" +#include "services/device/compute_pressure/cpu_probe.h" +#include "services/device/compute_pressure/pressure_test_support.h" +#include "services/device/device_service_test_base.h" +#include "services/device/public/mojom/pressure_manager.mojom.h" +#include "services/device/public/mojom/pressure_state.mojom.h" +#include "testing/gmock/include/gmock/gmock.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace device { + +namespace { + +constexpr base::TimeDelta kDefaultSamplingIntervalForTesting = base::Seconds(1); + +// Synchronous proxy to a device::mojom::PressureManager. +class PressureManagerImplSync { + public: + explicit PressureManagerImplSync(mojom::PressureManager* manager) + : manager_(*manager) { + DCHECK(manager); + } + ~PressureManagerImplSync() = default; + + PressureManagerImplSync(const PressureManagerImplSync&) = delete; + PressureManagerImplSync& operator=(const PressureManagerImplSync&) = delete; + + bool AddClient(mojo::PendingRemote<mojom::PressureClient> client) { + base::test::TestFuture<bool> future; + manager_.AddClient(std::move(client), future.GetCallback()); + return future.Get(); + } + + private: + // The reference is immutable, so accessing it is thread-safe. The referenced + // device::mojom::PressureManager implementation is called synchronously, + // so it's acceptable to rely on its own thread-safety checks. + mojom::PressureManager& manager_; +}; + +class FakePressureClient : public mojom::PressureClient { + public: + FakePressureClient() : client_(this) {} + ~FakePressureClient() override = default; + + FakePressureClient(const FakePressureClient&) = delete; + FakePressureClient& operator=(const FakePressureClient&) = delete; + + // device::mojom::PressureClient implementation. + void PressureStateChanged(device::mojom::PressureStatePtr state, + base::Time timestamp) override { + updates_.emplace_back(*state, timestamp); + if (update_callback_) { + std::move(update_callback_).Run(); + update_callback_.Reset(); + } + } + + const std::vector<std::pair<mojom::PressureState, base::Time>>& updates() + const { + return updates_; + } + + void SetNextUpdateCallback(base::OnceClosure callback) { + DCHECK(!update_callback_) << " already called before update received"; + update_callback_ = std::move(callback); + } + + void WaitForUpdate() { + base::RunLoop run_loop; + SetNextUpdateCallback(run_loop.QuitClosure()); + run_loop.Run(); + } + + static void WaitForUpdates( + std::initializer_list<FakePressureClient*> clients) { + base::RunLoop run_loop; + base::RepeatingClosure update_barrier = + base::BarrierClosure(clients.size(), run_loop.QuitClosure()); + for (FakePressureClient* client : clients) + client->SetNextUpdateCallback(update_barrier); + run_loop.Run(); + } + + mojo::PendingRemote<mojom::PressureClient> BindNewPipeAndPassRemote() { + return client_.BindNewPipeAndPassRemote(); + } + + private: + // Used to save pairs of PressureState and its timestamp. + std::vector<std::pair<mojom::PressureState, base::Time>> updates_; + + // Used to implement WaitForUpdate(). + base::OnceClosure update_callback_; + + mojo::Receiver<mojom::PressureClient> client_; +}; + +} // namespace + +class PressureManagerImplTest : public DeviceServiceTestBase { + public: + PressureManagerImplTest() = default; + ~PressureManagerImplTest() override = default; + + PressureManagerImplTest(const PressureManagerImplTest&) = delete; + PressureManagerImplTest& operator=(const PressureManagerImplTest&) = delete; + + void SetUp() override { + DeviceServiceTestBase::SetUp(); + CreateConnection(std::make_unique<FakeCpuProbe>(), + kDefaultSamplingIntervalForTesting); + } + + void CreateConnection(std::unique_ptr<CpuProbe> cpu_probe, + base::TimeDelta sampling_interval) { + manager_impl_ = PressureManagerImpl::CreateForTesting(std::move(cpu_probe), + sampling_interval); + manager_.reset(); + manager_impl_->Bind(manager_.BindNewPipeAndPassReceiver()); + manager_impl_sync_ = + std::make_unique<PressureManagerImplSync>(manager_.get()); + } + + protected: + std::unique_ptr<PressureManagerImpl> manager_impl_; + mojo::Remote<mojom::PressureManager> manager_; + std::unique_ptr<PressureManagerImplSync> manager_impl_sync_; +}; + +// Disabled on Fuchsia arm64 debug builds: https://crbug.com/1250654 +#if BUILDFLAG(IS_FUCHSIA) && defined(_DEBUG) && defined(ARCH_CPU_ARM64) +#define MAYBE_OneClient DISABLED_OneClient +#elif BUILDFLAG(IS_LINUX) && defined(USE_OZONE) // https://crbug.com/1226086 +#define MAYBE_OneClient DISABLED_OneClient +#else +#define MAYBE_OneClient OneClient +#endif +TEST_F(PressureManagerImplTest, MAYBE_OneClient) { + FakePressureClient client; + ASSERT_TRUE(manager_impl_sync_->AddClient(client.BindNewPipeAndPassRemote())); + + client.WaitForUpdate(); + ASSERT_EQ(client.updates().size(), 1u); + EXPECT_EQ(client.updates()[0].first, mojom::PressureState{0.42}); +} + +// Disabled on Fuchsia arm64 debug builds: https://crbug.com/1250654 +#if BUILDFLAG(IS_FUCHSIA) && defined(_DEBUG) && defined(ARCH_CPU_ARM64) +#define MAYBE_ThreeClients DISABLED_ThreeClients +#elif BUILDFLAG(IS_LINUX) && defined(USE_OZONE) // https://crbug.com/1226086 +#define MAYBE_ThreeClients DISABLED_ThreeClients +#else +#define MAYBE_ThreeClients ThreeClients +#endif +TEST_F(PressureManagerImplTest, MAYBE_ThreeClients) { + FakePressureClient client1; + ASSERT_TRUE( + manager_impl_sync_->AddClient(client1.BindNewPipeAndPassRemote())); + FakePressureClient client2; + ASSERT_TRUE( + manager_impl_sync_->AddClient(client2.BindNewPipeAndPassRemote())); + FakePressureClient client3; + ASSERT_TRUE( + manager_impl_sync_->AddClient(client3.BindNewPipeAndPassRemote())); + + FakePressureClient::WaitForUpdates({&client1, &client2, &client3}); + ASSERT_EQ(client1.updates().size(), 1u); + EXPECT_EQ(client1.updates()[0].first, mojom::PressureState{0.42}); + ASSERT_EQ(client2.updates().size(), 1u); + EXPECT_EQ(client2.updates()[0].first, mojom::PressureState{0.42}); + ASSERT_EQ(client3.updates().size(), 1u); + EXPECT_EQ(client3.updates()[0].first, mojom::PressureState{0.42}); +} + +TEST_F(PressureManagerImplTest, AddClient_NoProbe) { + CreateConnection(nullptr, kDefaultSamplingIntervalForTesting); + + FakePressureClient client; + ASSERT_FALSE( + manager_impl_sync_->AddClient(client.BindNewPipeAndPassRemote())); +} + +} // namespace device
diff --git a/services/device/compute_pressure/compute_pressure_sample.h b/services/device/compute_pressure/pressure_sample.h similarity index 65% rename from services/device/compute_pressure/compute_pressure_sample.h rename to services/device/compute_pressure/pressure_sample.h index 6ebd767..7960d39 100644 --- a/services/device/compute_pressure/compute_pressure_sample.h +++ b/services/device/compute_pressure/pressure_sample.h
@@ -2,13 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SAMPLE_H_ -#define SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SAMPLE_H_ +#ifndef SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_SAMPLE_H_ +#define SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_SAMPLE_H_ namespace device { // Represents availability of compute resources measured over a period of time. -struct ComputePressureSample { +struct PressureSample { // Average utilization of all CPU cores. // // Values use a scale from 0.0 (no utilization) to 1.0 (100% utilization). @@ -17,4 +17,4 @@ } // namespace device -#endif // SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SAMPLE_H_ +#endif // SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_SAMPLE_H_
diff --git a/services/device/compute_pressure/compute_pressure_sampler.cc b/services/device/compute_pressure/pressure_sampler.cc similarity index 81% rename from services/device/compute_pressure/compute_pressure_sampler.cc rename to services/device/compute_pressure/pressure_sampler.cc index 8d85821..c9f68e3 100644 --- a/services/device/compute_pressure/compute_pressure_sampler.cc +++ b/services/device/compute_pressure/pressure_sampler.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "services/device/compute_pressure/compute_pressure_sampler.h" +#include "services/device/compute_pressure/pressure_sampler.h" #include <utility> @@ -16,8 +16,8 @@ #include "base/task/thread_pool.h" #include "base/threading/sequenced_task_runner_handle.h" #include "base/time/time.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" #include "services/device/compute_pressure/cpu_probe.h" +#include "services/device/compute_pressure/pressure_sample.h" namespace device { @@ -33,10 +33,10 @@ } // namespace -ComputePressureSampler::ComputePressureSampler( +PressureSampler::PressureSampler( std::unique_ptr<CpuProbe> probe, base::TimeDelta sampling_interval, - base::RepeatingCallback<void(ComputePressureSample)> sampling_callback) + base::RepeatingCallback<void(PressureSample)> sampling_callback) : probe_task_runner_(CreateProbeTaskRunner()), probe_(std::move(probe)), sampling_interval_(sampling_interval), @@ -44,12 +44,12 @@ DCHECK(sampling_callback_); } -ComputePressureSampler::~ComputePressureSampler() { +PressureSampler::~PressureSampler() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); probe_task_runner_->DeleteSoon(FROM_HERE, std::move(probe_)); } -void ComputePressureSampler::EnsureStarted() { +void PressureSampler::EnsureStarted() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(has_probe()) << __func__ << " should not be called if has_probe() returns false"; @@ -67,18 +67,18 @@ // base::Unretained usage is safe here because base::RepeatingTimer guarantees // that its callback will not be called after it goes out of scope. timer_.Start(FROM_HERE, sampling_interval_, - base::BindRepeating(&ComputePressureSampler::UpdateProbe, + base::BindRepeating(&PressureSampler::UpdateProbe, base::Unretained(this))); } -void ComputePressureSampler::Stop() { +void PressureSampler::Stop() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); timer_.AbandonAndStop(); got_probe_baseline_ = false; } -void ComputePressureSampler::UpdateProbe() { +void PressureSampler::UpdateProbe() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK(has_probe()); @@ -88,16 +88,16 @@ probe_task_runner_->PostTaskAndReplyWithResult( FROM_HERE, base::BindOnce( - [](CpuProbe* probe) -> ComputePressureSample { + [](CpuProbe* probe) -> PressureSample { probe->Update(); return probe->LastSample(); }, probe_.get()), - base::BindOnce(&ComputePressureSampler::DidUpdateProbe, + base::BindOnce(&PressureSampler::DidUpdateProbe, weak_factory_.GetWeakPtr())); } -void ComputePressureSampler::DidUpdateProbe(ComputePressureSample sample) { +void PressureSampler::DidUpdateProbe(PressureSample sample) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); // Don't report the update result if Stop() was called.
diff --git a/services/device/compute_pressure/compute_pressure_sampler.h b/services/device/compute_pressure/pressure_sampler.h similarity index 77% rename from services/device/compute_pressure/compute_pressure_sampler.h rename to services/device/compute_pressure/pressure_sampler.h index d0517a7d..1c85310 100644 --- a/services/device/compute_pressure/compute_pressure_sampler.h +++ b/services/device/compute_pressure/pressure_sampler.h
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SAMPLER_H_ -#define SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SAMPLER_H_ +#ifndef SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_SAMPLER_H_ +#define SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_SAMPLER_H_ #include <memory> @@ -14,7 +14,7 @@ #include "base/task/sequenced_task_runner.h" #include "base/thread_annotations.h" #include "base/timer/timer.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" +#include "services/device/compute_pressure/pressure_sample.h" namespace device { @@ -28,8 +28,8 @@ // // Instances are not thread-safe. They must be used on the same sequence. // -// The instance is owned by a ComputePressureManagerImpl. -class ComputePressureSampler { +// The instance is owned by a PressureManagerImpl. +class PressureSampler { public: // The caller must ensure that `cpu_probe` outlives this instance. Production // code should pass CpuProbe::Create(). @@ -39,11 +39,11 @@ // // `sampling_callback` is called regularly every `sampling_interval` while the // sampler is started. - ComputePressureSampler( + PressureSampler( std::unique_ptr<CpuProbe> cpu_probe, base::TimeDelta sampling_interval, - base::RepeatingCallback<void(ComputePressureSample)> sampling_callback); - ~ComputePressureSampler(); + base::RepeatingCallback<void(PressureSample)> sampling_callback); + ~PressureSampler(); bool has_probe() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -69,7 +69,7 @@ // Called periodically while the sampler is running. void UpdateProbe(); // Called after the CpuProbe is updated. - void DidUpdateProbe(ComputePressureSample sample); + void DidUpdateProbe(PressureSample sample); SEQUENCE_CHECKER(sequence_checker_); @@ -87,21 +87,21 @@ GUARDED_BY_CONTEXT(sequence_checker_); // Called with each sample reading. - base::RepeatingCallback<void(ComputePressureSample)> sampling_callback_ + base::RepeatingCallback<void(PressureSample)> sampling_callback_ GUARDED_BY_CONTEXT(sequence_checker_); // True if the CpuProbe state will be reported after the next update. // - // The ComputePressureSample reported by many CpuProbe implementations relies + // The PressureSample reported by many CpuProbe implementations relies // on the differences observed between two Update() calls. For this reason, - // the ComputePressureSample reported after a first Update() call is not + // the PressureSample reported after a first Update() call is not // reported via `sampling_callback_`. bool got_probe_baseline_ GUARDED_BY_CONTEXT(sequence_checker_) = false; - base::WeakPtrFactory<ComputePressureSampler> weak_factory_ + base::WeakPtrFactory<PressureSampler> weak_factory_ GUARDED_BY_CONTEXT(sequence_checker_){this}; }; } // namespace device -#endif // SERVICES_DEVICE_COMPUTE_PRESSURE_COMPUTE_PRESSURE_SAMPLER_H_ +#endif // SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_SAMPLER_H_
diff --git a/services/device/compute_pressure/compute_pressure_sampler_unittest.cc b/services/device/compute_pressure/pressure_sampler_unittest.cc similarity index 69% rename from services/device/compute_pressure/compute_pressure_sampler_unittest.cc rename to services/device/compute_pressure/pressure_sampler_unittest.cc index ac34f1b..53ba05b 100644 --- a/services/device/compute_pressure/compute_pressure_sampler_unittest.cc +++ b/services/device/compute_pressure/pressure_sampler_unittest.cc
@@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "services/device/compute_pressure/compute_pressure_sampler.h" -#include "build/build_config.h" +#include "services/device/compute_pressure/pressure_sampler.h" #include <cstddef> #include <memory> @@ -18,21 +17,22 @@ #include "base/thread_annotations.h" #include "base/threading/platform_thread.h" #include "base/threading/scoped_blocking_call.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" -#include "services/device/compute_pressure/compute_pressure_test_support.h" +#include "build/build_config.h" #include "services/device/compute_pressure/cpu_probe.h" +#include "services/device/compute_pressure/pressure_sample.h" +#include "services/device/compute_pressure/pressure_test_support.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" namespace device { -class ComputePressureSamplerTest : public testing::Test { +class PressureSamplerTest : public testing::Test { public: - ComputePressureSamplerTest() - : sampler_(std::make_unique<ComputePressureSampler>( + PressureSamplerTest() + : sampler_(std::make_unique<PressureSampler>( std::make_unique<FakeCpuProbe>(), base::Milliseconds(1), - base::BindRepeating(&ComputePressureSamplerTest::SamplerCallback, + base::BindRepeating(&PressureSamplerTest::SamplerCallback, base::Unretained(this)))) {} void WaitForUpdate() { @@ -52,7 +52,7 @@ return *cpu_probe; } - void SamplerCallback(ComputePressureSample sample) { + void SamplerCallback(PressureSample sample) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); samples_.push_back(sample); if (update_callback_) { @@ -66,13 +66,12 @@ base::test::TaskEnvironment task_environment_; - // This member is a std::unique_ptr instead of a plain ComputePressureSampler + // This member is a std::unique_ptr instead of a plain PressureSampler // so it can be replaced inside tests. - std::unique_ptr<ComputePressureSampler> sampler_; + std::unique_ptr<PressureSampler> sampler_; // The samples reported by the callback. - std::vector<ComputePressureSample> samples_ - GUARDED_BY_CONTEXT(sequence_checker_); + std::vector<PressureSample> samples_ GUARDED_BY_CONTEXT(sequence_checker_); private: void SetNextUpdateCallback(base::OnceClosure callback) { @@ -86,14 +85,14 @@ base::OnceClosure update_callback_ GUARDED_BY_CONTEXT(sequence_checker_); }; -TEST_F(ComputePressureSamplerTest, EnsureStarted) { +TEST_F(PressureSamplerTest, EnsureStarted) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); sampler_->EnsureStarted(); WaitForUpdate(); EXPECT_GE(samples_.size(), 1u); - EXPECT_THAT(samples_, testing::Contains(ComputePressureSample{0.42})); + EXPECT_THAT(samples_, testing::Contains(PressureSample{0.42})); } namespace { @@ -101,7 +100,7 @@ // TestDouble for CpuProbe that produces a different value after every Update(). class StreamingCpuProbe : public CpuProbe { public: - explicit StreamingCpuProbe(std::vector<ComputePressureSample> samples, + explicit StreamingCpuProbe(std::vector<PressureSample> samples, base::OnceClosure callback) : samples_(std::move(samples)), callback_(std::move(callback)) { DETACH_FROM_SEQUENCE(sequence_checker_); @@ -120,7 +119,7 @@ FROM_HERE, base::BlockingType::MAY_BLOCK); } - ComputePressureSample LastSample() override { + PressureSample LastSample() override { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); if (sample_index_ < samples_.size()) { return samples_.at(sample_index_); @@ -136,42 +135,40 @@ private: SEQUENCE_CHECKER(sequence_checker_); - std::vector<ComputePressureSample> samples_ - GUARDED_BY_CONTEXT(sequence_checker_); + std::vector<PressureSample> samples_ GUARDED_BY_CONTEXT(sequence_checker_); size_t sample_index_ GUARDED_BY_CONTEXT(sequence_checker_) = 0; // This closure is called on a LastSample call after expected number of - // samples has been taken by ComputePressureSampler. + // samples has been taken by PressureSampler. base::OnceClosure callback_; }; } // namespace -TEST_F(ComputePressureSamplerTest, EnsureStarted_SkipsFirstSample) { +TEST_F(PressureSamplerTest, EnsureStarted_SkipsFirstSample) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); - std::vector<ComputePressureSample> samples = { + std::vector<PressureSample> samples = { // Value right after construction. - ComputePressureSample{0.1}, + PressureSample{0.1}, // Value after first Update(), should be discarded. - ComputePressureSample{0.2}, + PressureSample{0.2}, // Value after second Update(), should be reported. - ComputePressureSample{0.4}, + PressureSample{0.4}, }; base::RunLoop run_loop; - sampler_ = std::make_unique<ComputePressureSampler>( + sampler_ = std::make_unique<PressureSampler>( std::make_unique<StreamingCpuProbe>(samples, run_loop.QuitClosure()), base::Milliseconds(1), - base::BindRepeating(&ComputePressureSamplerTest::SamplerCallback, + base::BindRepeating(&PressureSamplerTest::SamplerCallback, base::Unretained(this))); sampler_->EnsureStarted(); run_loop.Run(); EXPECT_GE(samples_.size(), 1u); - EXPECT_THAT(samples_, - testing::Not(testing::Contains(ComputePressureSample{0.2}))); - EXPECT_THAT(samples_, testing::Contains(ComputePressureSample{0.4})); + EXPECT_THAT(samples_, testing::Not(testing::Contains(PressureSample{0.2}))); + EXPECT_THAT(samples_, testing::Contains(PressureSample{0.4})); } // TODO(crbug.com/1271419): Flaky. @@ -182,7 +179,7 @@ #define MAYBE_Stop_Delayed_EnsureStarted_Immediate \ Stop_Delayed_EnsureStarted_Immediate #endif -TEST_F(ComputePressureSamplerTest, MAYBE_Stop_Delayed_EnsureStarted_Immediate) { +TEST_F(PressureSamplerTest, MAYBE_Stop_Delayed_EnsureStarted_Immediate) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); sampler_->EnsureStarted(); @@ -190,15 +187,15 @@ sampler_->Stop(); samples_.clear(); - cpu_probe().SetLastSample(ComputePressureSample{0.25}); + cpu_probe().SetLastSample(PressureSample{0.25}); sampler_->EnsureStarted(); WaitForUpdate(); EXPECT_GE(samples_.size(), 1u); - EXPECT_THAT(samples_, testing::Contains(ComputePressureSample{0.25})); + EXPECT_THAT(samples_, testing::Contains(PressureSample{0.25})); } -TEST_F(ComputePressureSamplerTest, Stop_Delayed_EnsureStarted_Delayed) { +TEST_F(PressureSamplerTest, Stop_Delayed_EnsureStarted_Delayed) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); sampler_->EnsureStarted(); @@ -206,46 +203,46 @@ sampler_->Stop(); samples_.clear(); - cpu_probe().SetLastSample(ComputePressureSample{0.25}); + cpu_probe().SetLastSample(PressureSample{0.25}); // 10ms should be long enough to ensure that all the sampling tasks are done. base::PlatformThread::Sleep(base::Milliseconds(10)); sampler_->EnsureStarted(); WaitForUpdate(); EXPECT_GE(samples_.size(), 1u); - EXPECT_THAT(samples_, testing::Contains(ComputePressureSample{0.25})); + EXPECT_THAT(samples_, testing::Contains(PressureSample{0.25})); } -TEST_F(ComputePressureSamplerTest, Stop_Immediate_EnsureStarted_Immediate) { +TEST_F(PressureSamplerTest, Stop_Immediate_EnsureStarted_Immediate) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); sampler_->EnsureStarted(); sampler_->Stop(); samples_.clear(); - cpu_probe().SetLastSample(ComputePressureSample{0.25}); + cpu_probe().SetLastSample(PressureSample{0.25}); sampler_->EnsureStarted(); WaitForUpdate(); EXPECT_GE(samples_.size(), 1u); - EXPECT_THAT(samples_, testing::Contains(ComputePressureSample{0.25})); + EXPECT_THAT(samples_, testing::Contains(PressureSample{0.25})); } -TEST_F(ComputePressureSamplerTest, Stop_Immediate_EnsureStarted_Delayed) { +TEST_F(PressureSamplerTest, Stop_Immediate_EnsureStarted_Delayed) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); sampler_->EnsureStarted(); sampler_->Stop(); samples_.clear(); - cpu_probe().SetLastSample(ComputePressureSample{0.25}); + cpu_probe().SetLastSample(PressureSample{0.25}); // 10ms should be long enough to ensure that all the sampling tasks are done. base::PlatformThread::Sleep(base::Milliseconds(10)); sampler_->EnsureStarted(); WaitForUpdate(); EXPECT_GE(samples_.size(), 1u); - EXPECT_THAT(samples_, testing::Contains(ComputePressureSample{0.25})); + EXPECT_THAT(samples_, testing::Contains(PressureSample{0.25})); } } // namespace device
diff --git a/services/device/compute_pressure/compute_pressure_test_support.cc b/services/device/compute_pressure/pressure_test_support.cc similarity index 69% rename from services/device/compute_pressure/compute_pressure_test_support.cc rename to services/device/compute_pressure/pressure_test_support.cc index 95447b1..4aa00f6 100644 --- a/services/device/compute_pressure/compute_pressure_test_support.cc +++ b/services/device/compute_pressure/pressure_test_support.cc
@@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "services/device/compute_pressure/compute_pressure_test_support.h" +#include "services/device/compute_pressure/pressure_test_support.h" #include <ostream> @@ -10,22 +10,20 @@ #include "base/sequence_checker.h" #include "base/synchronization/lock.h" #include "base/threading/scoped_blocking_call.h" -#include "services/device/compute_pressure/compute_pressure_sample.h" +#include "services/device/compute_pressure/pressure_sample.h" namespace device { -bool operator==(const ComputePressureSample& lhs, - const ComputePressureSample& rhs) noexcept { +bool operator==(const PressureSample& lhs, const PressureSample& rhs) noexcept { return lhs.cpu_utilization == rhs.cpu_utilization; } -std::ostream& operator<<(std::ostream& os, - const ComputePressureSample& sample) { +std::ostream& operator<<(std::ostream& os, const PressureSample& sample) { os << "[utilization: " << sample.cpu_utilization << "]"; return os; } -constexpr ComputePressureSample FakeCpuProbe::kInitialSample; +constexpr PressureSample FakeCpuProbe::kInitialSample; FakeCpuProbe::FakeCpuProbe() : last_sample_(kInitialSample) { DETACH_FROM_SEQUENCE(sequence_checker_); @@ -44,14 +42,14 @@ base::BlockingType::MAY_BLOCK); } -ComputePressureSample FakeCpuProbe::LastSample() { +PressureSample FakeCpuProbe::LastSample() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); base::AutoLock auto_lock(lock_); return last_sample_; } -void FakeCpuProbe::SetLastSample(ComputePressureSample sample) { +void FakeCpuProbe::SetLastSample(PressureSample sample) { base::AutoLock auto_lock(lock_); last_sample_ = sample; }
diff --git a/services/device/compute_pressure/pressure_test_support.h b/services/device/compute_pressure/pressure_test_support.h new file mode 100644 index 0000000..6fa3e88 --- /dev/null +++ b/services/device/compute_pressure/pressure_test_support.h
@@ -0,0 +1,49 @@ +// Copyright 2021 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 SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_TEST_SUPPORT_H_ +#define SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_TEST_SUPPORT_H_ + +#include <ostream> + +#include "base/sequence_checker.h" +#include "base/synchronization/lock.h" +#include "base/thread_annotations.h" +#include "services/device/compute_pressure/cpu_probe.h" +#include "services/device/compute_pressure/pressure_sample.h" + +namespace device { + +// googletest integration with PressureSample. +bool operator==(const PressureSample& lhs, const PressureSample& rhs) noexcept; + +std::ostream& operator<<(std::ostream& os, const PressureSample& sample); + +// Test double for CpuProbe that always returns a predetermined value. +class FakeCpuProbe : public CpuProbe { + public: + // Value returned by LastSample() if SetLastSample() is not called. + static constexpr PressureSample kInitialSample{0.42}; + + FakeCpuProbe(); + ~FakeCpuProbe() override; + + // CpuProbe implementation. + void Update() override; + PressureSample LastSample() override; + + // Can be called from any thread. + void SetLastSample(PressureSample sample); + + private: + // Bound to the sequence for Update() and LastSample(). + SEQUENCE_CHECKER(sequence_checker_); + + base::Lock lock_; + PressureSample last_sample_ GUARDED_BY_CONTEXT(lock_); +}; + +} // namespace device + +#endif // SERVICES_DEVICE_COMPUTE_PRESSURE_PRESSURE_TEST_SUPPORT_H_
diff --git a/services/device/device_service.cc b/services/device/device_service.cc index 7d7d5ec..e1066e9 100644 --- a/services/device/device_service.cc +++ b/services/device/device_service.cc
@@ -17,7 +17,7 @@ #include "mojo/public/cpp/system/message_pipe.h" #include "services/device/binder_overrides.h" #include "services/device/bluetooth/bluetooth_system_factory.h" -#include "services/device/compute_pressure/compute_pressure_manager_impl.h" +#include "services/device/compute_pressure/pressure_manager_impl.h" #include "services/device/device_posture/device_posture_platform_provider.h" #include "services/device/device_posture/device_posture_provider_impl.h" #include "services/device/fingerprint/fingerprint.h" @@ -182,9 +182,9 @@ } // static -void DeviceService::OverrideComputePressureManagerBinderForTesting( - ComputePressureManagerBinder binder) { - internal::GetComputePressureManagerBinderOverride() = std::move(binder); +void DeviceService::OverridePressureManagerBinderForTesting( + PressureManagerBinder binder) { + internal::GetPressureManagerBinderOverride() = std::move(binder); } void DeviceService::BindBatteryMonitor( @@ -196,18 +196,17 @@ #endif } -void DeviceService::BindComputePressureManager( - mojo::PendingReceiver<mojom::ComputePressureManager> receiver) { - const auto& binder_override = - internal::GetComputePressureManagerBinderOverride(); +void DeviceService::BindPressureManager( + mojo::PendingReceiver<mojom::PressureManager> receiver) { + const auto& binder_override = internal::GetPressureManagerBinderOverride(); if (binder_override) { binder_override.Run(std::move(receiver)); return; } - if (!compute_pressure_manager_) - compute_pressure_manager_ = ComputePressureManagerImpl::Create(); - compute_pressure_manager_->Bind(std::move(receiver)); + if (!pressure_manager_) + pressure_manager_ = PressureManagerImpl::Create(); + pressure_manager_->Bind(std::move(receiver)); } #if BUILDFLAG(IS_ANDROID)
diff --git a/services/device/device_service.h b/services/device/device_service.h index 0c4f51b7..da3a0fa 100644 --- a/services/device/device_service.h +++ b/services/device/device_service.h
@@ -19,7 +19,6 @@ #include "services/device/geolocation/geolocation_provider_impl.h" #include "services/device/geolocation/public_ip_address_geolocation_provider.h" #include "services/device/public/mojom/battery_monitor.mojom.h" -#include "services/device/public/mojom/compute_pressure_manager.mojom.h" #include "services/device/public/mojom/device_posture_provider.mojom.h" #include "services/device/public/mojom/device_service.mojom.h" #include "services/device/public/mojom/fingerprint.mojom.h" @@ -28,6 +27,7 @@ #include "services/device/public/mojom/geolocation_context.mojom.h" #include "services/device/public/mojom/geolocation_control.mojom.h" #include "services/device/public/mojom/power_monitor.mojom.h" +#include "services/device/public/mojom/pressure_manager.mojom.h" #include "services/device/public/mojom/screen_orientation.mojom.h" #include "services/device/public/mojom/sensor_provider.mojom.h" #include "services/device/public/mojom/serial.mojom.h" @@ -78,11 +78,11 @@ class DevicePostureProviderImpl; #endif -class ComputePressureManagerImpl; class DeviceService; class GeolocationManager; class PlatformSensorProvider; class PowerMonitorMessageBroadcaster; +class PressureManagerImpl; class PublicIpAddressLocationNotifier; class SensorProviderImpl; class TimeZoneMonitor; @@ -135,12 +135,11 @@ static void OverrideGeolocationContextBinderForTesting( GeolocationContextBinder binder); - // Supports global override of ComputePressureManager binding within the - // service. - using ComputePressureManagerBinder = base::RepeatingCallback<void( - mojo::PendingReceiver<mojom::ComputePressureManager>)>; - static void OverrideComputePressureManagerBinderForTesting( - ComputePressureManagerBinder binder); + // Supports global override of PressureManager binding within the service. + using PressureManagerBinder = base::RepeatingCallback<void( + mojo::PendingReceiver<mojom::PressureManager>)>; + static void OverridePressureManagerBinderForTesting( + PressureManagerBinder binder); #if BUILDFLAG(IS_ANDROID) // Allows tests to override how frame hosts bind NFCProvider receivers. @@ -168,8 +167,8 @@ void BindBatteryMonitor( mojo::PendingReceiver<mojom::BatteryMonitor> receiver) override; - void BindComputePressureManager( - mojo::PendingReceiver<mojom::ComputePressureManager> receiver) override; + void BindPressureManager( + mojo::PendingReceiver<mojom::PressureManager> receiver) override; #if BUILDFLAG(IS_ANDROID) void BindNFCProvider( @@ -226,7 +225,7 @@ mojo::PendingReceiver<mojom::UsbDeviceManagerTest> receiver) override; mojo::ReceiverSet<mojom::DeviceService> receivers_; - std::unique_ptr<ComputePressureManagerImpl> compute_pressure_manager_; + std::unique_ptr<PressureManagerImpl> pressure_manager_; std::unique_ptr<PowerMonitorMessageBroadcaster> power_monitor_message_broadcaster_; std::unique_ptr<PublicIpAddressGeolocationProvider>
diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn index 6dc15e5fb..24ecf19 100644 --- a/services/device/geolocation/BUILD.gn +++ b/services/device/geolocation/BUILD.gn
@@ -103,7 +103,7 @@ "wifi_data_provider_chromeos.cc", "wifi_data_provider_chromeos.h", ] - deps += [ "//chromeos/network" ] + deps += [ "//chromeos/ash/components/network" ] } else if (is_linux && use_dbus) { sources += [ "wifi_data_provider_linux.cc",
diff --git a/services/device/public/cpp/BUILD.gn b/services/device/public/cpp/BUILD.gn index 6607cff..f4032e4 100644 --- a/services/device/public/cpp/BUILD.gn +++ b/services/device/public/cpp/BUILD.gn
@@ -49,10 +49,10 @@ "test/fake_usb_device_manager.h", "test/mock_usb_mojo_device.cc", "test/mock_usb_mojo_device.h", - "test/scoped_compute_pressure_manager_overrider.cc", - "test/scoped_compute_pressure_manager_overrider.h", "test/scoped_geolocation_overrider.cc", "test/scoped_geolocation_overrider.h", + "test/scoped_pressure_manager_overrider.cc", + "test/scoped_pressure_manager_overrider.h", "test/test_wake_lock_provider.cc", "test/test_wake_lock_provider.h", ]
diff --git a/services/device/public/cpp/test/scoped_compute_pressure_manager_overrider.cc b/services/device/public/cpp/test/scoped_compute_pressure_manager_overrider.cc deleted file mode 100644 index 39cc207..0000000 --- a/services/device/public/cpp/test/scoped_compute_pressure_manager_overrider.cc +++ /dev/null
@@ -1,103 +0,0 @@ -// Copyright 2022 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 "services/device/public/cpp/test/scoped_compute_pressure_manager_overrider.h" - -#include "base/callback_helpers.h" -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "mojo/public/cpp/bindings/pending_remote.h" -#include "mojo/public/cpp/bindings/receiver_set.h" -#include "mojo/public/cpp/bindings/remote_set.h" -#include "services/device/device_service.h" -#include "services/device/public/mojom/compute_pressure_manager.mojom.h" -#include "services/device/public/mojom/compute_pressure_state.mojom.h" - -namespace device { - -class ScopedComputePressureManagerOverrider::FakeComputePressureManager - : public mojom::ComputePressureManager { - public: - FakeComputePressureManager(); - ~FakeComputePressureManager() override; - - FakeComputePressureManager(const FakeComputePressureManager&) = delete; - FakeComputePressureManager& operator=(const FakeComputePressureManager&) = - delete; - - void Bind(mojo::PendingReceiver<mojom::ComputePressureManager> receiver); - - // mojom::ComputePressureManager implementation. - void AddClient(mojo::PendingRemote<mojom::ComputePressureClient> client, - AddClientCallback callback) override; - - void UpdateClients(const mojom::ComputePressureState& state, - base::Time timestamp); - - void set_is_supported(bool is_supported); - - private: - bool is_supported_ = true; - mojo::ReceiverSet<mojom::ComputePressureManager> receivers_; - mojo::RemoteSet<mojom::ComputePressureClient> clients_; -}; - -ScopedComputePressureManagerOverrider::FakeComputePressureManager:: - FakeComputePressureManager() = default; - -ScopedComputePressureManagerOverrider::FakeComputePressureManager:: - ~FakeComputePressureManager() = default; - -void ScopedComputePressureManagerOverrider::FakeComputePressureManager::Bind( - mojo::PendingReceiver<mojom::ComputePressureManager> receiver) { - receivers_.Add(this, std::move(receiver)); -} - -void ScopedComputePressureManagerOverrider::FakeComputePressureManager:: - AddClient(mojo::PendingRemote<mojom::ComputePressureClient> client, - AddClientCallback callback) { - if (is_supported_) { - clients_.Add(std::move(client)); - std::move(callback).Run(true); - } else { - std::move(callback).Run(false); - } -} - -void ScopedComputePressureManagerOverrider::FakeComputePressureManager:: - UpdateClients(const mojom::ComputePressureState& state, - base::Time timestamp) { - for (auto& client : clients_) - client->ComputePressureStateChanged(state.Clone(), timestamp); -} - -void ScopedComputePressureManagerOverrider::FakeComputePressureManager:: - set_is_supported(bool is_supported) { - is_supported_ = is_supported; -} - -ScopedComputePressureManagerOverrider::ScopedComputePressureManagerOverrider() { - compute_pressure_manager_ = std::make_unique<FakeComputePressureManager>(); - DeviceService::OverrideComputePressureManagerBinderForTesting( - base::BindRepeating(&FakeComputePressureManager::Bind, - base::Unretained(compute_pressure_manager_.get()))); -} - -ScopedComputePressureManagerOverrider:: - ~ScopedComputePressureManagerOverrider() { - DeviceService::OverrideComputePressureManagerBinderForTesting( - base::NullCallback()); -} - -void ScopedComputePressureManagerOverrider::UpdateClients( - const mojom::ComputePressureState& state, - base::Time timestamp) { - compute_pressure_manager_->UpdateClients(state, timestamp); -} - -void ScopedComputePressureManagerOverrider::set_is_supported( - bool is_supported) { - compute_pressure_manager_->set_is_supported(is_supported); -} - -} // namespace device
diff --git a/services/device/public/cpp/test/scoped_compute_pressure_manager_overrider.h b/services/device/public/cpp/test/scoped_compute_pressure_manager_overrider.h deleted file mode 100644 index 346dcc7..0000000 --- a/services/device/public/cpp/test/scoped_compute_pressure_manager_overrider.h +++ /dev/null
@@ -1,36 +0,0 @@ -// Copyright 2022 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 SERVICES_DEVICE_PUBLIC_CPP_TEST_SCOPED_COMPUTE_PRESSURE_MANAGER_OVERRIDER_H_ -#define SERVICES_DEVICE_PUBLIC_CPP_TEST_SCOPED_COMPUTE_PRESSURE_MANAGER_OVERRIDER_H_ - -#include "base/memory/raw_ptr.h" -#include "base/time/time.h" -#include "services/device/public/mojom/compute_pressure_state.mojom.h" - -namespace device { - -class ScopedComputePressureManagerOverrider { - public: - ScopedComputePressureManagerOverrider(); - ~ScopedComputePressureManagerOverrider(); - - ScopedComputePressureManagerOverrider( - const ScopedComputePressureManagerOverrider&) = delete; - ScopedComputePressureManagerOverrider& operator=( - const ScopedComputePressureManagerOverrider&) = delete; - - void UpdateClients(const mojom::ComputePressureState& state, - base::Time timestamp); - - void set_is_supported(bool is_supported); - - private: - class FakeComputePressureManager; - std::unique_ptr<FakeComputePressureManager> compute_pressure_manager_; -}; - -} // namespace device - -#endif // SERVICES_DEVICE_PUBLIC_CPP_TEST_SCOPED_COMPUTE_PRESSURE_MANAGER_OVERRIDER_H_
diff --git a/services/device/public/cpp/test/scoped_pressure_manager_overrider.cc b/services/device/public/cpp/test/scoped_pressure_manager_overrider.cc new file mode 100644 index 0000000..dfdf033 --- /dev/null +++ b/services/device/public/cpp/test/scoped_pressure_manager_overrider.cc
@@ -0,0 +1,97 @@ +// Copyright 2022 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 "services/device/public/cpp/test/scoped_pressure_manager_overrider.h" + +#include "base/callback_helpers.h" +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "mojo/public/cpp/bindings/pending_remote.h" +#include "mojo/public/cpp/bindings/receiver_set.h" +#include "mojo/public/cpp/bindings/remote_set.h" +#include "services/device/device_service.h" +#include "services/device/public/mojom/pressure_manager.mojom.h" +#include "services/device/public/mojom/pressure_state.mojom.h" + +namespace device { + +class ScopedPressureManagerOverrider::FakePressureManager + : public mojom::PressureManager { + public: + FakePressureManager(); + ~FakePressureManager() override; + + FakePressureManager(const FakePressureManager&) = delete; + FakePressureManager& operator=(const FakePressureManager&) = delete; + + void Bind(mojo::PendingReceiver<mojom::PressureManager> receiver); + + // mojom::PressureManager implementation. + void AddClient(mojo::PendingRemote<mojom::PressureClient> client, + AddClientCallback callback) override; + + void UpdateClients(const mojom::PressureState& state, base::Time timestamp); + + void set_is_supported(bool is_supported); + + private: + bool is_supported_ = true; + mojo::ReceiverSet<mojom::PressureManager> receivers_; + mojo::RemoteSet<mojom::PressureClient> clients_; +}; + +ScopedPressureManagerOverrider::FakePressureManager::FakePressureManager() = + default; + +ScopedPressureManagerOverrider::FakePressureManager::~FakePressureManager() = + default; + +void ScopedPressureManagerOverrider::FakePressureManager::Bind( + mojo::PendingReceiver<mojom::PressureManager> receiver) { + receivers_.Add(this, std::move(receiver)); +} + +void ScopedPressureManagerOverrider::FakePressureManager::AddClient( + mojo::PendingRemote<mojom::PressureClient> client, + AddClientCallback callback) { + if (is_supported_) { + clients_.Add(std::move(client)); + std::move(callback).Run(true); + } else { + std::move(callback).Run(false); + } +} + +void ScopedPressureManagerOverrider::FakePressureManager::UpdateClients( + const mojom::PressureState& state, + base::Time timestamp) { + for (auto& client : clients_) + client->PressureStateChanged(state.Clone(), timestamp); +} + +void ScopedPressureManagerOverrider::FakePressureManager::set_is_supported( + bool is_supported) { + is_supported_ = is_supported; +} + +ScopedPressureManagerOverrider::ScopedPressureManagerOverrider() { + pressure_manager_ = std::make_unique<FakePressureManager>(); + DeviceService::OverridePressureManagerBinderForTesting(base::BindRepeating( + &FakePressureManager::Bind, base::Unretained(pressure_manager_.get()))); +} + +ScopedPressureManagerOverrider::~ScopedPressureManagerOverrider() { + DeviceService::OverridePressureManagerBinderForTesting(base::NullCallback()); +} + +void ScopedPressureManagerOverrider::UpdateClients( + const mojom::PressureState& state, + base::Time timestamp) { + pressure_manager_->UpdateClients(state, timestamp); +} + +void ScopedPressureManagerOverrider::set_is_supported(bool is_supported) { + pressure_manager_->set_is_supported(is_supported); +} + +} // namespace device
diff --git a/services/device/public/cpp/test/scoped_pressure_manager_overrider.h b/services/device/public/cpp/test/scoped_pressure_manager_overrider.h new file mode 100644 index 0000000..d803b5e --- /dev/null +++ b/services/device/public/cpp/test/scoped_pressure_manager_overrider.h
@@ -0,0 +1,34 @@ +// Copyright 2022 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 SERVICES_DEVICE_PUBLIC_CPP_TEST_SCOPED_PRESSURE_MANAGER_OVERRIDER_H_ +#define SERVICES_DEVICE_PUBLIC_CPP_TEST_SCOPED_PRESSURE_MANAGER_OVERRIDER_H_ + +#include "base/time/time.h" +#include "services/device/public/mojom/pressure_state.mojom.h" + +namespace device { + +class ScopedPressureManagerOverrider { + public: + ScopedPressureManagerOverrider(); + ~ScopedPressureManagerOverrider(); + + ScopedPressureManagerOverrider(const ScopedPressureManagerOverrider&) = + delete; + ScopedPressureManagerOverrider& operator=( + const ScopedPressureManagerOverrider&) = delete; + + void UpdateClients(const mojom::PressureState& state, base::Time timestamp); + + void set_is_supported(bool is_supported); + + private: + class FakePressureManager; + std::unique_ptr<FakePressureManager> pressure_manager_; +}; + +} // namespace device + +#endif // SERVICES_DEVICE_PUBLIC_CPP_TEST_SCOPED_PRESSURE_MANAGER_OVERRIDER_H_
diff --git a/services/device/public/mojom/BUILD.gn b/services/device/public/mojom/BUILD.gn index 1a1ce81..8b55dd8 100644 --- a/services/device/public/mojom/BUILD.gn +++ b/services/device/public/mojom/BUILD.gn
@@ -12,8 +12,6 @@ "battery_monitor.mojom", "battery_status.mojom", "bluetooth_system.mojom", - "compute_pressure_manager.mojom", - "compute_pressure_state.mojom", "device_posture_provider.mojom", "fingerprint.mojom", "geolocation.mojom", @@ -26,6 +24,8 @@ "nfc.mojom", "nfc_provider.mojom", "power_monitor.mojom", + "pressure_manager.mojom", + "pressure_state.mojom", "public_ip_address_geolocation_provider.mojom", "screen_orientation.mojom", "screen_orientation_lock_types.mojom",
diff --git a/services/device/public/mojom/compute_pressure_manager.mojom b/services/device/public/mojom/compute_pressure_manager.mojom deleted file mode 100644 index b96982375..0000000 --- a/services/device/public/mojom/compute_pressure_manager.mojom +++ /dev/null
@@ -1,22 +0,0 @@ -// Copyright 2022 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. - -module device.mojom; - -import "mojo/public/mojom/base/time.mojom"; -import "services/device/public/mojom/compute_pressure_state.mojom"; - -// This interface is used to get the compute pressure state. -interface ComputePressureManager { - // Add a client that will be notified on ComputePressureStateChanged. - AddClient(pending_remote<ComputePressureClient> client) => (bool success); -}; - -// Interface that client of the ComputePressureManager interface must -// implement to observe compute pressure state changes. -interface ComputePressureClient { - // Interface used to notify compute pressure state changes. - ComputePressureStateChanged(ComputePressureState state, - mojo_base.mojom.Time timestamp); -};
diff --git a/services/device/public/mojom/device_service.mojom b/services/device/public/mojom/device_service.mojom index 9a62fc0b..e9298011 100644 --- a/services/device/public/mojom/device_service.mojom +++ b/services/device/public/mojom/device_service.mojom
@@ -5,12 +5,12 @@ module device.mojom; import "services/device/public/mojom/battery_monitor.mojom"; -import "services/device/public/mojom/compute_pressure_manager.mojom"; import "services/device/public/mojom/fingerprint.mojom"; import "services/device/public/mojom/geolocation_config.mojom"; import "services/device/public/mojom/geolocation_context.mojom"; import "services/device/public/mojom/geolocation_control.mojom"; import "services/device/public/mojom/power_monitor.mojom"; +import "services/device/public/mojom/pressure_manager.mojom"; import "services/device/public/mojom/public_ip_address_geolocation_provider.mojom"; import "services/device/public/mojom/screen_orientation.mojom"; import "services/device/public/mojom/sensor_provider.mojom"; @@ -66,8 +66,8 @@ // Binds a BatteryMonitor endpoint. BindBatteryMonitor(pending_receiver<BatteryMonitor> receiver); - // Binds a ComputePressureManager endpoint. - BindComputePressureManager(pending_receiver<ComputePressureManager> receiver); + // Binds a PressureManager endpoint. + BindPressureManager(pending_receiver<PressureManager> receiver); // Binds a NFCProvider endpoint. [EnableIf=is_android]
diff --git a/services/device/public/mojom/pressure_manager.mojom b/services/device/public/mojom/pressure_manager.mojom new file mode 100644 index 0000000..d51f037 --- /dev/null +++ b/services/device/public/mojom/pressure_manager.mojom
@@ -0,0 +1,29 @@ +// Copyright 2022 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. + +module device.mojom; + +import "mojo/public/mojom/base/time.mojom"; +import "services/device/public/mojom/pressure_state.mojom"; + +// This interface is used to get the PressureState. +// +// This interface is implemented by PressureManagerImpl and lives in the Device +// Service. PressureServiceImpl in content/browser uses this interface to +// subscribe to notification about PressureStateChanged. +interface PressureManager { + // Add a client that will be notified on PressureStateChanged. + AddClient(pending_remote<PressureClient> client) => (bool success); +}; + +// Interface that client of the PressureManager interface must +// implement to observe PressureState changes. +// +// This interface is implemented by PressureServiceImpl in content/browser. +// PressureManagerImpl uses this interface to notify PressureServiceImpl about +// PressureStateChanged. +interface PressureClient { + // Interface used to notify PressureState changes. + PressureStateChanged(PressureState state, mojo_base.mojom.Time timestamp); +};
diff --git a/services/device/public/mojom/compute_pressure_state.mojom b/services/device/public/mojom/pressure_state.mojom similarity index 92% rename from services/device/public/mojom/compute_pressure_state.mojom rename to services/device/public/mojom/pressure_state.mojom index ae2913d..4545c2c 100644 --- a/services/device/public/mojom/compute_pressure_state.mojom +++ b/services/device/public/mojom/pressure_state.mojom
@@ -5,7 +5,7 @@ module device.mojom; // Represents availability of compute resources. -struct ComputePressureState { +struct PressureState { // Average utilization of all CPU cores. // // Values use a scale from 0.0 (no utilization) to 1.0 (100% utilization).
diff --git a/services/network/network_service_memory_cache.cc b/services/network/network_service_memory_cache.cc index 2d6c244..7f4fe95 100644 --- a/services/network/network_service_memory_cache.cc +++ b/services/network/network_service_memory_cache.cc
@@ -48,8 +48,8 @@ }; // Collected from kPassThroughHeaders, kValidationHeaders, kForceFetchHeaders, -// kForceValidateHeaders, in //net/http/http_cache_transaction.cc. *If* we ship -// the in-memory network memory cache, it'd be worthwhile to remove the +// kForceValidateHeaders, in //net/http/http_cache_transaction.cc. +// TODO(https://crbug.com/1339708): It'd be worthwhile to remove the // duplication. constexpr HeaderNameAndValue kSpecialHeaders[] = { {"if-unmodified-since", nullptr}, @@ -60,6 +60,8 @@ {"cache-control", "no-cache"}, {"pragma", "no-cache"}, {"cache-control", "max-age=0"}, + // The in-memory cache doesn't support range requests. + {"range", nullptr}, }; // TODO(https://crbug.com/1339708): Adjust these parameters based on stats. @@ -76,7 +78,8 @@ kStale = 1, kUsed = 2, kVaryMismatch = 3, - kMaxValue = kVaryMismatch, + kBlockedByRequestHeaders = 4, + kMaxValue = kBlockedByRequestHeaders, }; void RecordEntryStatus(EntryStatus result) { @@ -175,6 +178,24 @@ return true; } +bool CheckSpecialRequestHeaders(const net::HttpRequestHeaders& headers) { + for (const auto& [name, value] : kSpecialHeaders) { + std::string header_value; + if (!headers.GetHeader(name, &header_value)) + continue; + // `nullptr` means `header_value` doesn't matter. + if (value == nullptr) + return false; + net::HttpUtil::ValuesIterator v(header_value.begin(), header_value.end(), + ','); + while (v.GetNext()) { + if (base::EqualsCaseInsensitiveASCII(v.value_piece(), value)) + return false; + } + } + return true; +} + bool MatchVaryHeader(const ResourceRequest& resource_request, const net::HttpVaryData& vary_data, const net::HttpResponseHeaders& cached_response_headers, @@ -282,24 +303,8 @@ return nullptr; } - for (const auto& [name, value] : kSpecialHeaders) { - std::string header_value; - if (!url_request->extra_request_headers().GetHeader(name, &header_value)) { - continue; - } - if (value == nullptr) { - // `nullptr` is a wildcard symbol. - return nullptr; - } - - net::HttpUtil::ValuesIterator v(header_value.begin(), header_value.end(), - ','); - while (v.GetNext()) { - if (base::EqualsCaseInsensitiveASCII(v.value_piece(), value)) { - return nullptr; - } - } - } + if (!CheckSpecialRequestHeaders(url_request->extra_request_headers())) + return nullptr; if (response->content_length > static_cast<int>(max_per_entry_bytes_)) return nullptr; @@ -399,6 +404,11 @@ return absl::nullopt; } + if (!CheckSpecialRequestHeaders(resource_request.headers)) { + RecordEntryStatus(EntryStatus::kBlockedByRequestHeaders); + return absl::nullopt; + } + absl::optional<std::string> cache_key = GenerateCacheKeyForResourceRequest( resource_request, network_isolation_key); if (!cache_key.has_value())
diff --git a/services/network/network_service_memory_cache_unittest.cc b/services/network/network_service_memory_cache_unittest.cc index 3e1d7f65..ef7dfe0 100644 --- a/services/network/network_service_memory_cache_unittest.cc +++ b/services/network/network_service_memory_cache_unittest.cc
@@ -563,6 +563,33 @@ ASSERT_FALSE(CanServeFromMemoryCache(request)); } +TEST_F(NetworkServiceMemoryCacheTest, CanServe_BlockedByRequestHeaders) { + constexpr const char* kSpecialHeaders[][2] = { + {"if-Unmodified-since", "foo"}, + {"if-mAtch", "foo"}, + {"if-raNge", "foo"}, + {"if-modiFied-since", "foo"}, + {"IF-NONE-MATCH", "foo"}, + {"cachE-control", "no-cache"}, + {"praGma", "no-cache"}, + {"Cache-Control", "max-age=0"}, + {"Range", "bytes=0-"}, + }; + + // Store a response to the in-memory cache first. + { + ResourceRequest request = CreateRequest("/cacheable"); + StoreResponseToMemoryCache(request); + } + + for (const auto& [name, value] : kSpecialHeaders) { + SCOPED_TRACE(base::StringPrintf("header='%s', value='%s'", name, value)); + ResourceRequest request = CreateRequest("/cacheable"); + request.headers.SetHeader(name, value); + ASSERT_FALSE(CanServeFromMemoryCache(request)); + } +} + TEST_F(NetworkServiceMemoryCacheTest, CanServe_Expired) { const uint64_t kMaxAge = 60; ResourceRequest request =
diff --git a/testing/buildbot/chromium.android.fyi.json b/testing/buildbot/chromium.android.fyi.json index 34c857f5..39ccc6c 100644 --- a/testing/buildbot/chromium.android.fyi.json +++ b/testing/buildbot/chromium.android.fyi.json
@@ -8267,15 +8267,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", + "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/SystemWebView.apk", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -8301,7 +8301,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -8386,7 +8386,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -8777,15 +8777,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--test-expectations", - "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--implementation-outdir", "../../weblayer_instrumentation_test_M103/out/Release", + "--test-expectations", + "../../weblayer/browser/android/javatests/skew/expectations.txt", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -8811,7 +8811,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -8896,7 +8896,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.android.json b/testing/buildbot/chromium.android.json index 949e7fb..34c0e84 100644 --- a/testing/buildbot/chromium.android.json +++ b/testing/buildbot/chromium.android.json
@@ -46513,15 +46513,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", + "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/SystemWebView.apk", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -46547,7 +46547,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -46632,7 +46632,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47023,15 +47023,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--test-expectations", - "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--implementation-outdir", "../../weblayer_instrumentation_test_M103/out/Release", + "--test-expectations", + "../../weblayer/browser/android/javatests/skew/expectations.txt", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -47057,7 +47057,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47142,7 +47142,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47537,15 +47537,15 @@ { "args": [ "--additional-apk=apks/ChromePublic.apk", + "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/SystemWebView.apk", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -47571,7 +47571,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -47656,7 +47656,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -48047,15 +48047,15 @@ { "args": [ "--additional-apk=apks/ChromePublic.apk", + "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--test-expectations", - "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/AOSP_SystemWebView.apk", "--implementation-outdir", "../../weblayer_instrumentation_test_M103/out/Release", + "--test-expectations", + "../../weblayer/browser/android/javatests/skew/expectations.txt", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -48081,7 +48081,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -48166,7 +48166,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -48629,15 +48629,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", + "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/SystemWebView.apk", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -48663,7 +48663,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -48748,7 +48748,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -49139,15 +49139,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", + "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--test-expectations", - "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/SystemWebView.apk", "--implementation-outdir", "../../weblayer_instrumentation_test_M103/out/Release", + "--test-expectations", + "../../weblayer/browser/android/javatests/skew/expectations.txt", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -49173,7 +49173,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -49258,7 +49258,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -49721,15 +49721,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", + "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", + "--client-outdir", + "../../weblayer_instrumentation_test_M103/out/Release", "--implementation-outdir", ".", "--test-expectations", "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/SystemWebView.apk", - "--client-outdir", - "../../weblayer_instrumentation_test_M103/out/Release", "--client-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -49755,7 +49755,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -49840,7 +49840,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -50231,15 +50231,15 @@ { "args": [ "--additional-apk=apks/WebLayerShellSystemWebView.apk", + "--webview-apk-path=apks/SystemWebView.apk", "--test-runner-outdir", ".", "--client-outdir", ".", - "--test-expectations", - "../../weblayer/browser/android/javatests/skew/expectations.txt", - "--webview-apk-path=apks/SystemWebView.apk", "--implementation-outdir", "../../weblayer_instrumentation_test_M103/out/Release", + "--test-expectations", + "../../weblayer/browser/android/javatests/skew/expectations.txt", "--impl-version=103", "--gs-results-bucket=chromium-result-details", "--recover-devices", @@ -50265,7 +50265,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M103", - "revision": "version:103.0.5060.138" + "revision": "version:103.0.5060.139" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}", @@ -50350,7 +50350,7 @@ { "cipd_package": "chromium/testing/weblayer-x86", "location": "weblayer_instrumentation_test_M104", - "revision": "version:104.0.5112.55" + "revision": "version:104.0.5112.57" }, { "cipd_package": "infra/tools/luci/logdog/butler/${platform}",
diff --git a/testing/buildbot/chromium.perf.fyi.json b/testing/buildbot/chromium.perf.fyi.json index 37d61cd..2bd3d965 100644 --- a/testing/buildbot/chromium.perf.fyi.json +++ b/testing/buildbot/chromium.perf.fyi.json
@@ -110,8 +110,7 @@ "--use-dynamic-shards" ], "requires_simultaneous_shard_dispatch": true, - "script": "//testing/trigger_scripts/perf_device_trigger.py", - "trigger_in_py3": true + "script": "//testing/trigger_scripts/perf_device_trigger.py" } } ] @@ -400,8 +399,7 @@ "True" ], "requires_simultaneous_shard_dispatch": true, - "script": "//testing/trigger_scripts/perf_device_trigger.py", - "trigger_in_py3": true + "script": "//testing/trigger_scripts/perf_device_trigger.py" } } ] @@ -451,8 +449,7 @@ "True" ], "requires_simultaneous_shard_dispatch": true, - "script": "//testing/trigger_scripts/perf_device_trigger.py", - "trigger_in_py3": true + "script": "//testing/trigger_scripts/perf_device_trigger.py" } } ]
diff --git a/testing/buildbot/chromium.perf.json b/testing/buildbot/chromium.perf.json index ffc9b61..5710e4b 100644 --- a/testing/buildbot/chromium.perf.json +++ b/testing/buildbot/chromium.perf.json
@@ -2438,7 +2438,7 @@ "dimension_sets": [ { "cpu": "x86-64", - "os": "Windows", + "os": "Windows-10", "pool": "chrome.tests" } ],
diff --git a/testing/buildbot/variants.pyl b/testing/buildbot/variants.pyl index 5ad3faf..707656a 100644 --- a/testing/buildbot/variants.pyl +++ b/testing/buildbot/variants.pyl
@@ -546,23 +546,23 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M104', - 'revision': 'version:104.0.5112.55', + 'revision': 'version:104.0.5112.57', } ], }, }, 'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': { 'args': [ + '--webview-apk-path=apks/AOSP_SystemWebView.apk', '--test-runner-outdir', '.', '--client-outdir', '.', - '--test-expectations', - '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--webview-apk-path=apks/AOSP_SystemWebView.apk', '--implementation-outdir', '../../weblayer_instrumentation_test_M103/out/Release', - '--impl-version=103' + '--test-expectations', + '../../weblayer/browser/android/javatests/skew/expectations.txt', + '--impl-version=103', ], 'identifier': 'with_impl_from_103', 'swarming': { @@ -570,10 +570,10 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M103', - 'revision': 'version:103.0.5060.138' + 'revision': 'version:103.0.5060.139', } - ] - } + ], + }, }, 'WEBLAYER_10_AND_M_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': { 'args': [ @@ -690,23 +690,23 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M104', - 'revision': 'version:104.0.5112.55', + 'revision': 'version:104.0.5112.57', } ], }, }, 'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': { 'args': [ + '--webview-apk-path=apks/SystemWebView.apk', '--test-runner-outdir', '.', '--client-outdir', '.', - '--test-expectations', - '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--webview-apk-path=apks/SystemWebView.apk', '--implementation-outdir', '../../weblayer_instrumentation_test_M103/out/Release', - '--impl-version=103' + '--test-expectations', + '../../weblayer/browser/android/javatests/skew/expectations.txt', + '--impl-version=103', ], 'identifier': 'with_impl_from_103', 'swarming': { @@ -714,10 +714,10 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M103', - 'revision': 'version:103.0.5060.138' + 'revision': 'version:103.0.5060.139', } - ] - } + ], + }, }, 'WEBLAYER_IMPL_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': { 'args': [ @@ -834,23 +834,23 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M104', - 'revision': 'version:104.0.5112.55', + 'revision': 'version:104.0.5112.57', } ], }, }, 'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_ONE_MILESTONE': { 'args': [ + '--webview-apk-path=apks/SystemWebView.apk', '--test-runner-outdir', '.', + '--client-outdir', + '../../weblayer_instrumentation_test_M103/out/Release', '--implementation-outdir', '.', '--test-expectations', '../../weblayer/browser/android/javatests/skew/expectations.txt', - '--webview-apk-path=apks/SystemWebView.apk', - '--client-outdir', - '../../weblayer_instrumentation_test_M103/out/Release', - '--client-version=103' + '--client-version=103', ], 'identifier': 'with_client_from_103', 'swarming': { @@ -858,10 +858,10 @@ { 'cipd_package': 'chromium/testing/weblayer-x86', 'location': 'weblayer_instrumentation_test_M103', - 'revision': 'version:103.0.5060.138' + 'revision': 'version:103.0.5060.139', } - ] - } + ], + }, }, 'WEBLAYER_CLIENT_SKEW_TESTS_NTH_MINUS_TWO_MILESTONE': { 'args': [
diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json index df5a71fa..0a67e0b 100644 --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json
@@ -961,6 +961,27 @@ ] } ], + "AutofillEnforceDelaysInStrikeDatabase": [ + { + "platforms": [ + "android", + "chromeos", + "chromeos_lacros", + "ios", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "AutofillEnforceDelaysInStrikeDatabase" + ] + } + ] + } + ], "AutofillFillAndImportFromMoreFields": [ { "platforms": [ @@ -1715,6 +1736,25 @@ ] } ], + "BackForwardCacheEnabledForNonPluginEmbed": [ + { + "platforms": [ + "android", + "chromeos", + "linux", + "mac", + "windows" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "BackForwardCacheEnabledForNonPluginEmbed" + ] + } + ] + } + ], "BackForwardCacheExtendTimeToLive": [ { "platforms": [ @@ -3049,29 +3089,6 @@ ] } ], - "DelayAsyncScriptExecution": [ - { - "platforms": [ - "android", - "chromeos", - "chromeos_lacros", - "linux", - "mac", - "windows" - ], - "experiments": [ - { - "name": "Enabled", - "params": { - "delay_type": "first_paint_or_finished_parsing" - }, - "enable_features": [ - "DelayAsyncScriptExecution" - ] - } - ] - } - ], "DelayFirstParkingOfStrings": [ { "platforms": [ @@ -6557,6 +6574,21 @@ ] } ], + "PartialCustomTabs": [ + { + "platforms": [ + "android" + ], + "experiments": [ + { + "name": "Enabled", + "enable_features": [ + "CCTResizableAllowResizeByUserGesture" + ] + } + ] + } + ], "PartitionAllocBackupRefPtr": [ { "platforms": [
diff --git a/third_party/blink/public/mojom/BUILD.gn b/third_party/blink/public/mojom/BUILD.gn index 3d5b9de..1b0f047 100644 --- a/third_party/blink/public/mojom/BUILD.gn +++ b/third_party/blink/public/mojom/BUILD.gn
@@ -43,7 +43,7 @@ "clipboard/clipboard.mojom", "close_watcher/close_listener.mojom", "commit_result/commit_result.mojom", - "compute_pressure/compute_pressure.mojom", + "compute_pressure/pressure_service.mojom", "content_index/content_index.mojom", "context_menu/context_menu.mojom", "conversions/attribution_data_host.mojom",
diff --git a/third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom b/third_party/blink/public/mojom/compute_pressure/pressure_service.mojom similarity index 73% rename from third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom rename to third_party/blink/public/mojom/compute_pressure/pressure_service.mojom index d84f881..7ee4d33 100644 --- a/third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom +++ b/third_party/blink/public/mojom/compute_pressure/pressure_service.mojom
@@ -4,9 +4,9 @@ module blink.mojom; -import "services/device/public/mojom/compute_pressure_state.mojom"; +import "services/device/public/mojom/pressure_state.mojom"; -// Specifies a quantization scheme for the data in a ComputePressureState. +// Specifies a quantization scheme for the data in a PressureState. // // Each array of thresholds subdivides the interval [0.0, 1.0]. The array must // not contain the 0.0 and 1.0 values, as they are implied. For example, the @@ -18,32 +18,32 @@ // example above would report a CPU utilization value of 0.51 as 0.65. This is // because 0.51 falls in the sub-interval [0.5, 0.8], and the center of that // interval is 0.65, the average of 0.5 and 0.8. -struct ComputePressureQuantization { +struct PressureQuantization { array<double> cpu_utilization_thresholds; }; -// The maximum size of ComputePressureQuantization.cpu_utilization_thresholds. -const int32 kMaxComputePressureCpuUtilizationThresholds = 3; +// The maximum size of PressureQuantization.cpu_utilization_thresholds. +const int32 kMaxPressureCpuUtilizationThresholds = 3; // Implemented by renderers to receive compute pressure info from the browser. // -// The values in the ComputePressureState reported to the renderer are always -// quantized according to a ComputePressureQuantization scheme. -interface ComputePressureObserver { +// The values in the PressureState reported to the renderer are always +// quantized according to a PressureQuantization scheme. +interface PressureObserver { // Called in the following circumstances. // // 1. Once after an observer is created. - // 2. When the (quantized) compute pressure state differs from the previously + // 2. When the (quantized) PressureState differs from the previously // reported state. // // Updates to an observer are rate-limited. Observers that belong to visible // pages receive updates at most once a second, while other observers are // limited to at most one update in 10 seconds. - OnUpdate(device.mojom.ComputePressureState state); + OnUpdate(device.mojom.PressureState state); }; -// Result of ComputePressureService.AddObserver(). -enum ComputePressureStatus { +// Result of PressureService.AddObserver(). +enum PressureStatus { kOk, // The underlying platform does not report compute pressure information. @@ -62,8 +62,8 @@ // The interface is implemented in the browser and consumed by renderers. The // interface is only accessible to frames (and not workers). Each frame that // accesses the API creates a separate connection. -interface ComputePressureService { - // Subscribes to updates on the device's compute pressure state. +interface PressureService { + // Subscribes to updates on the device's PressureState. // // The reported state will be quantized according to the `quantization` // scheme. `quantization` must be a valid quantization scheme. @@ -76,7 +76,7 @@ // belonging to the same frame, the conflict is resolved by stopping all the // frame's pre-existing active observers. In other words, after AddObserver() // completes, the newly created observer will be the only active observer. - AddObserver(pending_remote<ComputePressureObserver> observer, - ComputePressureQuantization quantization) - => (ComputePressureStatus status); + AddObserver(pending_remote<PressureObserver> observer, + PressureQuantization quantization) + => (PressureStatus status); };
diff --git a/third_party/blink/public/mojom/use_counter/metrics/css_property_id.mojom b/third_party/blink/public/mojom/use_counter/metrics/css_property_id.mojom index 3336336..e7f4e304 100644 --- a/third_party/blink/public/mojom/use_counter/metrics/css_property_id.mojom +++ b/third_party/blink/public/mojom/use_counter/metrics/css_property_id.mojom
@@ -771,6 +771,7 @@ kToggle = 718, kAnchorName = 719, kPositionFallback = 720, + kAnchorScroll = 721, // 1. Add new features above this line (don't change the assigned numbers of // the existing items). // 2. Run the src/tools/metrics/histograms/update_use_counter_css.py script
diff --git a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom index 9cd0617..079c62b 100644 --- a/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom +++ b/third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom
@@ -3207,8 +3207,8 @@ kWebBluetoothManufacturerDataFilter = 3896, kSanitizerAPIGetConfig = 3897, kSanitizerAPIGetDefaultConfig = 3898, - kComputePressureObserver_Constructor = 3899, - kComputePressureObserver_Observe = 3900, + kPressureObserver_Constructor = 3899, + kPressureObserver_Observe = 3900, kOBSOLETE_ComputePressureObserver_Stop = 3901, kWebAppWindowControlsOverlay = 3902, kPaymentRequestShowWithoutGestureOrToken = 3903, @@ -3502,9 +3502,9 @@ kBluetoothDeviceForget = 4181, kTopicsAPI_BrowsingTopics_Method = 4182, kBlockingAttributeRenderToken = 4183, - kComputePressureObserver_Unobserve = 4184, - kComputePressureObserver_Disconnect = 4185, - kComputePressureObserver_TakeRecords = 4186, + kPressureObserver_Unobserve = 4184, + kPressureObserver_Disconnect = 4185, + kPressureObserver_TakeRecords = 4186, kPrivacySandboxAdsAPIs = 4187, kFledge = 4188, kElementShowPopup = 4189,
diff --git a/third_party/blink/renderer/bindings/generated_in_modules.gni b/third_party/blink/renderer/bindings/generated_in_modules.gni index 1112aa7..24205ad 100644 --- a/third_party/blink/renderer/bindings/generated_in_modules.gni +++ b/third_party/blink/renderer/bindings/generated_in_modules.gni
@@ -237,12 +237,6 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_color_selection_options.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_color_selection_result.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_color_selection_result.h", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_observer_options.cc", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_observer_options.h", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_record.cc", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_record.h", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_source.cc", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_source.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_constant_source_options.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_constant_source_options.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_constrain_boolean_parameters.cc", @@ -781,6 +775,12 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_presentation_connection_close_event_init.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_presentation_source.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_presentation_source.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_observer_options.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_observer_options.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_record.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_record.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_source.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_source.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_creation_options.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_creation_options.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential_descriptor.cc", @@ -1607,10 +1607,6 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_close_event.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compression_stream.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compression_stream.h", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_observer.cc", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_observer.h", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_update_callback.cc", - "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_update_callback.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_constant_source_node.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_constant_source_node.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_contact_address.cc", @@ -2147,6 +2143,10 @@ "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_presentation_receiver.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_presentation_request.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_presentation_request.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_observer.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_observer.h", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_update_callback.cc", + "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_pressure_update_callback.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential.cc", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_public_key_credential.h", "$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_push_event.cc",
diff --git a/third_party/blink/renderer/bindings/idl_in_modules.gni b/third_party/blink/renderer/bindings/idl_in_modules.gni index d1d06fe..be41d979 100644 --- a/third_party/blink/renderer/bindings/idl_in_modules.gni +++ b/third_party/blink/renderer/bindings/idl_in_modules.gni
@@ -110,10 +110,10 @@ "//third_party/blink/renderer/modules/clipboard/navigator_clipboard.idl", "//third_party/blink/renderer/modules/compression/compression_stream.idl", "//third_party/blink/renderer/modules/compression/decompression_stream.idl", - "//third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.idl", - "//third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer_options.idl", - "//third_party/blink/renderer/modules/compute_pressure/compute_pressure_record.idl", - "//third_party/blink/renderer/modules/compute_pressure/compute_pressure_update_callback.idl", + "//third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl", + "//third_party/blink/renderer/modules/compute_pressure/pressure_observer_options.idl", + "//third_party/blink/renderer/modules/compute_pressure/pressure_record.idl", + "//third_party/blink/renderer/modules/compute_pressure/pressure_update_callback.idl", "//third_party/blink/renderer/modules/contacts_picker/contact_address.idl", "//third_party/blink/renderer/modules/contacts_picker/contact_info.idl", "//third_party/blink/renderer/modules/contacts_picker/contacts_manager.idl",
diff --git a/third_party/blink/renderer/core/css/css_properties.json5 b/third_party/blink/renderer/core/css/css_properties.json5 index 0a11e60..c113bba7 100644 --- a/third_party/blink/renderer/core/css/css_properties.json5 +++ b/third_party/blink/renderer/core/css/css_properties.json5
@@ -1432,6 +1432,18 @@ runtime_flag: "CSSAnchorPositioning", }, { + name: "anchor-scroll", + property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal" ], + type_name: "AtomicString", + default_value: "g_null_atom", + field_group: "*", + field_template: "external", + converter: "ConvertNoneOrCustomIdent", + keywords: ["none"], + typedom_types: ["Keyword"], + runtime_flag: "CSSAnchorPositioning", + }, + { name: "aspect-ratio", property_methods: ["ParseSingleValue", "CSSValueFromComputedStyleInternal"], interpolable: true,
diff --git a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc index afcb4a50..b38b503 100644 --- a/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc +++ b/third_party/blink/renderer/core/css/properties/longhands/longhands_custom.cc
@@ -152,6 +152,25 @@ return MakeGarbageCollected<CSSCustomIdentValue>(style.AnchorName()); } +const CSSValue* AnchorScroll::ParseSingleValue( + CSSParserTokenRange& range, + const CSSParserContext& context, + const CSSParserLocalContext&) const { + if (CSSValue* value = + css_parsing_utils::ConsumeIdent<CSSValueID::kNone>(range)) { + return value; + } + return css_parsing_utils::ConsumeDashedIdent(range, context); +} +const CSSValue* AnchorScroll::CSSValueFromComputedStyleInternal( + const ComputedStyle& style, + const LayoutObject*, + bool allow_visited_style) const { + if (style.AnchorScroll().IsEmpty()) + return CSSIdentifierValue::Create(CSSValueID::kNone); + return MakeGarbageCollected<CSSCustomIdentValue>(style.AnchorScroll()); +} + const CSSValue* AnimationDelay::ParseSingleValue( CSSParserTokenRange& range, const CSSParserContext& context,
diff --git a/third_party/blink/renderer/core/html/track/vtt/vtt_cue.cc b/third_party/blink/renderer/core/html/track/vtt/vtt_cue.cc index 22a9925..14ed80d 100644 --- a/third_party/blink/renderer/core/html/track/vtt/vtt_cue.cc +++ b/third_party/blink/renderer/core/html/track/vtt/vtt_cue.cc
@@ -131,6 +131,7 @@ VTTCueBackgroundBox::VTTCueBackgroundBox(Document& document) : HTMLDivElement(document) { SetShadowPseudoId(TextTrackCue::CueShadowPseudoId()); + SetHasCustomStyleCallbacks(); } void VTTCueBackgroundBox::Trace(Visitor* visitor) const { @@ -138,6 +139,12 @@ HTMLDivElement::Trace(visitor); } +void VTTCueBackgroundBox::DidRecalcStyle(const StyleRecalcChange change) { + HTMLDivElement::DidRecalcStyle(change); + if (auto* vtt_cue_box = DynamicTo<VTTCueBox>(parentNode())) + vtt_cue_box->RevertAdjustment(); +} + void VTTCueBackgroundBox::SetTrack(TextTrack* track) { track_ = track; }
diff --git a/third_party/blink/renderer/core/html/track/vtt/vtt_cue.h b/third_party/blink/renderer/core/html/track/vtt/vtt_cue.h index fef4d0f..61e6e24c 100644 --- a/third_party/blink/renderer/core/html/track/vtt/vtt_cue.h +++ b/third_party/blink/renderer/core/html/track/vtt/vtt_cue.h
@@ -72,6 +72,8 @@ const TextTrack* GetTrack() const { return track_; } private: + void DidRecalcStyle(const StyleRecalcChange) override; + Member<TextTrack> track_; };
diff --git a/third_party/blink/renderer/core/html/track/vtt/vtt_cue_layout_algorithm.cc b/third_party/blink/renderer/core/html/track/vtt/vtt_cue_layout_algorithm.cc index 3d375ca5..6b2b1184 100644 --- a/third_party/blink/renderer/core/html/track/vtt/vtt_cue_layout_algorithm.cc +++ b/third_party/blink/renderer/core/html/track/vtt/vtt_cue_layout_algorithm.cc
@@ -188,7 +188,9 @@ // 11. Remember the position of all the boxes in boxes as their specified // position. - [[maybe_unused]] const LayoutUnit specified_position = adjusted_position; + const LayoutUnit specified_position = adjusted_position; + + bool switched = false; // 12. Let title area be a box that covers all of the video’s rendering area. gfx::Rect title_area = ToEnclosingRect(container.PhysicalBorderBoxRect()); @@ -225,10 +227,34 @@ continue; } - // TODO(crbug.com/1335309): Implement this. + // 17. Switch direction: If switched is true, then remove all the boxes in + // boxes, and jump to the step labeled done positioning below. + if (switched) { + // Move the cue to the outside of the video rendering area instead of + // removing the boxes. This makes "RevertAdjustment()" simpler. + adjusted_position = full_dimension + 1; + break; + } + + // 18. Otherwise, move all the boxes in boxes back to their specified + // position as determined in the earlier step. + adjusted_position = specified_position; + + // 19. Negate step. + step_ = -step_; + + // 20. Set switched to true. + switched = true; // 21. Jump back to the step labeled step loop. } + + // Set adjusted_position to 'top' or 'left' property as a percentage value, + // which will work well even if the video rendering area is resized. + cue_.SetInlineStyleProperty( + is_horizontal ? CSSPropertyID::kTop : CSSPropertyID::kLeft, + (adjusted_position * 100 / full_dimension).ToDouble(), + CSSPrimitiveValue::UnitType::kPercentage); } void VttCueLayoutAlgorithm::AdjustPositionWithoutSnapToLines() {
diff --git a/third_party/blink/renderer/core/layout/layout_box.cc b/third_party/blink/renderer/core/layout/layout_box.cc index 0550d62..0d1c11c 100644 --- a/third_party/blink/renderer/core/layout/layout_box.cc +++ b/third_party/blink/renderer/core/layout/layout_box.cc
@@ -8079,4 +8079,41 @@ return constraining_rect; } +const LayoutObject* LayoutBox::AnchorScrollObject() const { + if (!StyleRef().AnchorScroll()) + return nullptr; + + if (StyleRef().GetPosition() != EPosition::kAbsolute && + StyleRef().GetPosition() != EPosition::kFixed) { + return nullptr; + } + + NGPhysicalFragmentList containing_block_fragments = + ContainingBlock()->PhysicalFragments(); + if (containing_block_fragments.IsEmpty()) + return nullptr; + + // TODO(crbug.com/1309178): Fix it when the containing block is fragmented. + const NGPhysicalAnchorQuery* anchor_query = + containing_block_fragments.front().AnchorQuery(); + if (!anchor_query) + return nullptr; + + if (const auto& reference = + anchor_query->anchor_references.find(StyleRef().AnchorScroll()); + reference != anchor_query->anchor_references.end()) { + return reference->value->fragment->GetLayoutObject(); + } + return nullptr; +} + +const LayoutBlock* LayoutBox::AnchorScrollContainer() const { + if (const LayoutObject* object = AnchorScrollObject()) { + const LayoutBlock* scroller = object->EnclosingScrollportBox(); + if (scroller != EnclosingScrollportBox()) + return scroller; + } + return nullptr; +} + } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/layout_box.h b/third_party/blink/renderer/core/layout/layout_box.h index 5631472..4cdf87ae 100644 --- a/third_party/blink/renderer/core/layout/layout_box.h +++ b/third_party/blink/renderer/core/layout/layout_box.h
@@ -2127,6 +2127,16 @@ // See StickyPositionScrollingConstraints::constraining_rect. PhysicalRect ComputeStickyConstrainingRect() const; + // Returns the LayoutObject of the anchor element specified by the CSS + // 'anchor-scroll' property. Returns nullptr if the anchor query is invalid. + const LayoutObject* AnchorScrollObject() const; + + // If the AnchorScrollObject() is non-null and in a different scroll + // container, returns that container, so that at paint time, we can apply an + // offset to this element when the returned scroll container is scrolled. + // Returns nullptr otherwise. + const LayoutBlock* AnchorScrollContainer() const; + protected: ~LayoutBox() override;
diff --git a/third_party/blink/renderer/core/layout/layout_box_test.cc b/third_party/blink/renderer/core/layout/layout_box_test.cc index f7bba108..96d89902 100644 --- a/third_party/blink/renderer/core/layout/layout_box_test.cc +++ b/third_party/blink/renderer/core/layout/layout_box_test.cc
@@ -2005,6 +2005,41 @@ GetDocument().getElementById("textarea"))); } +TEST_P(LayoutBoxTest, AnchorScrollObject) { + // LayoutBox::AnchorScrollObject() calculation is NG-only. + if (!RuntimeEnabledFeatures::LayoutNGEnabled()) + return; + + ScopedCSSAnchorPositioningForTest enabled_scope(true); + + SetBodyInnerHTML(R"HTML( + <div style="position: relative"> + <div> + Lorem ipsum + <span id="anchor" style="anchor-name: --a1">anchor</span> + dolor sit amet + </div> + <div id="anchored" style="position: absolute; anchor-scroll: --a1"> + anchored + </div> + <div id="no-anchor" style="position: absolute; anchor-scroll: --b1"> + anchor not found + </div> + </div> + )HTML"); + + UpdateAllLifecyclePhasesForTest(); + + const LayoutBox* anchored = + To<LayoutBox>(GetLayoutObjectByElementId("anchored")); + EXPECT_EQ(anchored->AnchorScrollObject(), + GetLayoutObjectByElementId("anchor")); + + const LayoutBox* anchor_not_found = + To<LayoutBox>(GetLayoutObjectByElementId("no-anchor")); + EXPECT_FALSE(anchor_not_found->AnchorScrollObject()); +} + class LayoutBoxBackgroundPaintLocationTest : public RenderingTest, public PaintTestConfigurations { protected:
diff --git a/third_party/blink/renderer/core/layout/ng/ng_anchor_query.cc b/third_party/blink/renderer/core/layout/ng/ng_anchor_query.cc index c64840b1d..c808eaa 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_anchor_query.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_anchor_query.cc
@@ -5,9 +5,18 @@ #include "third_party/blink/renderer/core/layout/ng/ng_anchor_query.h" #include "third_party/blink/renderer/core/layout/geometry/writing_mode_converter.h" +#include "third_party/blink/renderer/core/layout/ng/ng_physical_fragment.h" namespace blink { +void NGPhysicalAnchorReference::Trace(Visitor* visitor) const { + visitor->Trace(fragment); +} + +void NGPhysicalAnchorQuery::Trace(Visitor* visitor) const { + visitor->Trace(anchor_references); +} + absl::optional<LayoutUnit> NGLogicalAnchorQuery::EvaluateAnchor( const AtomicString& anchor_name, AnchorValue anchor_value, @@ -19,7 +28,7 @@ if (it == anchor_references.end()) return absl::nullopt; // No targets. - const PhysicalRect anchor = container_converter.ToPhysical(it->value); + const PhysicalRect anchor = container_converter.ToPhysical(it->value.rect); LayoutUnit value; switch (anchor_value) { case AnchorValue::kLeft: @@ -63,7 +72,7 @@ if (it == anchor_references.end()) return absl::nullopt; // No targets. - const LogicalSize& anchor = it->value.size; + const LogicalSize& anchor = it->value.rect.size; switch (anchor_size_value) { case AnchorSizeValue::kInline: return anchor.inline_size;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_anchor_query.h b/third_party/blink/renderer/core/layout/ng/ng_anchor_query.h index 736bde2..fb87054 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_anchor_query.h +++ b/third_party/blink/renderer/core/layout/ng/ng_anchor_query.h
@@ -11,18 +11,42 @@ #include "third_party/blink/renderer/core/layout/geometry/logical_rect.h" #include "third_party/blink/renderer/core/layout/geometry/physical_rect.h" #include "third_party/blink/renderer/platform/geometry/anchor_query_enums.h" -#include "third_party/blink/renderer/platform/wtf/hash_map.h" +#include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h" #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" #include "third_party/blink/renderer/platform/wtf/text/atomic_string_hash.h" namespace blink { +class NGPhysicalFragment; class WritingModeConverter; +struct NGPhysicalAnchorReference + : public GarbageCollected<NGPhysicalAnchorReference> { + NGPhysicalAnchorReference(PhysicalRect rect, + const NGPhysicalFragment* fragment) + : rect(rect), fragment(fragment) {} + + PhysicalRect rect; + Member<const NGPhysicalFragment> fragment; + + void Trace(Visitor* visitor) const; +}; + struct NGPhysicalAnchorQuery { bool IsEmpty() const { return anchor_references.IsEmpty(); } - HashMap<AtomicString, PhysicalRect> anchor_references; + HeapHashMap<AtomicString, Member<NGPhysicalAnchorReference>> + anchor_references; + + void Trace(Visitor* visitor) const; + DISALLOW_NEW(); +}; + +struct NGLogicalAnchorReference { + LogicalRect rect; + const NGPhysicalFragment* fragment; + + STACK_ALLOCATED(); }; struct NGLogicalAnchorQuery { @@ -43,7 +67,9 @@ WritingMode container_writing_mode, WritingMode self_writing_mode) const; - HashMap<AtomicString, LogicalRect> anchor_references; + HashMap<AtomicString, NGLogicalAnchorReference> anchor_references; + + STACK_ALLOCATED(); }; } // namespace blink
diff --git a/third_party/blink/renderer/core/layout/ng/ng_anchor_query_test.cc b/third_party/blink/renderer/core/layout/ng/ng_anchor_query_test.cc index e60567fe..1b46e38 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_anchor_query_test.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_anchor_query_test.cc
@@ -42,7 +42,7 @@ const NGPhysicalAnchorQuery& anchor_query) { Vector<AnchorTestData> items; for (const auto& it : anchor_query.anchor_references) - items.push_back(AnchorTestData{it.key, it.value}); + items.push_back(AnchorTestData{it.key, it.value->rect}); std::sort(items.begin(), items.end(), [](const AnchorTestData& a, const AnchorTestData& b) { return CodeUnitCompare(a.name, b.name) < 0;
diff --git a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc index 97bce83..fada7068 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_container_fragment_builder.cc
@@ -61,8 +61,10 @@ DCHECK(RuntimeEnabledFeatures::CSSAnchorPositioningEnabled()); anchor_query_.anchor_references.Set( anchor_name, - LogicalRect{child_offset + relative_offset, - child.Size().ConvertToLogical(GetWritingMode())}); + NGLogicalAnchorReference{ + LogicalRect{child_offset + relative_offset, + child.Size().ConvertToLogical(GetWritingMode())}, + &child}); } } @@ -442,9 +444,10 @@ // Collect any anchor references. if (const NGPhysicalAnchorQuery* anchor_query = fragment.AnchorQuery()) { for (const auto& it : anchor_query->anchor_references) { - LogicalRect rect = converter.ToLogical(it.value); + LogicalRect rect = converter.ToLogical(it.value->rect); rect.offset += adjusted_offset; - anchor_query_.anchor_references.Set(it.key, rect); + anchor_query_.anchor_references.Set( + it.key, NGLogicalAnchorReference{rect, it.value->fragment.Get()}); } }
diff --git a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc index 29c2bd2..903c19ff 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.cc
@@ -1468,13 +1468,6 @@ offset_info.disable_first_tier_cache |= anchor_evaluator.has_anchor_functions; offset_info.block_estimate = offset_info.node_dimensions.size.block_size; - // In some cases we will need the fragment size in order to calculate the - // offset. We may have to lay out to get the fragment size. For block - // fragmentation, we *need* to know the block-offset before layout. In other - // words, in that case, we may have to lay out, calculate the offset, and - // then lay out again at the correct block-offset. - offset_info.block_size_depends_on_layout = offset_info.initial_layout_result; - // Calculate the offsets. NGBoxStrut inset = offset_info.node_dimensions.inset .ConvertToPhysical(candidate_writing_direction) @@ -1521,9 +1514,15 @@ // Skip this step if we produced a fragment that can be reused when // estimating the block-size. if (!layout_result) { - bool should_use_fixed_block_size = !!offset_info.block_estimate; - if (fragmentainer_constraint_space) - should_use_fixed_block_size &= !offset_info.block_size_depends_on_layout; + bool should_use_fixed_block_size = offset_info.block_estimate.has_value(); + + // In some cases we will need the fragment size in order to calculate the + // offset. We may have to lay out to get the fragment size. For block + // fragmentation, we *need* to know the block-offset before layout. In other + // words, in that case, we may have to lay out, calculate the offset, and + // then lay out again at the correct block-offset. + if (fragmentainer_constraint_space && offset_info.initial_layout_result) + should_use_fixed_block_size = false; layout_result = GenerateFragment( node_info.node, container_content_size_in_candidate_writing_mode,
diff --git a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.h b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.h index feab4360..7256560 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.h +++ b/third_party/blink/renderer/core/layout/ng/ng_out_of_flow_layout_part.h
@@ -227,7 +227,6 @@ NGLogicalOutOfFlowDimensions node_dimensions; bool inline_size_depends_on_min_max_sizes = false; - bool block_size_depends_on_layout = false; // If true, a cached layout result was found. See the comment for // |initial_layout_result| for more details.
diff --git a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.cc b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.cc index 9bf7492d..f8af03f 100644 --- a/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.cc +++ b/third_party/blink/renderer/core/layout/ng/ng_physical_fragment.cc
@@ -411,8 +411,9 @@ oof_data = MakeGarbageCollected<OutOfFlowData>(); for (const auto& it : builder->anchor_query_.anchor_references) { - oof_data->anchor_query.anchor_references.insert( - it.key, converter.ToPhysical(it.value)); + oof_data->anchor_query.anchor_references.Set( + it.key, MakeGarbageCollected<NGPhysicalAnchorReference>( + converter.ToPhysical(it.value.rect), it.value.fragment)); } } @@ -1078,6 +1079,7 @@ void NGPhysicalFragment::OutOfFlowData::Trace(Visitor* visitor) const { visitor->Trace(oof_positioned_descendants); + visitor->Trace(anchor_query); } std::ostream& operator<<(std::ostream& out,
diff --git a/third_party/blink/renderer/core/paint/object_paint_properties.h b/third_party/blink/renderer/core/paint/object_paint_properties.h index 48b85cbc..020a882 100644 --- a/third_party/blink/renderer/core/paint/object_paint_properties.h +++ b/third_party/blink/renderer/core/paint/object_paint_properties.h
@@ -101,6 +101,9 @@ // +-[ StickyTranslation ] // / This applies the sticky offset induced by position:sticky. // | + // +-[ AnchorScrollTranslation ] + // / This applies the scrolling offset induced by CSS anchor-scroll. + // | // +-[ Translate ] // | The transform from CSS 'translate' (including the effects of // / 'transform-origin'). @@ -154,13 +157,15 @@ // https://drafts.csswg.org/css-transforms-2/#accumulated-3d-transformation-matrix-computation public: bool HasTransformNode() const { - return paint_offset_translation_ || sticky_translation_ || translate_ || - rotate_ || scale_ || offset_ || transform_ || perspective_ || + return paint_offset_translation_ || sticky_translation_ || + anchor_scroll_translation_ || translate_ || rotate_ || scale_ || + offset_ || transform_ || perspective_ || replaced_content_transform_ || scroll_translation_ || transform_isolation_node_; } ADD_TRANSFORM(PaintOffsetTranslation, paint_offset_translation_); ADD_TRANSFORM(StickyTranslation, sticky_translation_); + ADD_TRANSFORM(AnchorScrollTranslation, anchor_scroll_translation_); ADD_TRANSFORM(Translate, translate_); ADD_TRANSFORM(Rotate, rotate_); ADD_TRANSFORM(Scale, scale_);
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc index 9727c598..73cb9e6 100644 --- a/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc +++ b/third_party/blink/renderer/core/paint/paint_property_tree_builder.cc
@@ -248,6 +248,7 @@ ALWAYS_INLINE void UpdateForObjectLocationAndSize( absl::optional<gfx::Vector2d>& paint_offset_translation); ALWAYS_INLINE void UpdateStickyTranslation(); + ALWAYS_INLINE void UpdateAnchorScrollTranslation(); void UpdateIndividualTransform( bool (*needs_property)(const LayoutObject&, CompositingReasons), @@ -460,6 +461,12 @@ return To<LayoutBoxModelObject>(object).StickyConstraints(); } +static bool NeedsAnchorScrollTranslation(const LayoutObject& object) { + if (const LayoutBox* box = DynamicTo<LayoutBox>(object)) + return box->AnchorScrollContainer(); + return false; +} + static bool NeedsPaintOffsetTranslation( const LayoutObject& object, CompositingReasons direct_compositing_reasons) { @@ -494,6 +501,8 @@ return true; if (NeedsStickyTranslation(object)) return true; + if (NeedsAnchorScrollTranslation(object)) + return true; if (NeedsPaintOffsetTranslationForOverflowControls(box_model)) return true; if (NeedsReplacedContentTransform(object)) @@ -743,6 +752,51 @@ context_.current.transform = properties_->StickyTranslation(); } +void FragmentPaintPropertyTreeBuilder::UpdateAnchorScrollTranslation() { + DCHECK(properties_); + if (NeedsPaintPropertyUpdate()) { + if (NeedsAnchorScrollTranslation(object_)) { + const auto& box = To<LayoutBox>(object_); + const PaintLayer* anchor_scroll_container_layer = + box.AnchorScrollContainer()->Layer(); + + // TODO(crbug.com/1309178): We need to accumulate the translation offsets + // of all the scroll containers up to the containing block. + gfx::Vector2dF scroll_offset = + anchor_scroll_container_layer->GetScrollableArea() + ->ScrollPosition() + .OffsetFromOrigin(); + gfx::Vector2dF translation_offset = -scroll_offset; + TransformPaintPropertyNode::State state{translation_offset}; + + // TODO(crbug.com/1309178): Not using GetCompositorElementId() here + // because anchor-positioned elements don't work properly under multicol + // for now, to keep consistency with + // CompositorElementIdFromUniqueObjectId() below. This will be fixed by + // LayoutNG block fragments. + state.compositor_element_id = CompositorElementIdFromUniqueObjectId( + box.UniqueId(), + CompositorElementIdNamespace::kAnchorScrollTranslation); + state.rendering_context_id = context_.rendering_context_id; + state.flags.flattens_inherited_transform = + context_.should_flatten_inherited_transform; + state.anchor_scroll_container = + anchor_scroll_container_layer->GetLayoutObject() + .FirstFragment() + .PaintProperties() + ->ScrollTranslation(); + + OnUpdateTransform(properties_->UpdateAnchorScrollTranslation( + *context_.current.transform, std::move(state))); + } else { + OnClearTransform(properties_->ClearAnchorScrollTranslation()); + } + } + + if (properties_->AnchorScrollTranslation()) + context_.current.transform = properties_->AnchorScrollTranslation(); +} + // TODO(dbaron): Remove this function when we can remove the // BackfaceVisibilityInteropEnabled() check, and have the caller use // CompositingReason::kDirectReasonsForTransformProperty directly. @@ -2973,6 +3027,7 @@ if (properties_) { UpdateStickyTranslation(); + UpdateAnchorScrollTranslation(); if (object_.IsSVGChild()) { // TODO(crbug.com/1278452): Merge SVG handling into the primary codepath. UpdateTransformForSVGChild(full_context_.direct_compositing_reasons); @@ -3826,6 +3881,7 @@ (NeedsPaintOffsetTranslation(object_, context_.direct_compositing_reasons) || NeedsStickyTranslation(object_) || + NeedsAnchorScrollTranslation(object_) || NeedsTranslate(object_, context_.direct_compositing_reasons) || NeedsRotate(object_, context_.direct_compositing_reasons) || NeedsScale(object_, context_.direct_compositing_reasons) ||
diff --git a/third_party/blink/renderer/core/paint/paint_property_tree_printer.cc b/third_party/blink/renderer/core/paint/paint_property_tree_printer.cc index 185f0aa4..849e14e 100644 --- a/third_party/blink/renderer/core/paint/paint_property_tree_printer.cc +++ b/third_party/blink/renderer/core/paint/paint_property_tree_printer.cc
@@ -84,6 +84,7 @@ PropertyTreePrinter<TransformPaintPropertyNodeOrAlias>& printer) { printer.AddNode(properties.PaintOffsetTranslation()); printer.AddNode(properties.StickyTranslation()); + printer.AddNode(properties.AnchorScrollTranslation()); printer.AddNode(properties.Translate()); printer.AddNode(properties.Rotate()); printer.AddNode(properties.Scale()); @@ -234,6 +235,8 @@ SetDebugName(properties.PaintOffsetTranslation(), "PaintOffsetTranslation", object); SetDebugName(properties.StickyTranslation(), "StickyTranslation", object); + SetDebugName(properties.AnchorScrollTranslation(), "AnchorScrollTranslation", + object); SetDebugName(properties.Translate(), "Translate", object); SetDebugName(properties.Rotate(), "Rotate", object); SetDebugName(properties.Scale(), "Scale", object);
diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third_party/blink/renderer/core/workers/dedicated_worker.cc index e69aa4f..d45460f 100644 --- a/third_party/blink/renderer/core/workers/dedicated_worker.cc +++ b/third_party/blink/renderer/core/workers/dedicated_worker.cc
@@ -33,7 +33,6 @@ #include "third_party/blink/renderer/core/frame/local_frame_client.h" #include "third_party/blink/renderer/core/frame/web_frame_widget_impl.h" #include "third_party/blink/renderer/core/frame/web_local_frame_impl.h" -#include "third_party/blink/renderer/core/inspector/console_message.h" #include "third_party/blink/renderer/core/inspector/main_thread_debugger.h" #include "third_party/blink/renderer/core/loader/document_loader.h" #include "third_party/blink/renderer/core/loader/frame_loader.h" @@ -325,10 +324,7 @@ void DedicatedWorker::DispatchErrorEventForScriptFetchFailure() { DCHECK(!GetExecutionContext() || GetExecutionContext()->IsContextThread()); - GetExecutionContext()->AddConsoleMessage(MakeGarbageCollected<ConsoleMessage>( - mojom::blink::ConsoleMessageSource::kWorker, - mojom::blink::ConsoleMessageLevel::kError, - "new Worker() has failed to fetch script.")); + // TODO(nhiroki): Add a console error message. DispatchEvent(*Event::CreateCancelable(event_type_names::kError)); }
diff --git a/third_party/blink/renderer/modules/compute_pressure/BUILD.gn b/third_party/blink/renderer/modules/compute_pressure/BUILD.gn index ae60791..36d0427 100644 --- a/third_party/blink/renderer/modules/compute_pressure/BUILD.gn +++ b/third_party/blink/renderer/modules/compute_pressure/BUILD.gn
@@ -6,8 +6,8 @@ blink_modules_sources("compute_pressure") { sources = [ - "compute_pressure_observer.cc", - "compute_pressure_observer.h", + "pressure_observer.cc", + "pressure_observer.h", ] deps = [ "//third_party/blink/renderer/platform" ]
diff --git a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.h b/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.h deleted file mode 100644 index c54ab0a..0000000 --- a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.h +++ /dev/null
@@ -1,106 +0,0 @@ -// Copyright 2021 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 THIRD_PARTY_BLINK_RENDERER_MODULES_COMPUTE_PRESSURE_COMPUTE_PRESSURE_OBSERVER_H_ -#define THIRD_PARTY_BLINK_RENDERER_MODULES_COMPUTE_PRESSURE_COMPUTE_PRESSURE_OBSERVER_H_ - -#include "mojo/public/cpp/bindings/pending_receiver.h" -#include "services/device/public/mojom/compute_pressure_state.mojom-blink.h" -#include "third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom-blink.h" -#include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_record.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_update_callback.h" -#include "third_party/blink/renderer/core/execution_context/execution_context.h" -#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_state_observer.h" -#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" -#include "third_party/blink/renderer/platform/heap/garbage_collected.h" -#include "third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h" -#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h" - -namespace blink { - -namespace { - -// https://wicg.github.io/compute-pressure/#ref-for-dfn-max-queued-records-1 -constexpr wtf_size_t kMaxQueuedRecords = 10; - -} // namespace - -class ExceptionState; -class ScriptState; -class ScriptPromise; -class ScriptPromiseResolver; -class ComputePressureObserverOptions; -class V8ComputePressureSource; - -class ComputePressureObserver final - : public ScriptWrappable, - public ExecutionContextLifecycleStateObserver, - public mojom::blink::ComputePressureObserver { - DEFINE_WRAPPERTYPEINFO(); - - public: - ComputePressureObserver(ExecutionContext* execution_context, - V8ComputePressureUpdateCallback* observer_callback, - ComputePressureObserverOptions* normalized_options); - ~ComputePressureObserver() override; - - static ComputePressureObserver* Create(ScriptState*, - V8ComputePressureUpdateCallback*, - ComputePressureObserverOptions*, - ExceptionState&); - - // ComputePressureObserver IDL implementation. - ScriptPromise observe(ScriptState*, V8ComputePressureSource, ExceptionState&); - void unobserve(V8ComputePressureSource source); - void disconnect(); - HeapVector<Member<ComputePressureRecord>> takeRecords(); - static Vector<V8ComputePressureSource> supportedSources(); - - ComputePressureObserver(const ComputePressureObserver&) = delete; - ComputePressureObserver operator=(const ComputePressureObserver&) = delete; - - // GarbageCollected implementation. - void Trace(blink::Visitor*) const override; - - // mojom::blink::ComputePressureObserver implementation. - void OnUpdate(device::mojom::blink::ComputePressureStatePtr state) override; - - // ExecutionContextLifecycleObserver implementation. - void ContextDestroyed() override; - - // ExecutionContextLifecycleStateObserver implementation. - void ContextLifecycleStateChanged( - mojom::blink::FrameLifecycleState state) override; - - private: - // Called when `receiver_` is disconnected. - void OnReceiverDisconnect(); - - void DidAddObserver(ScriptPromiseResolver* resolver, - mojom::blink::ComputePressureStatus status); - - // The callback that receives compute pressure state updates. - Member<V8ComputePressureUpdateCallback> observer_callback_; - - // The quantization scheme sent to the browser-side implementation. - Member<ComputePressureObserverOptions> normalized_options_; - - // Last received records from the platform collector. - // The records are only collected when there is a change in the status. - HeapVector<Member<ComputePressureRecord>, kMaxQueuedRecords> records_; - - // Connection to the browser-side implementation. - HeapMojoRemote<mojom::blink::ComputePressureService> - compute_pressure_service_; - - // Routes ComputePressureObserver mojo messages to this instance. - HeapMojoReceiver<mojom::blink::ComputePressureObserver, - ComputePressureObserver> - receiver_; -}; - -} // namespace blink - -#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_COMPUTE_PRESSURE_COMPUTE_PRESSURE_OBSERVER_H_
diff --git a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.idl b/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.idl deleted file mode 100644 index 50129ef..0000000 --- a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.idl +++ /dev/null
@@ -1,42 +0,0 @@ -// Copyright 2021 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. - -// https://wicg.github.io/compute-pressure/#dom-computepressuresource -enum ComputePressureSource { - "cpu" -}; - -// https://wicg.github.io/compute-pressure/#ref-for-dom-computepressureobserver-9 -[ - Exposed=Window, - RuntimeEnabled=ComputePressure, - SecureContext -] interface ComputePressureObserver { - [ - CallWith=ScriptState, RaisesException, - MeasureAs=ComputePressureObserver_Constructor - ] constructor(ComputePressureUpdateCallback callback, - optional ComputePressureObserverOptions options = {}); - - [ - CallWith=ScriptState, - MeasureAs=ComputePressureObserver_Observe, - RaisesException - ] Promise<void> observe(ComputePressureSource source); - - [ - MeasureAs=ComputePressureObserver_Unobserve - ] void unobserve(ComputePressureSource source); - - [MeasureAs=ComputePressureObserver_Disconnect] void disconnect(); - - [ - SameObject, - SaveSameObject - ] static readonly attribute FrozenArray<ComputePressureSource> supportedSources; - - [ - MeasureAs=ComputePressureObserver_TakeRecords - ] sequence<ComputePressureRecord> takeRecords(); -};
diff --git a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_update_callback.idl b/third_party/blink/renderer/modules/compute_pressure/compute_pressure_update_callback.idl deleted file mode 100644 index 7edb615..0000000 --- a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_update_callback.idl +++ /dev/null
@@ -1,13 +0,0 @@ -// Copyright 2021 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. - -// https://github.com/wicg/compute-pressure/ -[ - Exposed=Window, - RuntimeEnabled=ComputePressure, - SecureContext -] callback ComputePressureUpdateCallback = void ( - ComputePressureRecord changes, - ComputePressureObserver observer - );
diff --git a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.cc b/third_party/blink/renderer/modules/compute_pressure/pressure_observer.cc similarity index 66% rename from third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.cc rename to third_party/blink/renderer/modules/compute_pressure/pressure_observer.cc index 8c81769..d610cc2 100644 --- a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.cc +++ b/third_party/blink/renderer/modules/compute_pressure/pressure_observer.cc
@@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer.h" +#include "third_party/blink/renderer/modules/compute_pressure/pressure_observer.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h" -#include "third_party/blink/public/mojom/compute_pressure/compute_pressure.mojom-blink.h" +#include "third_party/blink/public/mojom/compute_pressure/pressure_service.mojom-blink.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/core/v8/v8_throw_dom_exception.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_observer_options.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_record.h" -#include "third_party/blink/renderer/bindings/modules/v8/v8_compute_pressure_source.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_pressure_observer_options.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_pressure_record.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_pressure_source.h" #include "third_party/blink/renderer/core/dom/dom_exception.h" #include "third_party/blink/renderer/core/execution_context/execution_context.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h" @@ -22,23 +22,22 @@ namespace blink { -ComputePressureObserver::ComputePressureObserver( - ExecutionContext* execution_context, - V8ComputePressureUpdateCallback* observer_callback, - ComputePressureObserverOptions* normalized_options) +PressureObserver::PressureObserver(ExecutionContext* execution_context, + V8PressureUpdateCallback* observer_callback, + PressureObserverOptions* normalized_options) : ExecutionContextLifecycleStateObserver(execution_context), observer_callback_(observer_callback), normalized_options_(normalized_options), - compute_pressure_service_(execution_context), + pressure_service_(execution_context), receiver_(this, execution_context) { execution_context->GetBrowserInterfaceBroker().GetInterface( - compute_pressure_service_.BindNewPipeAndPassReceiver( + pressure_service_.BindNewPipeAndPassReceiver( execution_context->GetTaskRunner(TaskType::kUserInteraction))); // ExecutionContextLifecycleStateObserver. UpdateStateIfNeeded(); } -ComputePressureObserver::~ComputePressureObserver() = default; +PressureObserver::~PressureObserver() = default; namespace { @@ -71,14 +70,14 @@ return true; } -bool NormalizeObserverOptions(ComputePressureObserverOptions& options, +bool NormalizeObserverOptions(PressureObserverOptions& options, ExceptionState& exception_state) { Vector<double> cpu_utilization_thresholds = options.cpuUtilizationThresholds(); if (cpu_utilization_thresholds.size() > - mojom::blink::kMaxComputePressureCpuUtilizationThresholds) { + mojom::blink::kMaxPressureCpuUtilizationThresholds) { cpu_utilization_thresholds.resize( - mojom::blink::kMaxComputePressureCpuUtilizationThresholds); + mojom::blink::kMaxPressureCpuUtilizationThresholds); } std::sort(cpu_utilization_thresholds.begin(), cpu_utilization_thresholds.end()); @@ -94,11 +93,10 @@ } // namespace // static -ComputePressureObserver* ComputePressureObserver::Create( - ScriptState* script_state, - V8ComputePressureUpdateCallback* callback, - ComputePressureObserverOptions* options, - ExceptionState& exception_state) { +PressureObserver* PressureObserver::Create(ScriptState* script_state, + V8PressureUpdateCallback* callback, + PressureObserverOptions* options, + ExceptionState& exception_state) { // TODO(crbug.com/1306803): Remove this check whenever bucketing is not // anymore in use. if (!NormalizeObserverOptions(*options, exception_state)) { @@ -107,23 +105,22 @@ } ExecutionContext* execution_context = ExecutionContext::From(script_state); - return MakeGarbageCollected<ComputePressureObserver>(execution_context, - callback, options); + return MakeGarbageCollected<PressureObserver>(execution_context, callback, + options); } // static -Vector<V8ComputePressureSource> ComputePressureObserver::supportedSources() { - return Vector<V8ComputePressureSource>( - {V8ComputePressureSource(V8ComputePressureSource::Enum::kCpu)}); +Vector<V8PressureSource> PressureObserver::supportedSources() { + return Vector<V8PressureSource>( + {V8PressureSource(V8PressureSource::Enum::kCpu)}); } // TODO(crbug.com/1308303): Remove ScriptPromise to match specs, whenever // we redesign the interface with browser. -ScriptPromise ComputePressureObserver::observe( - ScriptState* script_state, - V8ComputePressureSource source, - ExceptionState& exception_state) { - if (!compute_pressure_service_.is_bound()) { +ScriptPromise PressureObserver::observe(ScriptState* script_state, + V8PressureSource source, + ExceptionState& exception_state) { + if (!pressure_service_.is_bound()) { exception_state.ThrowDOMException(DOMExceptionCode::kNotSupportedError, "Compute pressure is not available"); return ScriptPromise(); @@ -138,17 +135,16 @@ ExecutionContext::From(script_state) ->GetTaskRunner(TaskType::kMiscPlatformAPI); - auto mojo_options = mojom::blink::ComputePressureQuantization::New( + auto mojo_options = mojom::blink::PressureQuantization::New( normalized_options_->cpuUtilizationThresholds()); - compute_pressure_service_->AddObserver( + pressure_service_->AddObserver( receiver_.BindNewPipeAndPassRemote(std::move(task_runner)), std::move(mojo_options), - WTF::Bind(&ComputePressureObserver::DidAddObserver, - WrapWeakPersistent(this), WrapPersistent(resolver))); - receiver_.set_disconnect_handler( - WTF::Bind(&ComputePressureObserver::OnReceiverDisconnect, - WrapWeakPersistent(this))); + WTF::Bind(&PressureObserver::DidAddObserver, WrapWeakPersistent(this), + WrapPersistent(resolver))); + receiver_.set_disconnect_handler(WTF::Bind( + &PressureObserver::OnReceiverDisconnect, WrapWeakPersistent(this))); return resolver->Promise(); } @@ -156,7 +152,7 @@ // one source but should continue to observe other sources. // For now, since "cpu" is the only source, unobserve() has the same // functionality as disconnect(). -void ComputePressureObserver::unobserve(V8ComputePressureSource source) { +void PressureObserver::unobserve(V8PressureSource source) { // TODO(crbug.com/1306819): // 1. observer needs to be dequeued from active observer list of // requested source. @@ -166,31 +162,30 @@ // For now 'cpu' is the only source. switch (source.AsEnum()) { - case V8ComputePressureSource::Enum::kCpu: + case V8PressureSource::Enum::kCpu: records_.clear(); break; } receiver_.reset(); } -void ComputePressureObserver::disconnect() { +void PressureObserver::disconnect() { receiver_.reset(); records_.clear(); } -void ComputePressureObserver::Trace(blink::Visitor* visitor) const { +void PressureObserver::Trace(blink::Visitor* visitor) const { visitor->Trace(observer_callback_); visitor->Trace(normalized_options_); - visitor->Trace(compute_pressure_service_); + visitor->Trace(pressure_service_); visitor->Trace(receiver_); visitor->Trace(records_); ScriptWrappable::Trace(visitor); ExecutionContextLifecycleStateObserver::Trace(visitor); } -void ComputePressureObserver::OnUpdate( - device::mojom::blink::ComputePressureStatePtr state) { - auto* record = ComputePressureRecord::Create(); +void PressureObserver::OnUpdate(device::mojom::blink::PressureStatePtr state) { + auto* record = PressureRecord::Create(); record->setCpuUtilization(state->cpu_utilization); // This should happen infrequently since `records_` is supposed @@ -204,45 +199,43 @@ observer_callback_->InvokeAndReportException(this, record, this); } -void ComputePressureObserver::ContextDestroyed() { +void PressureObserver::ContextDestroyed() { receiver_.reset(); } -HeapVector<Member<ComputePressureRecord>> -ComputePressureObserver::takeRecords() { +HeapVector<Member<PressureRecord>> PressureObserver::takeRecords() { // This method clears records_. - HeapVector<Member<ComputePressureRecord>, kMaxQueuedRecords> records; + HeapVector<Member<PressureRecord>, kMaxQueuedRecords> records; records.swap(records_); return records; } -void ComputePressureObserver::ContextLifecycleStateChanged( +void PressureObserver::ContextLifecycleStateChanged( mojom::blink::FrameLifecycleState state) { // TODO(https://crbug.com/1186433): Disconnect and re-establish a connection // when frozen or send a disconnect event. } -void ComputePressureObserver::OnReceiverDisconnect() { +void PressureObserver::OnReceiverDisconnect() { receiver_.reset(); } -void ComputePressureObserver::DidAddObserver( - ScriptPromiseResolver* resolver, - mojom::blink::ComputePressureStatus status) { +void PressureObserver::DidAddObserver(ScriptPromiseResolver* resolver, + mojom::blink::PressureStatus status) { ScriptState* script_state = resolver->GetScriptState(); if (!script_state->ContextIsValid()) return; ScriptState::Scope scope(script_state); switch (status) { - case mojom::blink::ComputePressureStatus::kOk: + case mojom::blink::PressureStatus::kOk: break; - case mojom::blink::ComputePressureStatus::kNotSupported: + case mojom::blink::PressureStatus::kNotSupported: resolver->Reject(V8ThrowDOMException::CreateOrEmpty( script_state->GetIsolate(), DOMExceptionCode::kNotSupportedError, "Not available on this platform.")); return; - case mojom::blink::ComputePressureStatus::kSecurityError: + case mojom::blink::PressureStatus::kSecurityError: resolver->Reject(V8ThrowDOMException::CreateOrEmpty( script_state->GetIsolate(), DOMExceptionCode::kSecurityError, "Security error. Make sure the page is visible."));
diff --git a/third_party/blink/renderer/modules/compute_pressure/pressure_observer.h b/third_party/blink/renderer/modules/compute_pressure/pressure_observer.h new file mode 100644 index 0000000..d6395693b --- /dev/null +++ b/third_party/blink/renderer/modules/compute_pressure/pressure_observer.h
@@ -0,0 +1,102 @@ +// Copyright 2021 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 THIRD_PARTY_BLINK_RENDERER_MODULES_COMPUTE_PRESSURE_PRESSURE_OBSERVER_H_ +#define THIRD_PARTY_BLINK_RENDERER_MODULES_COMPUTE_PRESSURE_PRESSURE_OBSERVER_H_ + +#include "mojo/public/cpp/bindings/pending_receiver.h" +#include "services/device/public/mojom/pressure_state.mojom-blink.h" +#include "third_party/blink/public/mojom/compute_pressure/pressure_service.mojom-blink.h" +#include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_pressure_record.h" +#include "third_party/blink/renderer/bindings/modules/v8/v8_pressure_update_callback.h" +#include "third_party/blink/renderer/core/execution_context/execution_context.h" +#include "third_party/blink/renderer/core/execution_context/execution_context_lifecycle_state_observer.h" +#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" +#include "third_party/blink/renderer/platform/heap/garbage_collected.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_receiver.h" +#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h" + +namespace blink { + +namespace { + +// https://wicg.github.io/compute-pressure/#dfn-max-queued-records +constexpr wtf_size_t kMaxQueuedRecords = 10; + +} // namespace + +class ExceptionState; +class PressureObserverOptions; +class ScriptState; +class ScriptPromise; +class ScriptPromiseResolver; +class V8PressureSource; + +class PressureObserver final : public ScriptWrappable, + public ExecutionContextLifecycleStateObserver, + public mojom::blink::PressureObserver { + DEFINE_WRAPPERTYPEINFO(); + + public: + PressureObserver(ExecutionContext* execution_context, + V8PressureUpdateCallback* observer_callback, + PressureObserverOptions* normalized_options); + ~PressureObserver() override; + + static PressureObserver* Create(ScriptState*, + V8PressureUpdateCallback*, + PressureObserverOptions*, + ExceptionState&); + + // PressureObserver IDL implementation. + ScriptPromise observe(ScriptState*, V8PressureSource, ExceptionState&); + void unobserve(V8PressureSource source); + void disconnect(); + HeapVector<Member<PressureRecord>> takeRecords(); + static Vector<V8PressureSource> supportedSources(); + + PressureObserver(const PressureObserver&) = delete; + PressureObserver operator=(const PressureObserver&) = delete; + + // GarbageCollected implementation. + void Trace(blink::Visitor*) const override; + + // mojom::blink::PressureObserver implementation. + void OnUpdate(device::mojom::blink::PressureStatePtr state) override; + + // ExecutionContextLifecycleObserver implementation. + void ContextDestroyed() override; + + // ExecutionContextLifecycleStateObserver implementation. + void ContextLifecycleStateChanged( + mojom::blink::FrameLifecycleState state) override; + + private: + // Called when `receiver_` is disconnected. + void OnReceiverDisconnect(); + + void DidAddObserver(ScriptPromiseResolver* resolver, + mojom::blink::PressureStatus status); + + // The callback that receives pressure state updates. + Member<V8PressureUpdateCallback> observer_callback_; + + // The quantization scheme sent to the browser-side implementation. + Member<PressureObserverOptions> normalized_options_; + + // Last received records from the platform collector. + // The records are only collected when there is a change in the status. + HeapVector<Member<PressureRecord>, kMaxQueuedRecords> records_; + + // Connection to the browser-side implementation. + HeapMojoRemote<mojom::blink::PressureService> pressure_service_; + + // Routes PressureObserver mojo messages to this instance. + HeapMojoReceiver<mojom::blink::PressureObserver, PressureObserver> receiver_; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_COMPUTE_PRESSURE_PRESSURE_OBSERVER_H_
diff --git a/third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl b/third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl new file mode 100644 index 0000000..8eda5fa --- /dev/null +++ b/third_party/blink/renderer/modules/compute_pressure/pressure_observer.idl
@@ -0,0 +1,42 @@ +// Copyright 2021 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. + +// https://wicg.github.io/compute-pressure/#dom-pressuresource +enum PressureSource { + "cpu" +}; + +// https://wicg.github.io/compute-pressure/#dom-pressureobserver +[ + Exposed=Window, + RuntimeEnabled=ComputePressure, + SecureContext +] interface PressureObserver { + [ + CallWith=ScriptState, RaisesException, + MeasureAs=PressureObserver_Constructor + ] constructor(PressureUpdateCallback callback, + optional PressureObserverOptions options = {}); + + [ + CallWith=ScriptState, + MeasureAs=PressureObserver_Observe, + RaisesException + ] Promise<void> observe(PressureSource source); + + [ + MeasureAs=PressureObserver_Unobserve + ] void unobserve(PressureSource source); + + [MeasureAs=PressureObserver_Disconnect] void disconnect(); + + [ + SameObject, + SaveSameObject + ] static readonly attribute FrozenArray<PressureSource> supportedSources; + + [ + MeasureAs=PressureObserver_TakeRecords + ] sequence<PressureRecord> takeRecords(); +};
diff --git a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer_options.idl b/third_party/blink/renderer/modules/compute_pressure/pressure_observer_options.idl similarity index 70% rename from third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer_options.idl rename to third_party/blink/renderer/modules/compute_pressure/pressure_observer_options.idl index af0f868..2c6f389 100644 --- a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_observer_options.idl +++ b/third_party/blink/renderer/modules/compute_pressure/pressure_observer_options.idl
@@ -2,10 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://github.com/wicg/compute-pressure/ +// https://wicg.github.io/compute-pressure/#dom-pressureobserveroptions [ Exposed=Window, SecureContext -] dictionary ComputePressureObserverOptions { +] dictionary PressureObserverOptions { sequence<double> cpuUtilizationThresholds = []; };
diff --git a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_record.idl b/third_party/blink/renderer/modules/compute_pressure/pressure_record.idl similarity index 75% rename from third_party/blink/renderer/modules/compute_pressure/compute_pressure_record.idl rename to third_party/blink/renderer/modules/compute_pressure/pressure_record.idl index 069c16c..25201916 100644 --- a/third_party/blink/renderer/modules/compute_pressure/compute_pressure_record.idl +++ b/third_party/blink/renderer/modules/compute_pressure/pressure_record.idl
@@ -2,11 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// https://wicg.github.io/compute-pressure/#dom-computepressurerecord +// https://wicg.github.io/compute-pressure/#dom-pressurerecord [ Exposed=Window, SecureContext -] dictionary ComputePressureRecord { +] dictionary PressureRecord { // TODO(crbug.com/1308316): Remove cpuUtilization when switching // to new API. double cpuUtilization;
diff --git a/third_party/blink/renderer/modules/compute_pressure/pressure_update_callback.idl b/third_party/blink/renderer/modules/compute_pressure/pressure_update_callback.idl new file mode 100644 index 0000000..ff71a873 --- /dev/null +++ b/third_party/blink/renderer/modules/compute_pressure/pressure_update_callback.idl
@@ -0,0 +1,13 @@ +// Copyright 2021 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. + +// https://wicg.github.io/compute-pressure/#dom-pressureupdatecallback +[ + Exposed=Window, + RuntimeEnabled=ComputePressure, + SecureContext +] callback PressureUpdateCallback = void ( + PressureRecord changes, + PressureObserver observer + );
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc index 7980212f..a52f82e 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.cc
@@ -461,13 +461,8 @@ pending_layers_.ShrinkToReasonableCapacity(); } -void SynthesizedClip::UpdateLayer(bool needs_layer, - const ClipPaintPropertyNode& clip, +void SynthesizedClip::UpdateLayer(const ClipPaintPropertyNode& clip, const TransformPaintPropertyNode& transform) { - if (!needs_layer) { - layer_.reset(); - return; - } if (!layer_) { layer_ = cc::PictureLayer::Create(this); layer_->SetIsDrawable(true); @@ -562,7 +557,7 @@ entry->in_use = true; SynthesizedClip& synthesized_clip = *entry->synthesized_clip; if (needs_layer) { - synthesized_clip.UpdateLayer(needs_layer, clip, transform); + synthesized_clip.UpdateLayer(clip, transform); synthesized_clip.Layer()->SetLayerTreeHost(root_layer_->layer_tree_host()); if (layer_debug_info_enabled_ && !synthesized_clip.Layer()->debug_info()) synthesized_clip.Layer()->SetDebugName("Synthesized Clip");
diff --git a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h index 91bc2e4e..fa95247 100644 --- a/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h +++ b/third_party/blink/renderer/platform/graphics/compositing/paint_artifact_compositor.h
@@ -77,8 +77,7 @@ layer_->ClearClient(); } - void UpdateLayer(bool needs_layer, - const ClipPaintPropertyNode&, + void UpdateLayer(const ClipPaintPropertyNode&, const TransformPaintPropertyNode&); cc::PictureLayer* Layer() { return layer_.get(); }
diff --git a/third_party/blink/renderer/platform/graphics/compositor_element_id.cc b/third_party/blink/renderer/platform/graphics/compositor_element_id.cc index 52d230e..a0cbdae 100644 --- a/third_party/blink/renderer/platform/graphics/compositor_element_id.cc +++ b/third_party/blink/renderer/platform/graphics/compositor_element_id.cc
@@ -16,10 +16,10 @@ static CompositorElementId CreateCompositorElementId( uint64_t blink_id, CompositorElementIdNamespace namespace_id) { - DCHECK(blink_id > 0 && - blink_id < std::numeric_limits<uint64_t>::max() / - static_cast<unsigned>( - CompositorElementIdNamespace::kMaxRepresentable)); + DCHECK(blink_id); + DCHECK_LT(blink_id, std::numeric_limits<uint64_t>::max() / + static_cast<unsigned>( + CompositorElementIdNamespace::kMaxRepresentable)); // Shift to make room for namespace_id enum bits. cc::ElementIdType id = blink_id << kCompositorNamespaceBitCount; id += static_cast<uint64_t>(namespace_id);
diff --git a/third_party/blink/renderer/platform/graphics/compositor_element_id.h b/third_party/blink/renderer/platform/graphics/compositor_element_id.h index 09f12ee..78838a98 100644 --- a/third_party/blink/renderer/platform/graphics/compositor_element_id.h +++ b/third_party/blink/renderer/platform/graphics/compositor_element_id.h
@@ -11,13 +11,14 @@ namespace blink { -const int kCompositorNamespaceBitCount = 4; +const int kCompositorNamespaceBitCount = 5; enum class CompositorElementIdNamespace { kPrimary, kUniqueObjectId, kScroll, kStickyTranslation, + kAnchorScrollTranslation, kPrimaryEffect, kPrimaryTransform, kEffectFilter, @@ -37,7 +38,7 @@ kMaxRepresentable = 1 << kCompositorNamespaceBitCount }; -static_assert(CompositorElementIdNamespace::kMax <= +static_assert(CompositorElementIdNamespace::kMax < CompositorElementIdNamespace::kMaxRepresentable, "");
diff --git a/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.cc b/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.cc index e0d69bb..9fd6b2e 100644 --- a/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.cc +++ b/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.cc
@@ -30,6 +30,7 @@ scroll != other.scroll || scroll_translation_for_fixed != other.scroll_translation_for_fixed || !StickyConstraintEquals(other) || + anchor_scroll_container != other.anchor_scroll_container || visible_frame_element_id != other.visible_frame_element_id) { return PaintPropertyChangeType::kChangedOnlyValues; }
diff --git a/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h b/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h index 83f30c3..fc78cdf 100644 --- a/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h +++ b/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h
@@ -181,6 +181,10 @@ CompositingReasons direct_compositing_reasons = CompositingReason::kNone; CompositorElementId compositor_element_id; std::unique_ptr<CompositorStickyConstraint> sticky_constraint; + // Scroll container of the element specified by the 'anchor-scroll' + // property, if this element uses anchor positioning and is not in the same + // scroll container. + scoped_refptr<const TransformPaintPropertyNode> anchor_scroll_container; // If a visible frame is rooted at this node, this represents the element // ID of the containing document. CompositorElementId visible_frame_element_id; @@ -275,6 +279,10 @@ return state_.sticky_constraint.get(); } + const TransformPaintPropertyNode* GetAnchorScrollContainer() const { + return state_.anchor_scroll_container.get(); + } + // If this is a scroll offset translation (i.e., has an associated scroll // node), returns this. Otherwise, returns the transform node that this node // scrolls with respect to. This can require a full ancestor traversal.
diff --git a/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc b/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc index a5f768d..2ccb6bd 100644 --- a/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc +++ b/third_party/blink/renderer/platform/loader/fetch/url_loader/request_conversion.cc
@@ -40,8 +40,7 @@ namespace { constexpr char kStylesheetAcceptHeader[] = "text/css,*/*;q=0.1"; -constexpr char kWebBundleAcceptHeader[] = - "application/webbundle;v=b2,application/webbundle;v=b1;q=0.8"; +constexpr char kWebBundleAcceptHeader[] = "application/webbundle;v=b2"; // TODO(yhirano): Unify these with variables in // content/public/common/content_constants.h.
diff --git a/third_party/blink/web_tests/external/Version b/third_party/blink/web_tests/external/Version index f47c225..adb53c71 100644 --- a/third_party/blink/web_tests/external/Version +++ b/third_party/blink/web_tests/external/Version
@@ -1 +1 @@ -Version: 9deda95926faed241b9090ff4770561c24e9137d +Version: 8e8ed6f4bdeac2a8a12cbf608b772f696d3833e8
diff --git a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json index 880b256..4a073e3d 100644 --- a/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json +++ b/third_party/blink/web_tests/external/WPT_BASE_MANIFEST_8.json
@@ -840,6 +840,15 @@ ] ] }, + "css-cascade": { + "layer-statement-copy-crash.html": [ + "f183ab30ab72f2364dd71c37ff3b545bfaf556f1", + [ + null, + {} + ] + ] + }, "css-contain": { "contain-crash.html": [ "373e004c0507e764e1383b17a05e64537b6711ab", @@ -242888,6 +242897,19 @@ {} ] ], + "devicepixel2.html": [ + "581fefa0a2645a7ef2e4c102febc59c7a81d5bf2", + [ + null, + [ + [ + "/resize-observer/devicepixel2-ref.html", + "==" + ] + ], + {} + ] + ], "iframe-same-origin.html": [ "22d8399b23127354a5d711615fd44d7c37240773", [ @@ -327046,10 +327068,18 @@ "e8dd0b916eb51dd80442bd7de90d46183df6cc21", [] ], + "create-pattern-data-url.js": [ + "d3634dc424b96c619da5e9dfea865288ae4135fa", + [] + ], "devicepixel-ref.html": [ "a006732015be3bbf07c79ecd11d8a50c4ebbda3f", [] ], + "devicepixel2-ref.html": [ + "7674eb0ab835a1b02541a28b4ed9084e61b2e088", + [] + ], "iframe-same-origin-ref.html": [ "142db741efe4502da48e1b2bc94e25cacd77d7fc", []
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_arguments.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_arguments.tentative.https.window.js index 6f680eb..0c391a2a 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_arguments.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_arguments.tentative.https.window.js
@@ -10,9 +10,9 @@ options[property] = [out_of_range_value]; assert_throws_js(TypeError, () => { - new ComputePressureObserver(callback, options); + new PressureObserver(callback, options); }); - }, `ComputePressureObserver constructor throws when ${property} ` + + }, `PressureObserver constructor throws when ${property} ` + `is [${out_of_range_value}]`); } @@ -24,9 +24,9 @@ cpuUtilizationThresholds: [0.5] }; options[property] = [valid_value]; - const observer = new ComputePressureObserver(callback, options); - assert_true(observer instanceof ComputePressureObserver); - }, `ComputePressureObserver constructor accepts ${property} value ` + + const observer = new PressureObserver(callback, options); + assert_true(observer instanceof PressureObserver); + }, `PressureObserver constructor accepts ${property} value ` + `[${valid_value}]`); } } @@ -36,9 +36,9 @@ assert_throws_js(TypeError, () => { - new ComputePressureObserver( + new PressureObserver( callback, { cpuUtilizationThresholds: [0.5, 0.5] }); }); -}, 'ComputePressureObserver constructor throws when cpuUtilizationThresholds ' + +}, 'PressureObserver constructor throws when cpuUtilizationThresholds ' + 'has duplicates');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_basic.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_basic.tentative.https.window.js index 0b916a1..657ff634 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_basic.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_basic.tentative.https.window.js
@@ -5,7 +5,7 @@ // be represented exactly in floating-point, so === comparison works. const update = await new Promise((resolve, reject) => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); @@ -16,4 +16,4 @@ assert_less_than_equal(update.cpuUtilization, 1.0, 'cpuUtilization range'); assert_in_array(update.cpuUtilization, [0.25, 0.75], 'cpuUtilization quantization'); -}, 'An active ComputePressureObserver calls its callback at least once'); +}, 'An active PressureObserver calls its callback at least once');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_detached_iframe.tentative.https.html b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_detached_iframe.tentative.https.html index 4ca11112..e9c6b44 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_detached_iframe.tentative.https.html +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_detached_iframe.tentative.https.html
@@ -1,6 +1,6 @@ <!doctype html> <meta charset="utf-8"> -<title>ComputePressureObserver on DOMWindow of detached iframe</title> +<title>PressureObserver on DOMWindow of detached iframe</title> <script src="/resources/testharness.js"></script> <script src="/resources/testharnessreport.js"></script> <body> @@ -13,15 +13,15 @@ const frame_window = iframe.contentWindow; iframe.remove(); - assert_equals(undefined, frame_window.ComputePressureObserver); -}, 'ComputePressureObserver constructor does not exist in detached iframes'); + assert_equals(undefined, frame_window.PressureObserver); +}, 'PressureObserver constructor does not exist in detached iframes'); promise_test(async t => { const iframe = document.createElement('iframe'); document.body.appendChild(iframe); const frame_window = iframe.contentWindow; - const observer = new frame_window.ComputePressureObserver( + const observer = new frame_window.PressureObserver( () => {}, {cpuUtilizationThresholds: [0.5]}); const iframe_DOMException = frame_window.DOMException; @@ -31,14 +31,14 @@ // Calling observe() from a detached iframe should fail but not crash. await promise_rejects_dom(t, 'NotSupportedError', iframe_DOMException, observer.observe('cpu')); -}, 'ComputePressureObserver.observe() on detached frame rejects'); +}, 'PressureObserver.observe() on detached frame rejects'); promise_test(async t => { const iframe = document.createElement('iframe'); document.body.appendChild(iframe); const frame_window = iframe.contentWindow; - const observer = new frame_window.ComputePressureObserver( + const observer = new frame_window.PressureObserver( () => {}, {cpuUtilizationThresholds: [0.5]}); @@ -48,14 +48,14 @@ // Calling disconnect() from a detached iframe should not crash. observer.disconnect(); -}, 'ComputePressureObserver.stop() on detached frame returns'); +}, 'PressureObserver.stop() on detached frame returns'); promise_test(async t => { const iframe = document.createElement('iframe'); document.body.appendChild(iframe); const frame_window = iframe.contentWindow; - const observer = new frame_window.ComputePressureObserver( + const observer = new frame_window.PressureObserver( () => {}, {cpuUtilizationThresholds: [0.5]}); const iframe_DOMException = frame_window.DOMException; @@ -67,16 +67,16 @@ // Establish an observer and wait for an update in the main frame. This should // keep the test running long enough to catch any crash from the observe() - // call in the removed iframe's ComputePressureObserver. + // call in the removed iframe's PressureObserver. const update = await new Promise((resolve, reject) => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); }); assert_in_array(update.cpuUtilization, [0.25, 0.75], 'cpuUtilization quantization'); -}, 'Detaching frame while ComputePressureObserver.observe() settles'); +}, 'Detaching frame while PressureObserver.observe() settles'); </script> </body>
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_different_quantizations.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_different_quantizations.tentative.https.window.js index 1ded5a9..8fe2794 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_different_quantizations.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_different_quantizations.tentative.https.window.js
@@ -2,7 +2,7 @@ promise_test(async t => { const observer1_updates = []; - const observer1 = new ComputePressureObserver( + const observer1 = new PressureObserver( update => { observer1_updates.push(update); }, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer1.disconnect()); @@ -12,7 +12,7 @@ const observer2_updates = []; await new Promise((resolve, reject) => { - const observer2 = new ComputePressureObserver( + const observer2 = new PressureObserver( update => { observer2_updates.push(update); resolve(); @@ -45,7 +45,7 @@ const observer3_updates = []; await new Promise((resolve, reject) => { - const observer3 = new ComputePressureObserver( + const observer3 = new PressureObserver( update => { observer3_updates.push(update); resolve(); @@ -70,5 +70,5 @@ assert_equals(observer3_updates.length, 1); assert_in_array(observer3_updates[0].cpuUtilization, [0.375, 0.875], 'cpuUtilization quantization'); -}, 'ComputePressureObserver with a new quantization schema stops all ' + +}, 'PressureObserver with a new quantization schema stops all ' + 'other active observers in the same frame');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_different_quantizations_across_iframes.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_different_quantizations_across_iframes.tentative.https.window.js index fd7a9625..e1816a1 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_different_quantizations_across_iframes.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_different_quantizations_across_iframes.tentative.https.window.js
@@ -2,7 +2,7 @@ promise_test(async t => { const observer1_updates = []; - const observer1 = new ComputePressureObserver( + const observer1 = new PressureObserver( update => { observer1_updates.push(update); }, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer1.disconnect()); @@ -17,7 +17,7 @@ const observer2_updates = []; await new Promise((resolve, reject) => { - const observer2 = new iframe2.contentWindow.ComputePressureObserver( + const observer2 = new iframe2.contentWindow.PressureObserver( update => { observer2_updates.push(update); resolve(); @@ -53,7 +53,7 @@ const observer3_updates = []; await new Promise((resolve, reject) => { - const observer3 = new iframe3.contentWindow.ComputePressureObserver( + const observer3 = new iframe3.contentWindow.PressureObserver( update => { observer3_updates.push(update); resolve(); @@ -78,5 +78,5 @@ assert_equals(observer3_updates.length, 1); assert_in_array(observer3_updates[0].cpuUtilization, [0.375, 0.875], 'cpuUtilization quantization'); -}, 'ComputePressureObserver with a new quantization schema stops all ' + +}, 'PressureObserver with a new quantization schema stops all ' + 'other active observers');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect.tentative.https.window.js index 95a44669..b39af20 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect.tentative.https.window.js
@@ -2,7 +2,7 @@ promise_test(async t => { const observer1_updates = []; - const observer1 = new ComputePressureObserver(update => { + const observer1 = new PressureObserver(update => { observer1_updates.push(update); }, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer1.disconnect()); @@ -12,7 +12,7 @@ const observer2_updates = []; await new Promise((resolve, reject) => { - const observer2 = new ComputePressureObserver(update => { + const observer2 = new PressureObserver(update => { observer2_updates.push(update); resolve(); }, {cpuUtilizationThresholds: [0.5]}); @@ -34,7 +34,7 @@ const observer3_updates = []; await new Promise((resolve, reject) => { - const observer3 = new ComputePressureObserver(update => { + const observer3 = new PressureObserver(update => { observer3_updates.push(update); resolve(); }, {cpuUtilizationThresholds: [0.75]}); @@ -50,4 +50,4 @@ assert_in_array( observer3_updates[0].cpuUtilization, [0.375, 0.875], 'cpuUtilization quantization'); -}, 'Stopped ComputePressureObservers do not receive updates'); +}, 'Stopped PressureObserver do not receive updates');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.window.js index b14b3705..10e3ad6 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect_idempotent.tentative.https.window.js
@@ -2,7 +2,7 @@ promise_test(async t => { const observer1_updates = []; - const observer1 = new ComputePressureObserver(update => { + const observer1 = new PressureObserver(update => { observer1_updates.push(update); }, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer1.disconnect()); @@ -12,7 +12,7 @@ const observer2_updates = []; await new Promise((resolve, reject) => { - const observer2 = new ComputePressureObserver(update => { + const observer2 = new PressureObserver(update => { observer2_updates.push(update); resolve(); }, {cpuUtilizationThresholds: [0.5]}); @@ -34,7 +34,7 @@ const observer3_updates = []; await new Promise((resolve, reject) => { - const observer3 = new ComputePressureObserver(update => { + const observer3 = new PressureObserver(update => { observer3_updates.push(update); resolve(); }, {cpuUtilizationThresholds: [0.75]}); @@ -50,4 +50,4 @@ assert_in_array( observer3_updates[0].cpuUtilization, [0.375, 0.875], 'cpuUtilization quantization'); -}, 'Stopped ComputePressureObservers do not receive updates'); +}, 'Stopped PressureObserver do not receive updates');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect_immediately.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect_immediately.tentative.https.window.js index b14b3705..10e3ad6 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect_immediately.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_disconnect_immediately.tentative.https.window.js
@@ -2,7 +2,7 @@ promise_test(async t => { const observer1_updates = []; - const observer1 = new ComputePressureObserver(update => { + const observer1 = new PressureObserver(update => { observer1_updates.push(update); }, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer1.disconnect()); @@ -12,7 +12,7 @@ const observer2_updates = []; await new Promise((resolve, reject) => { - const observer2 = new ComputePressureObserver(update => { + const observer2 = new PressureObserver(update => { observer2_updates.push(update); resolve(); }, {cpuUtilizationThresholds: [0.5]}); @@ -34,7 +34,7 @@ const observer3_updates = []; await new Promise((resolve, reject) => { - const observer3 = new ComputePressureObserver(update => { + const observer3 = new PressureObserver(update => { observer3_updates.push(update); resolve(); }, {cpuUtilizationThresholds: [0.75]}); @@ -50,4 +50,4 @@ assert_in_array( observer3_updates[0].cpuUtilization, [0.375, 0.875], 'cpuUtilization quantization'); -}, 'Stopped ComputePressureObservers do not receive updates'); +}, 'Stopped PressureObserver do not receive updates');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_multiple.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_multiple.tentative.https.window.js index 0efca309..fef47e3 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_multiple.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_multiple.tentative.https.window.js
@@ -2,21 +2,21 @@ promise_test(async t => { const update1_promise = new Promise((resolve, reject) => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); }); const update2_promise = new Promise((resolve, reject) => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); }); const update3_promise = new Promise((resolve, reject) => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); @@ -29,5 +29,5 @@ assert_in_array(update.cpuUtilization, [0.25, 0.75], 'cpuUtilization quantization'); } -}, 'Three ComputePressureObserver instances with the same quantization ' + +}, 'Three PressureObserver instances with the same quantization ' + 'schema receive updates');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_multiple_across_iframes.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_multiple_across_iframes.tentative.https.window.js index c9f97a1..dff994c 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_multiple_across_iframes.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_multiple_across_iframes.tentative.https.window.js
@@ -2,7 +2,7 @@ promise_test(async t => { const update1_promise = new Promise((resolve, reject) => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); @@ -14,7 +14,7 @@ document.body.appendChild(iframe2); const update2_promise = new Promise((resolve, reject) => { - const observer = new iframe2.contentWindow.ComputePressureObserver( + const observer = new iframe2.contentWindow.PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); @@ -24,7 +24,7 @@ document.body.appendChild(iframe3); const update3_promise = new Promise((resolve, reject) => { - const observer = new iframe3.contentWindow.ComputePressureObserver( + const observer = new iframe3.contentWindow.PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); @@ -37,5 +37,5 @@ assert_in_array(update.cpuUtilization, [0.25, 0.75], 'cpuUtilization quantization'); } -}, 'Three ComputePressureObserver instances in different iframes, but with ' + +}, 'Three PressureObserver instances in different iframes, but with ' + 'the same quantization schema, receive updates');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_observe_idempotent.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_observe_idempotent.tentative.https.window.js index dd21502..925f73a3 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_observe_idempotent.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_observe_idempotent.tentative.https.window.js
@@ -5,7 +5,7 @@ // be represented exactly in floating-point, so === comparison works. const update = await new Promise((resolve, reject) => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.5]}); t.add_cleanup(() => observer.disconnect()); observer.observe('cpu').catch(reject); @@ -18,5 +18,5 @@ assert_less_than_equal(update.cpuUtilization, 1.0, 'cpuUtilization range'); assert_in_array(update.cpuUtilization, [0.25, 0.75], 'cpuUtilization quantization'); -}, 'ComputePressureObserver.observe() is idempotent'); +}, 'PressureObserver.observe() is idempotent');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_observe_unobserve_failure.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_observe_unobserve_failure.tentative.https.window.js index 478ef79..7d6e94c 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_observe_unobserve_failure.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_observe_unobserve_failure.tentative.https.window.js
@@ -1,19 +1,19 @@ 'use strict'; promise_test(async t => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( t.unreached_func('oops should not end up here'), {cpuUtilizationThresholds: [0.1, 0.5]}); t.add_cleanup(() => observer.disconnect()); await promise_rejects_js(t, TypeError, observer.observe('random')); -}, 'ComputePressureObserver.observe() requires a valid source'); +}, 'PressureObserver.observe() requires a valid source'); test(function(t) { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( t.unreached_func('oops should not end up here'), {cpuUtilizationThresholds: [0.1, 0.5]}); t.add_cleanup(() => observer.disconnect()); assert_throws_js(TypeError, () => { observer.unobserve('random'); }); -}, 'ComputePressureObserver.unobserve() requires a valid source'); +}, 'PressureObserver.unobserve() requires a valid source');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_supported_sources.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_supported_sources.tentative.https.window.js index 692a92c5..2a69e73 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_supported_sources.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_supported_sources.tentative.https.window.js
@@ -2,18 +2,18 @@ test(() => { // Compute Pressure should support at least "cpu" - const sources = ComputePressureObserver.supportedSources; + const sources = PressureObserver.supportedSources; assert_in_array('cpu', sources); -}, 'ComputePressureObserver should support at least "cpu"'); +}, 'PressureObserver should support at least "cpu"'); test(() => { // Compute Pressure should be frozen array - const sources = ComputePressureObserver.supportedSources; - assert_equals(sources, ComputePressureObserver.supportedSources); -}, 'ComputePressureObserver must return always the same array'); + const sources = PressureObserver.supportedSources; + assert_equals(sources, PressureObserver.supportedSources); +}, 'PressureObserver must return always the same array'); test(() => { // Compute Pressure should be frozen array - let sources = ComputePressureObserver.supportedSources; + let sources = PressureObserver.supportedSources; assert_equals(Object.isFrozen(), true); -}, 'ComputePressureObserver must return a frozen array'); +}, 'PressureObserver must return a frozen array');
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_take_records.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_take_records.tentative.https.window.js index b0baf999..c6da8f61 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_take_records.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_take_records.tentative.https.window.js
@@ -1,7 +1,7 @@ 'use strict'; test(t => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( t.unreached_func('This callback should not have been called.'), {cpuUtilizationThresholds: [0.25]}); @@ -12,7 +12,7 @@ promise_test(async t => { let observer; const record = await new Promise((resolve, reject) => { - observer = new ComputePressureObserver( + observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.25]}); t.add_cleanup(() => observer.disconnect());
diff --git a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_values.tentative.https.window.js b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_values.tentative.https.window.js index 7377253f..b51a3e3 100644 --- a/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_values.tentative.https.window.js +++ b/third_party/blink/web_tests/external/wpt/compute-pressure/compute_pressure_values.tentative.https.window.js
@@ -5,7 +5,7 @@ // be represented exactly in floating-point, so === comparison works. const update = await new Promise((resolve, reject) => { - const observer = new ComputePressureObserver( + const observer = new PressureObserver( resolve, {cpuUtilizationThresholds: [0.25]}); t.add_cleanup(() => observer.disconnect()); @@ -14,4 +14,4 @@ assert_in_array( update.cpuUtilization, [0.125, 0.625], 'cpuUtilization quantization'); -}, 'ComputePressureObserver quantizes utilization and speed separately'); +}, 'PressureObserver quantizes utilization and speed separately');
diff --git a/third_party/blink/web_tests/external/wpt/resize-observer/create-pattern-data-url.js b/third_party/blink/web_tests/external/wpt/resize-observer/create-pattern-data-url.js new file mode 100644 index 0000000..d3634dc4 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/resize-observer/create-pattern-data-url.js
@@ -0,0 +1,22 @@ +const patternSize = 4; + +export default function createPatternDataURL() { + const ctx = document.createElement('canvas').getContext('2d'); + ctx.canvas.width = patternSize; + ctx.canvas.height = patternSize; + + const b = [0, 0, 0, 255]; + const t = [0, 0, 0, 0]; + const r = [255, 0, 0, 255]; + const g = [0, 255, 0, 255]; + + const imageData = new ImageData(patternSize, patternSize); + imageData.data.set([ + b, t, t, r, + t, b, g, t, + t, r, b, t, + g, t, t, b, + ].flat()); + ctx.putImageData(imageData, 0, 0); + return {patternSize, dataURL: ctx.canvas.toDataURL()}; +}
diff --git a/third_party/blink/web_tests/external/wpt/resize-observer/devicepixel2-ref.html b/third_party/blink/web_tests/external/wpt/resize-observer/devicepixel2-ref.html new file mode 100644 index 0000000..7674eb0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/resize-observer/devicepixel2-ref.html
@@ -0,0 +1,21 @@ +<!doctype html> +<body> +<script type="module"> +import createPatternDataURL from './create-pattern-data-url.js'; + +const { patternSize, dataURL } = createPatternDataURL(); +document.body.style.backgroundImage = `url("${dataURL}")`; + +function setBackgroundPatternTo1DevicePixel() { + const oneDevicePixel = 1 / devicePixelRatio; + const patternPixels = oneDevicePixel * patternSize; + document.body.style.backgroundSize = `${patternPixels}px ${patternPixels}px`; +} +setBackgroundPatternTo1DevicePixel(); + +// If we're viewed interactively and the user activates +// full-page-zoom, changes the page zoom level, or resizes +// the window, update the rendering to account for that: +window.addEventListener('resize', setBackgroundPatternTo1DevicePixel); +</script> +</body>
diff --git a/third_party/blink/web_tests/external/wpt/resize-observer/devicepixel2.html b/third_party/blink/web_tests/external/wpt/resize-observer/devicepixel2.html new file mode 100644 index 0000000..581fefa0 --- /dev/null +++ b/third_party/blink/web_tests/external/wpt/resize-observer/devicepixel2.html
@@ -0,0 +1,129 @@ +<!doctype html> +<link rel="match" href="devicepixel2-ref.html"> +<meta name="assert" content="Resize Observer's reported device pixel content box size should be consistent with the actual pixel-snapped painted box size"> +<style> + html, body { + margin: 0; + } + .line { + width: 100px; + display: flex; + } + .line>* { + flex: 1; + height: 20px; + } +</style> +<body> + <div></div> + <script type="module"> +import createPatternDataURL from './create-pattern-data-url.js'; + +const {patternSize, dataURL} = createPatternDataURL(); + +/** + * Set the pattern's size on this element so that it draws where + * 1 pixel in the pattern maps to 1 devicePixel and then set + * its position so it's aligned to the pattern of the body element. + */ +function setPattern(elem, x, y) { + const oneDevicePixel = 1 / devicePixelRatio; + const patternPixels = oneDevicePixel * patternSize; + elem.style.backgroundImage = `url("${dataURL}")`; + elem.style.backgroundSize = `${patternPixels}px ${patternPixels}px`; + elem.style.backgroundPosition = `${-x * oneDevicePixel}px ${-y * oneDevicePixel}px`; +} + +/* +This test creates elements like this + + <body> + <div> + <div class="line"><div></div><div></div></div> + <div class="line"><div></div><div></div><div></div></div> + <div class="line"><div></div><div></div><div></div><div></div></div> + ... + </div> + </body> + +It has the first `<div>` starting at the top left corner of the page, the +same as the body so they should both have a devicePixel position of 0,0 + +The devicePixelContentBoxSize of all the elements is queried with +a ResizeObserver. + +It then sets a repeating background-image, background-size and +background-position on the all of the innermost children elements so +they have a 4x4 checkerboard image at a size that should draw each pixel +of the 4x4 checkerboard pattern in single devicePixels and so they should +all align with the same pattern applied in a similar manner to the body. + +In other words + + <div class="line"> + <div></div><div></div><div></div> + </div> + +The first child will be displayed at left = 0 so its background-position is +set to 0px 0px. The second child should be displayed at + +secondChildLeft = entry(firstChild).devicePixelContentBoxSize[0].inlineSize. + +The 3rd child should be displayed at + +thirdChildLeft = entry(firstChild).devicePixelContentBoxSize[0].inlineSize + + entry(secondChild).devicePixelContentBoxSize[0].inlineSize + +Using the children's device-pixel positions (determined as described above), +we then set each child's background-position to the negated version of the +position that we computed for that child. This effectively makes its pattern's +origin match the document origin. + +If what devicePixelContentBox reports is correct the children's patterns +will align with the pattern in the body and the children will be invisible. +If what devicePixelContentBox reports is incorrect the patterns will not +align and it should be clearly visible. +*/ + +setPattern(document.body, 0, 0); +const wrapperElem = document.querySelector('div'); + +const elemToDevicePixelSize = new Map(); + +function setPatternsUsingSizeInfo(entries) { + for (const entry of entries) { + elemToDevicePixelSize.set(entry.target, { + inlineSize: entry.devicePixelContentBoxSize[0].inlineSize, + blockSize: entry.devicePixelContentBoxSize[0].blockSize, + }); + } + + let devicePixelY = 0; + for (const lineElem of wrapperElem.children) { + let devicePixelX = 0; + for (const childElem of lineElem.children) { + setPattern(childElem, devicePixelX, devicePixelY); + const devicePixelSize = elemToDevicePixelSize.get(childElem); + devicePixelX += devicePixelSize.inlineSize; + } + + const lineEntry = elemToDevicePixelSize.get(lineElem); + const lineHeight = lineEntry.blockSize; + devicePixelY += lineHeight; + } +} + +const observer = new ResizeObserver(setPatternsUsingSizeInfo); +for (let numFlexItems = 2; numFlexItems < 15; ++numFlexItems) { + const lineElem = document.createElement('div'); + lineElem.className = 'line'; + observer.observe(lineElem, {box:"device-pixel-content-box"}); + for (let j = 0; j < numFlexItems; ++j) { + const inner = document.createElement('div'); + lineElem.appendChild(inner); + observer.observe(inner, {box:"device-pixel-content-box"}); + } + wrapperElem.appendChild(lineElem); +} + </script> +</body>
diff --git a/third_party/blink/web_tests/http/tests/inspector-protocol/bfcache/resources/page-with-embed.html b/third_party/blink/web_tests/http/tests/inspector-protocol/bfcache/resources/page-with-embed.html index 72ffaf4..0c0c5cb 100644 --- a/third_party/blink/web_tests/http/tests/inspector-protocol/bfcache/resources/page-with-embed.html +++ b/third_party/blink/web_tests/http/tests/inspector-protocol/bfcache/resources/page-with-embed.html
@@ -1 +1 @@ -<embed type="application/x-shockwave-flash"></embed> +<embed type="application/x-blink-test-plugin"></embed>
diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/compute-pressure-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/compute-pressure-origin-trial-interfaces.html index e66cca32..6b99505e 100644 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/compute-pressure-origin-trial-interfaces.html +++ b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/compute-pressure-origin-trial-interfaces.html
@@ -12,12 +12,12 @@ 'use strict' test(t => { OriginTrialsHelper.check_properties_exist(this, { - 'ComputePressureObserver': ['observe', 'unobserve', 'disconnect', 'takeRecords'], + 'PressureObserver': ['observe', 'unobserve', 'disconnect', 'takeRecords'], }); }, 'Compute Pressure API interfaces and properties in Origin-Trial enabled document.'); test(t => { - assert_true('ComputePressureObserver' in window, 'ComputePressureObserver object exists on window scope'); - assert_not_equals(window.ComputePressureObserver, undefined, 'ComputePressureObserver can be accessed on window'); + assert_true('PressureObserver' in window, 'PressureObserver object exists on window scope'); + assert_not_equals(window.PressureObserver, undefined, 'PressureObserver can be accessed on window'); }, 'Compute Pressure API entry point in Origin-Trial enabled document.'); </script>
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/compute-pressure/compute_pressure_different_quantizations_across_iframes.tentative.https.window-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/compute-pressure/compute_pressure_different_quantizations_across_iframes.tentative.https.window-expected.txt index 716315c..4f67fa3 100644 --- a/third_party/blink/web_tests/platform/generic/external/wpt/compute-pressure/compute_pressure_different_quantizations_across_iframes.tentative.https.window-expected.txt +++ b/third_party/blink/web_tests/platform/generic/external/wpt/compute-pressure/compute_pressure_different_quantizations_across_iframes.tentative.https.window-expected.txt
@@ -1,4 +1,4 @@ This is a testharness.js-based test. -FAIL ComputePressureObserver with a new quantization schema stops all other active observers assert_equals: observer2.observe() should have stopped observer1; the two observers have different quantization schemes expected 0 but got 1 +FAIL PressureObserver with a new quantization schema stops all other active observers assert_equals: observer2.observe() should have stopped observer1; the two observers have different quantization schemes expected 0 but got 1 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/css/cssom/getComputedStyle-detached-subtree-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/css/cssom/getComputedStyle-detached-subtree-expected.txt index 47ff46a..b2f691a 100644 --- a/third_party/blink/web_tests/platform/generic/external/wpt/css/cssom/getComputedStyle-detached-subtree-expected.txt +++ b/third_party/blink/web_tests/platform/generic/external/wpt/css/cssom/getComputedStyle-detached-subtree-expected.txt
@@ -1,9 +1,9 @@ This is a testharness.js-based test. PASS getComputedStyle returns no style for detached element -FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 359 -FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 359 -FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 359 -FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 359 +FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) assert_equals: expected 0 but got 360 +FAIL getComputedStyle returns no style for element in non-rendered iframe (display: none) from iframe's window assert_equals: expected 0 but got 360 +FAIL getComputedStyle returns no style for element outside the flat tree assert_equals: expected 0 but got 360 +FAIL getComputedStyle returns no style for descendant outside the flat tree assert_equals: expected 0 but got 360 PASS getComputedStyle returns no style for shadow tree outside of flattened tree Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/css/cssom/getComputedStyle-pseudo-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/css/cssom/getComputedStyle-pseudo-expected.txt index e31266c7..27174342 100644 --- a/third_party/blink/web_tests/platform/generic/external/wpt/css/cssom/getComputedStyle-pseudo-expected.txt +++ b/third_party/blink/web_tests/platform/generic/external/wpt/css/cssom/getComputedStyle-pseudo-expected.txt
@@ -7,6 +7,6 @@ PASS Item-based blockification of nonexistent pseudo-elements PASS display: contents on pseudo-elements PASS Dynamically change to display: contents on pseudo-elements -FAIL Unknown pseudo-elements assert_equals: Should return an empty style for unknown pseudo-elements starting with double-colon expected 0 but got 359 +FAIL Unknown pseudo-elements assert_equals: Should return an empty style for unknown pseudo-elements starting with double-colon expected 0 but got 360 Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-html-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-html-expected.txt deleted file mode 100644 index 95a330a..0000000 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-html-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -NOTRUN Page with <embed type=text/html src=/resources/blank.html> Should be BFCached but actually wasn't -NOTRUN Page with <object type=text/html data=/resources/blank.html> Should be BFCached but actually wasn't -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-img-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-img-expected.txt deleted file mode 100644 index e66d9ee..0000000 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-img-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -NOTRUN Page with <embed type=image/png src=/images/blue.png> Should be BFCached but actually wasn't -NOTRUN Page with <object type=image/png data=/images/blue.png> Should be BFCached but actually wasn't -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-js-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-js-expected.txt deleted file mode 100644 index c8fa78c..0000000 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-js-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -NOTRUN Page with <embed type=application/javascript src=/resources/test-only-api.js> Should be BFCached but actually wasn't -NOTRUN Page with <object type=application/javascript data=/resources/test-only-api.js> Should be BFCached but actually wasn't -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-mp4-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-mp4-expected.txt deleted file mode 100644 index 177761f..0000000 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-mp4-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -NOTRUN Page with <embed type=undefined src=/media/white.mp4> Should be BFCached but actually wasn't -NOTRUN Page with <object type=undefined data=/media/white.mp4> Should be BFCached but actually wasn't -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-not-found-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-not-found-expected.txt index ee76b29..972e753 100644 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-not-found-expected.txt +++ b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-not-found-expected.txt
@@ -1,5 +1,5 @@ This is a testharness.js-based test. -NOTRUN Page with <embed type=image/png src=/404.png> Should be BFCached but actually wasn't +PASS Page with <embed type=image/png src=/404.png> NOTRUN Page with <object type=image/png data=/404.png> Should be BFCached but actually wasn't Harness: the test ran to completion.
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-type-only-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-type-only-expected.txt deleted file mode 100644 index cc99785b..0000000 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/embedded-content/bfcache/embedded-type-only-expected.txt +++ /dev/null
@@ -1,5 +0,0 @@ -This is a testharness.js-based test. -NOTRUN Page with <embed type=text/html src=undefined> Should be BFCached but actually wasn't -NOTRUN Page with <object type=text/html data=undefined> Should be BFCached but actually wasn't -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/scripting-1/the-script-element/defer-script/async-script-2-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/scripting-1/the-script-element/defer-script/async-script-2-expected.txt deleted file mode 100644 index 5218a54c..0000000 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/scripting-1/the-script-element/defer-script/async-script-2-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Async Script Execution Order Uncaught Error: assert_array_equals: Execution order expected property 2 to be "Async1" but got "Sync2" (expected array ["Inline1", "Sync1", "Async1", "Sync2", "EndOfBody", "DOMContentLoaded"] got ["Inline1", "Sync1", "Sync2", "EndOfBody", "DOMContentLoaded", "Async1"]) -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/scripting-1/the-script-element/defer-script/document-write-expected.txt b/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/scripting-1/the-script-element/defer-script/document-write-expected.txt deleted file mode 100644 index 58626a49..0000000 --- a/third_party/blink/web_tests/platform/generic/external/wpt/html/semantics/scripting-1/the-script-element/defer-script/document-write-expected.txt +++ /dev/null
@@ -1,7 +0,0 @@ -This is a testharness.js-based test. -FAIL document.write() assert_array_equals: Execution order expected property 2 to be "Async1" but got "Sync1" (expected array ["Inline1", "Sync2", "Async1", "Sync1", "EndOfBody", "DOMContentLoaded", "WindowLoad"] got ["Inline1", "Sync2", "Sync1", "EndOfBody", "DOMContentLoaded", "Async1", "WindowLoad"]) -FAIL document.write(),close() assert_array_equals: Execution order expected property 2 to be "Async1" but got "Sync1" (expected array ["Inline1", "Sync2", "Async1", "Sync1", "EndOfBody", "DOMContentLoaded", "WindowLoad"] got ["Inline1", "Sync2", "Sync1", "EndOfBody", "DOMContentLoaded", "Async1", "WindowLoad"]) -FAIL document.open(),write() assert_array_equals: Execution order expected property 2 to be "Async1" but got "Sync1" (expected array ["Inline1", "Sync2", "Async1", "Sync1", "EndOfBody", "DOMContentLoaded", "WindowLoad"] got ["Inline1", "Sync2", "Sync1", "EndOfBody", "DOMContentLoaded", "Async1", "WindowLoad"]) -FAIL document.open(),write(),close() assert_array_equals: Execution order expected property 2 to be "Async1" but got "Sync1" (expected array ["Inline1", "Sync2", "Async1", "Sync1", "EndOfBody", "DOMContentLoaded", "WindowLoad"] got ["Inline1", "Sync2", "Sync1", "EndOfBody", "DOMContentLoaded", "Async1", "WindowLoad"]) -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/fast/css/getComputedStyle/computed-style-listing-expected.txt b/third_party/blink/web_tests/platform/generic/fast/css/getComputedStyle/computed-style-listing-expected.txt index 0a5e0be..9555d9ce 100644 --- a/third_party/blink/web_tests/platform/generic/fast/css/getComputedStyle/computed-style-listing-expected.txt +++ b/third_party/blink/web_tests/platform/generic/fast/css/getComputedStyle/computed-style-listing-expected.txt
@@ -52,6 +52,7 @@ align-self: auto alignment-baseline: auto anchor-name: none +anchor-scroll: none animation-delay: 0s animation-direction: normal animation-duration: 0s
diff --git a/third_party/blink/web_tests/platform/generic/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt b/third_party/blink/web_tests/platform/generic/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt index 90b6628..e9a4c8f 100644 --- a/third_party/blink/web_tests/platform/generic/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt +++ b/third_party/blink/web_tests/platform/generic/fast/css/getComputedStyle/computed-style-without-renderer-listing-expected.txt
@@ -52,6 +52,7 @@ align-self: auto alignment-baseline: auto anchor-name: none +anchor-scroll: none animation-delay: 0s animation-direction: normal animation-duration: 0s
diff --git a/third_party/blink/web_tests/platform/generic/fast/js/instanceof-test-expected.txt b/third_party/blink/web_tests/platform/generic/fast/js/instanceof-test-expected.txt index 56750df0..8cc2845 100644 --- a/third_party/blink/web_tests/platform/generic/fast/js/instanceof-test-expected.txt +++ b/third_party/blink/web_tests/platform/generic/fast/js/instanceof-test-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE ERROR: new Worker() has failed to fetch script. instanceof test On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
diff --git a/third_party/blink/web_tests/platform/generic/fast/workers/chromium/worker-finish-crash-expected.txt b/third_party/blink/web_tests/platform/generic/fast/workers/chromium/worker-finish-crash-expected.txt index f1b79f73..654cd1b8 100644 --- a/third_party/blink/web_tests/platform/generic/fast/workers/chromium/worker-finish-crash-expected.txt +++ b/third_party/blink/web_tests/platform/generic/fast/workers/chromium/worker-finish-crash-expected.txt
@@ -1,2 +1 @@ -CONSOLE ERROR: new Worker() has failed to fetch script. Test to ensure that finishing a Worker won't re-enter. We pass if we don't crash.
diff --git a/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-invalid-context-expected.txt b/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-invalid-context-expected.txt index 9f12b4cf..9edcdd3 100644 --- a/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-invalid-context-expected.txt +++ b/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-invalid-context-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE ERROR: new Worker() has failed to fetch script. This test checks that the invalid context doesn't cause crashes. DONE
diff --git a/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-redirect-expected.txt b/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-redirect-expected.txt index 7986e3c..3120832 100644 --- a/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-redirect-expected.txt +++ b/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-redirect-expected.txt
@@ -1,6 +1,5 @@ CONSOLE ERROR: Unsafe attempt to load URL http://localhost:8000/workers/resources/worker-redirect-target.js from frame with URL http://127.0.0.1:8000/workers/worker-redirect.html. Domains, protocols and ports must match. -CONSOLE ERROR: new Worker() has failed to fetch script. Test that loading the worker's script does not allow a cross origin redirect (bug 26146) SUCCESS: threw exception (SecurityError: Failed to construct 'Worker': Script at 'http://localhost:8000/workers/resources/worker-target.js' cannot be accessed from origin 'http://127.0.0.1:8000'.) when attempting to cross origin while loading the worker script.
diff --git a/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-workerScriptNotThere-expected.txt b/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-workerScriptNotThere-expected.txt index bd7c97d..806443e 100644 --- a/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-workerScriptNotThere-expected.txt +++ b/third_party/blink/web_tests/platform/generic/http/tests/workers/worker-workerScriptNotThere-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE ERROR: new Worker() has failed to fetch script. Test worker file does not exist error. Should print two "PASS" statements followed by "DONE". The order of the error events should be onerror and then error event, and this test should be improved to verify that when bug https://bugs.webkit.org/show_bug.cgi?id=62485 is fixed.
diff --git a/third_party/blink/web_tests/platform/generic/svg/css/getComputedStyle-listing-expected.txt b/third_party/blink/web_tests/platform/generic/svg/css/getComputedStyle-listing-expected.txt index ed2341d..8d46e0f 100644 --- a/third_party/blink/web_tests/platform/generic/svg/css/getComputedStyle-listing-expected.txt +++ b/third_party/blink/web_tests/platform/generic/svg/css/getComputedStyle-listing-expected.txt
@@ -52,6 +52,7 @@ align-self: auto alignment-baseline: auto anchor-name: none +anchor-scroll: none animation-delay: 0s animation-direction: normal animation-duration: 0s
diff --git a/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-disabled/wpt_internal/async-script-scheduling/execution-order-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-disabled/wpt_internal/async-script-scheduling/execution-order-expected.txt deleted file mode 100644 index 542616ff..0000000 --- a/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-disabled/wpt_internal/async-script-scheduling/execution-order-expected.txt +++ /dev/null
@@ -1,4 +0,0 @@ -This is a testharness.js-based test. -FAIL Async Script Execution Order Uncaught Error: assert_equals: expected "async_preload;async_blocking_render;inline1;external;inline2;defer;DOMContentLoaded;async" but got "async_preload;async_blocking_render;async;inline1;external;inline2;defer;DOMContentLoaded" -Harness: the test ran to completion. -
diff --git a/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-finished-parsing/wpt_internal/async-script-scheduling/execution-order-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-finished-parsing/wpt_internal/async-script-scheduling/execution-order-expected.txt new file mode 100644 index 0000000..163d065b --- /dev/null +++ b/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-finished-parsing/wpt_internal/async-script-scheduling/execution-order-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Async Script Execution Order Uncaught Error: assert_equals: expected "async_preload;async_blocking_render;async;inline1;external;inline2;defer;DOMContentLoaded" but got "async_preload;async_blocking_render;inline1;external;inline2;defer;DOMContentLoaded;async" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-first-paint-or-finished-parsing/wpt_internal/async-script-scheduling/execution-order-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-first-paint-or-finished-parsing/wpt_internal/async-script-scheduling/execution-order-expected.txt new file mode 100644 index 0000000..163d065b --- /dev/null +++ b/third_party/blink/web_tests/platform/generic/virtual/async-script-scheduling-first-paint-or-finished-parsing/wpt_internal/async-script-scheduling/execution-order-expected.txt
@@ -0,0 +1,4 @@ +This is a testharness.js-based test. +FAIL Async Script Execution Order Uncaught Error: assert_equals: expected "async_preload;async_blocking_render;async;inline1;external;inline2;defer;DOMContentLoaded" but got "async_preload;async_blocking_render;inline1;external;inline2;defer;DOMContentLoaded;async" +Harness: the test ran to completion. +
diff --git a/third_party/blink/web_tests/platform/generic/virtual/plz-dedicated-worker/http/tests/workers/worker-redirect-expected.txt b/third_party/blink/web_tests/platform/generic/virtual/plz-dedicated-worker/http/tests/workers/worker-redirect-expected.txt index 24e804a..cd233a3 100644 --- a/third_party/blink/web_tests/platform/generic/virtual/plz-dedicated-worker/http/tests/workers/worker-redirect-expected.txt +++ b/third_party/blink/web_tests/platform/generic/virtual/plz-dedicated-worker/http/tests/workers/worker-redirect-expected.txt
@@ -1,4 +1,3 @@ -CONSOLE ERROR: new Worker() has failed to fetch script. Test that loading the worker's script does not allow a cross origin redirect (bug 26146) SUCCESS: threw exception (SecurityError: Failed to construct 'Worker': Script at 'http://localhost:8000/workers/resources/worker-target.js' cannot be accessed from origin 'http://127.0.0.1:8000'.) when attempting to cross origin while loading the worker script.
diff --git a/third_party/blink/web_tests/platform/generic/webexposed/css-properties-as-js-properties-expected.txt b/third_party/blink/web_tests/platform/generic/webexposed/css-properties-as-js-properties-expected.txt index 16c3abd..bb7f173 100644 --- a/third_party/blink/web_tests/platform/generic/webexposed/css-properties-as-js-properties-expected.txt +++ b/third_party/blink/web_tests/platform/generic/webexposed/css-properties-as-js-properties-expected.txt
@@ -9,6 +9,7 @@ alignmentBaseline all anchorName +anchorScroll animation animationDelay animationDirection
diff --git a/third_party/blink/web_tests/platform/generic/webexposed/css-property-listing-expected.txt b/third_party/blink/web_tests/platform/generic/webexposed/css-property-listing-expected.txt index 95223430..9d8d8d8 100644 --- a/third_party/blink/web_tests/platform/generic/webexposed/css-property-listing-expected.txt +++ b/third_party/blink/web_tests/platform/generic/webexposed/css-property-listing-expected.txt
@@ -59,6 +59,7 @@ alignment-baseline all anchor-name + anchor-scroll animation-delay animation-direction animation-duration
diff --git a/third_party/blink/web_tests/platform/generic/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/platform/generic/webexposed/global-interface-listing-expected.txt index bb1f710..6fe3b04 100644 --- a/third_party/blink/web_tests/platform/generic/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/platform/generic/webexposed/global-interface-listing-expected.txt
@@ -1259,14 +1259,6 @@ getter readable getter writable method constructor -interface ComputePressureObserver - static getter supportedSources - attribute @@toStringTag - method constructor - method disconnect - method observe - method takeRecords - method unobserve interface ComputedAccessibleNode attribute @@toStringTag getter atomic @@ -6694,6 +6686,14 @@ method reconnect method start setter onconnectionavailable +interface PressureObserver + static getter supportedSources + attribute @@toStringTag + method constructor + method disconnect + method observe + method takeRecords + method unobserve interface ProcessingInstruction : CharacterData attribute @@toStringTag getter sheet
diff --git a/third_party/blink/web_tests/wpt_internal/async-script-scheduling/execution-order.html b/third_party/blink/web_tests/wpt_internal/async-script-scheduling/execution-order.html index 8274eedf..94be7fb09 100644 --- a/third_party/blink/web_tests/wpt_internal/async-script-scheduling/execution-order.html +++ b/third_party/blink/web_tests/wpt_internal/async-script-scheduling/execution-order.html
@@ -21,11 +21,7 @@ } window.onload = e => { const actualOrder = logs.join(";"); - // The following expectedOrder expects that the - // "DelayAsyncScriptExecution" feature is enabled with - // "delay_type:first_paint_or_finished_parsing" feature parameter. - const expectedOrder = - "async_preload;async_blocking_render;inline1;external;inline2;defer;DOMContentLoaded;async"; + const expectedOrder = "async_preload;async_blocking_render;async;inline1;external;inline2;defer;DOMContentLoaded"; assert_equals(actualOrder, expectedOrder); done(); };
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-position-001.html b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-position-001.html index 866e4aa..f8ea26ca1 100644 --- a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-position-001.html +++ b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-position-001.html
@@ -2,7 +2,9 @@ <title>Tests `anchor` function for top/left/bottom/right properties</title> <link rel="help" href="https://tabatkins.github.io/specs/css-anchor-position/#propdef-anchor-name"> <link rel="author" href="mailto:kojii@chromium.org"> -<link ref="match" href="reference/anchor-position-001-ref.html"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> <style> #container { position: relative; @@ -10,18 +12,16 @@ #a1 { anchor-name: --a1; background: orange; - position: absolute; - left: 100px; - top: 100px; + margin-left: 100px; + margin-top: 100px; width: 100px; height: 100px; } #a2 { anchor-name: --a2; background: purple; - position: absolute; - left: 500px; - top: 300px; + margin-left: 500px; + margin-top: 100px; width: 100px; height: 100px; } @@ -37,14 +37,16 @@ background: red; position: absolute; left: 200px; - top: 200px; + top: 100px; width: 300px; height: 100px; } </style> -<body id="container"> +<body id="container" onload="checkLayout('#target')"> <div id="a1"></div> <div id="a2"></div> <div id="ref"></div> - <div id="target"></div> + <div id="target" + data-offset-x=200 data-offset-y=100 + data-expected-width=300 data-expected-height=100></div> </body>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-position-dynamic-001.html b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-position-dynamic-001.html index 78da7b7..40b9b53 100644 --- a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-position-dynamic-001.html +++ b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-position-dynamic-001.html
@@ -2,7 +2,9 @@ <title>Tests `anchor` function when anchor positions are changed dynamically</title> <link rel="help" href="https://tabatkins.github.io/specs/css-anchor-position/#propdef-anchor-name"> <link rel="author" href="mailto:kojii@chromium.org"> -<link ref="match" href="reference/anchor-position-001-ref.html"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/check-layout-th.js"></script> <style> #container { position: relative; @@ -10,9 +12,8 @@ #a1 { anchor-name: --a1; background: orange; - position: absolute; - left: 100px; - top: 100px; + margin-left: 100px; + margin-top: 100px; width: 50px; height: 50px; } @@ -23,15 +24,14 @@ #a2 { anchor-name: --a2; background: purple; - position: absolute; - left: 250px; - top: 350px; + margin-left: 250px; + margin-top: 350px; width: 100px; height: 100px; } .after #a2 { - left: 500px; - top: 300px; + margin-left: 500px; + margin-top: 100px; } #target { background: green; @@ -45,7 +45,7 @@ background: red; position: absolute; left: 200px; - top: 200px; + top: 100px; width: 300px; height: 100px; } @@ -54,9 +54,12 @@ <div id="a1"></div> <div id="a2"></div> <div id="ref"></div> - <div id="target"></div> + <div id="target" + data-offset-x=200 data-offset-y=100 + data-expected-width=300 data-expected-height=100></div> <script> document.body.offsetTop; // Force layout. container.classList.add('after'); +checkLayout('#target'); </script> </body>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-scroll-basics.html b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-scroll-basics.html new file mode 100644 index 0000000..b47050d --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-scroll-basics.html
@@ -0,0 +1,71 @@ +<!DOCTYPE html> +<title>Basic of anchor-scroll: anchored elements should be "pinned" to the anchor when anchor is scrolled</title> +<link rel="author" href="mailto:xiaochengh@chromium.org"> +<link rel="help" href="https://tabatkins.github.io/specs/css-anchor-position/"> +<link rel="match" href="reference/anchor-scroll-ref.html"> +<link rel="stylesheet" href="/fonts/ahem.css"> +<style> +body { + font: 20px/1 Ahem; + margin: 0; +} + +#scroll-container { + width: 400px; + height: 400px; + overflow: scroll; +} + +#scroll-contents { + width: 1000px; + height: 1000px; + position: relative; +} + +#placefiller-above-anchor { + height: 500px; +} + +#placefiller-before-anchor { + display: inline-block; + width: 500px; +} + +#anchor { + anchor-name: --anchor; +} + +#inner-anchored { + color: green; + position: absolute; + left: anchor(--anchor left); + bottom: anchor(--anchor top); + anchor-scroll: --anchor; +} + +#outer-anchored { + color: yellow; + position: absolute; + left: anchor(--anchor left); + top: anchor(--anchor bottom); + anchor-scroll: --anchor; +} +</style> + +<div style="position: relative"> + <div id="scroll-container"> + <div id="scroll-contents"> + <div id="placefiller-above-anchor"></div> + <div id="placefiller-before-anchor"></div> + <span id="anchor">anchor</span> + <div id="inner-anchored">inner-anchored</div> + </div> + </div> + <div id="outer-anchored">outer-anchored</div> +</div> + +<script> +const scroller = document.getElementById('scroll-container'); +scroller.scrollTop = 300; +scroller.scrollLeft = 450; +</script>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-size-001.html b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-size-001.html index 58fb6fc..9114009 100644 --- a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-size-001.html +++ b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-size-001.html
@@ -11,7 +11,6 @@ } .anchor1 { anchor-name: --a1; - position: absolute; width: 5px; height: 7px; background: orange;
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-size-replaced-001.html b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-size-replaced-001.html index 2e0c641..9efe4a04 100644 --- a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-size-replaced-001.html +++ b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/anchor-size-replaced-001.html
@@ -11,7 +11,6 @@ } .anchor1 { anchor-name: --a1; - position: absolute; width: 5px; height: 24px; background: orange;
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/reference/anchor-position-001-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/reference/anchor-position-001-ref.html deleted file mode 100644 index 6fbb0f7..0000000 --- a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/reference/anchor-position-001-ref.html +++ /dev/null
@@ -1,37 +0,0 @@ -<!DOCTYPE html> -<style> -#container { - position: relative; -} -#a1 { - anchor-name: --a1; - background: orange; - position: absolute; - left: 100px; - top: 100px; - width: 100px; - height: 100px; -} -#a2 { - anchor-name: --a2; - background: purple; - position: absolute; - left: 500px; - top: 300px; - width: 100px; - height: 100px; -} -#ref { - background: green; - position: absolute; - left: 200px; - top: 200px; - width: 300px; - height: 100px; -} -</style> -<body id="container"> - <div id="a1"></div> - <div id="a2"></div> - <div id="ref"></div> -</body>
diff --git a/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/reference/anchor-scroll-ref.html b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/reference/anchor-scroll-ref.html new file mode 100644 index 0000000..7935f38 --- /dev/null +++ b/third_party/blink/web_tests/wpt_internal/css/css-anchor-position/reference/anchor-scroll-ref.html
@@ -0,0 +1,61 @@ +<!DOCTYPE html> +<title>Basic of anchor-scroll: anchored elements should be "pinned" to the anchor when anchor is scrolled</title> +<link rel="stylesheet" href="/fonts/ahem.css"> +<style> +body { + font: 20px/1 Ahem; + margin: 0; +} + +#scroll-container { + width: 400px; + height: 400px; + overflow: scroll; +} + +#scroll-contents { + width: 1000px; + height: 1000px; + position: relative; +} + +#placefiller-above-anchor { + height: 500px; +} + +#placefiller-before-anchor { + display: inline-block; + width: 500px; +} + +#inner-anchored { + color: green; + position: fixed; + left: 70px; + top: 180px; +} + +#outer-anchored { + color: yellow; + position: fixed; + left: 70px; + top: 220px; +} +</style> + +<div id="scroll-container"> + <div id="scroll-contents"> + <div id="placefiller-above-anchor"></div> + <div id="placefiller-before-anchor"></div> + <span id="anchor">anchor</span> + </div> +</div> + +<div id="inner-anchored">inner-anchored</div> +<div id="outer-anchored">outer-anchored</div> + +<script> +const scroller = document.getElementById('scroll-container'); +scroller.scrollTop = 300; +scroller.scrollLeft = 450; +</script>
diff --git a/third_party/libaom/README.chromium b/third_party/libaom/README.chromium index 70e6b19..756fed68 100644 --- a/third_party/libaom/README.chromium +++ b/third_party/libaom/README.chromium
@@ -1,11 +1,10 @@ Name: Alliance for Open Media Video Codec Short Name: libaom URL: https://aomedia.googlesource.com/aom/ -Version: 3.1.2 -CPEPrefix: cpe:/a:aomedia:aomedia:3.1.2 +Version: 3.4.0 Date: Wednesday July 06 2022 -Branch: main -Commit: 8dcdafc6d4a2f9f8ea8104f26eca5d123eefcb7f +Revision: 8dcdafc6d4a2f9f8ea8104f26eca5d123eefcb7f +CPEPrefix: cpe:/a:aomedia:aomedia:3.4.0 License: BSD License File: source/libaom/LICENSE Security Critical: yes
diff --git a/third_party/libaom/cmake_update.sh b/third_party/libaom/cmake_update.sh index 64ae3b6..e83cd79 100755 --- a/third_party/libaom/cmake_update.sh +++ b/third_party/libaom/cmake_update.sh
@@ -87,14 +87,14 @@ --date=format:"%A %B %d %Y")) sed -E -i.bak \ -e "s/^(Date:)[[:space:]]+.*$/\1 ${vals[0]}/" \ - -e "s/^(Commit:)[[:space:]]+[a-f0-9]{40}/\1 ${vals[1]}/" \ + -e "s/^(Revision:)[[:space:]]+[a-f0-9]{40}/\1 ${vals[1]}/" \ ${BASE}/README.chromium rm ${BASE}/README.chromium.bak cat <<EOF README.chromium updated with: Date: ${vals[0]} -Commit: ${vals[1]} +Revision: ${vals[1]} EOF }
diff --git a/third_party/libgav1/README.chromium b/third_party/libgav1/README.chromium index 7ae7ef56..733e246 100644 --- a/third_party/libgav1/README.chromium +++ b/third_party/libgav1/README.chromium
@@ -1,17 +1,16 @@ Name: libgav1 Short Name: libgav1 URL: https://chromium.googlesource.com/codecs/libgav1/ -Version: 0 +Version: v0.18.0 Date: Monday June 27 2022 -Branch: master -Commit: cd53f7c0d6a1c005e38874d143c8876d375bae70 +Revision: cd53f7c0d6a1c005e38874d143c8876d375bae70 License: Apache 2.0 License File: src/LICENSE Security Critical: yes -Source: https://chromium.googlesource.com/codecs/libgav1/ Description: -A Main profile (0) & High profile (1) compliant AV1 decoder. +A Main profile (0), High profile (1) & Professional profile (2) compliant AV1 +decoder. Please follow these steps to update libgav1 src code 1. Update the code:
diff --git a/third_party/libvpx/README.chromium b/third_party/libvpx/README.chromium index 7a21f64..cc1cc8a 100644 --- a/third_party/libvpx/README.chromium +++ b/third_party/libvpx/README.chromium
@@ -1,22 +1,19 @@ Name: libvpx -URL: http://www.webmproject.org +URL: https://chromium.googlesource.com/webm/libvpx Version: v1.12.0 +Date: Wednesday June 29 2022 +Revision: 711bef67400f096416cb1ba7f6560e533871490f CPEPrefix: cpe:/a:webmproject:libvpx:1.12.0 License: BSD License File: source/libvpx/LICENSE Security Critical: yes -Date: Wednesday June 29 2022 -Branch: main -Commit: 711bef67400f096416cb1ba7f6560e533871490f - Description: Contains the sources used to compile libvpx binaries used by Google Chrome and Chromium. The libvpx source is from webmproject.org: - http://www.webmproject.org/code/ - https://chromium.googlesource.com/webm/libvpx + https://www.webmproject.org/code/ Please follow these steps to update libvpx source code:
diff --git a/third_party/libvpx/generate_gni.sh b/third_party/libvpx/generate_gni.sh index 74290800..800634e6 100755 --- a/third_party/libvpx/generate_gni.sh +++ b/third_party/libvpx/generate_gni.sh
@@ -333,14 +333,14 @@ --date=format:"%A %B %d %Y")) sed -E -i.bak \ -e "s/^(Date:)[[:space:]]+.*$/\1 ${vals[0]}/" \ - -e "s/^(Commit:)[[:space:]]+[a-f0-9]{40}/\1 ${vals[1]}/" \ + -e "s/^(Revision:)[[:space:]]+[a-f0-9]{40}/\1 ${vals[1]}/" \ ${BASE_DIR}/README.chromium rm ${BASE_DIR}/README.chromium.bak cat <<EOF README.chromium updated with: Date: ${vals[0]} -Commit: ${vals[1]} +Revision: ${vals[1]} EOF }
diff --git a/third_party/libwebm/README.chromium b/third_party/libwebm/README.chromium index cdbc21d6..965f3fc 100644 --- a/third_party/libwebm/README.chromium +++ b/third_party/libwebm/README.chromium
@@ -1,7 +1,8 @@ Name: WebM container parser and writer. Short Name: libwebm -URL: http://www.webmproject.org/code/ +URL: https://chromium.googlesource.com/webm/libwebm Version: 1.0.0.28 +Revision: e4fbea0c9751ae8aa86629b197a28d8276a2b0da CPEPrefix: cpe:/a:webmproject:libwebm:1.0.0.28 License: BSD License File: source/LICENSE.TXT
diff --git a/third_party/tflite/README.chromium b/third_party/tflite/README.chromium index 272b6184..f5ed38e 100644 --- a/third_party/tflite/README.chromium +++ b/third_party/tflite/README.chromium
@@ -1,8 +1,8 @@ Name: TensorFlow Lite Short Name: tflite URL: https://github.com/tensorflow/tensorflow -Version: ca77d58bb625ee21bc33660c074c624659b8a3c2 -Date: 2022/07/14 +Version: ac31ffa987c14665062c00f98ec025a3fdc185ab +Date: 2022/07/19 License: Apache 2.0 License File: LICENSE Security Critical: Yes
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml index cc03626..06b157f 100644 --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml
@@ -57544,6 +57544,7 @@ <int value="-803206774" label="TabbedAppOverflowMenuActionBar:disabled"/> <int value="-802348444" label="disable-site-engagement-service"/> <int value="-802309777" label="ChromeTipsInMainMenu:disabled"/> + <int value="-800464360" label="ContextualPageActions:enabled"/> <int value="-800127303" label="OmniboxPedalsTranslationConsole:disabled"/> <int value="-799931058" label="UseMultiloginEndpoint:disabled"/> <int value="-798187384" label="try-supported-channel-layouts"/> @@ -59537,6 +59538,7 @@ <int value="497039057" label="AdaptiveChargingForTesting:disabled"/> <int value="497137719" label="OmniboxVoiceSearchAlwaysVisible:disabled"/> <int value="497150691" label="AssistEmojiEnhanced:disabled"/> + <int value="498150771" label="ContextualPageActions:disabled"/> <int value="499932714" label="RunTasksByBatches:enabled"/> <int value="500177932" label="ArcSmartTextSelection:disabled"/> <int value="500947367" @@ -63718,6 +63720,7 @@ <int value="718" label="toggle"/> <int value="719" label="anchor-name"/> <int value="720" label="position-fallback"/> + <int value="721" label="anchor-scroll"/> </enum> <enum name="MappedEditingCommands"> @@ -69687,6 +69690,7 @@ <int value="1" label="Stale"/> <int value="2" label="Used"/> <int value="3" label="VaryMismatch"/> + <int value="4" label="BlockedByRequestHeaders"/> </enum> <enum name="NetworkServiceSandboxGrantResult"> @@ -83634,6 +83638,19 @@ <int value="3" label="Revoke tokens for primary and secondary accounts"/> </enum> +<!-- + This must be kept current with RgbKeyboardCapabilities located in + third_party/cros_system_api/dbus/rgbkbd/dbus-constants.h. +--> + +<enum name="RgbKeyboardCapabilityType"> + <int value="0" label="None"/> + <int value="1" label="IndividualKey"/> + <int value="2" label="FourZoneFortyLed"/> + <int value="3" label="FourZoneTwelveLed"/> + <int value="4" label="FourZoneFifteenLed"/> +</enum> + <enum name="RoamingUserDataDirectoryDeletionResult"> <obsolete> Removed in 2020-08 (M86). @@ -85878,6 +85895,16 @@ <int value="2" label="Model metadata invalid"/> </enum> +<enum name="SegmentationPlatformFeatureProcessingError"> + <int value="0" label="UkmEngineDisabled"/> + <int value="1" label="UmaValidationError"/> + <int value="2" label="SqlValidationError"/> + <int value="3" label="CustomInputError"/> + <int value="4" label="SqlBindValuesError"/> + <int value="5" label="SqlQueryRunError"/> + <int value="6" label="ResultTensorError"/> +</enum> + <enum name="SegmentationPlatformModelExecutionStatus"> <int value="0" label="Success"/> <int value="1" label="ExecutionError"/>
diff --git a/tools/metrics/histograms/metadata/chromeos/histograms.xml b/tools/metrics/histograms/metadata/chromeos/histograms.xml index 6c567893..c5812a91 100644 --- a/tools/metrics/histograms/metadata/chromeos/histograms.xml +++ b/tools/metrics/histograms/metadata/chromeos/histograms.xml
@@ -1378,6 +1378,22 @@ </summary> </histogram> +<histogram name="ChromeOS.RgbKeyboard.RgbKeyboardCapabilityType" + enum="RgbKeyboardCapabilityType" expires_after="2023-07-07"> + <owner>michaelcheco@google.com</owner> + <owner>dpad@google.com</owner> + <owner>jimmyxgong@chromium.org</owner> + <owner>zentaro@chromium.org</owner> + <owner>cros-peripherals@google.com</owner> + <summary> + Records whether or not RGB keyboard is supported for the current device. + Most devices will return RgbKeyboardCapabilityType::None since RGB keyboard + is currently only supported on a handful of devices. We still include these + samples since it'll be useful for finding real failures, i.e, + RgbKeyboardCapabilityType::None is recorded for a device that supports RGB. + </summary> +</histogram> + <histogram name="ChromeOS.SAML.APILogin" enum="ChromeOSSamlApiUsed" expires_after="2022-10-02"> <owner>mslus@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/others/histograms.xml b/tools/metrics/histograms/metadata/others/histograms.xml index bbe950b..0567da6 100644 --- a/tools/metrics/histograms/metadata/others/histograms.xml +++ b/tools/metrics/histograms/metadata/others/histograms.xml
@@ -11890,6 +11890,20 @@ <summary>The time spent before the screen locker is ready.</summary> </histogram> +<histogram name="ScreenLocker.{LockState}.Duration" units="ms" + expires_after="2023-07-07"> + <owner>charleszhao@chromium.org</owner> + <owner>chromeos-platform-power@google.com</owner> + <summary> + The duration for the screen to be in locked/unlocked state. Recorded inside + ScreenlockMonitor, when the screen lock state changes. + </summary> + <token key="LockState"> + <variant name="Locked" summary="screen was locked in this duration."/> + <variant name="Unlocked" summary="screen was unlocked in this duration."/> + </token> +</histogram> + <histogram base="true" name="SendTabToSelf.ClickResult" enum="SendTabToSelfClickResult" expires_after="2022-10-25"> <owner>jeffreycohen@chromium.org</owner>
diff --git a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml index ded6d5e..5b6cf1d0 100644 --- a/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml +++ b/tools/metrics/histograms/metadata/segmentation_platform/histograms.xml
@@ -113,6 +113,21 @@ </summary> </histogram> +<histogram + name="SegmentationPlatform.FeatureProcessing.Error.{SegmentationModel}" + enum="SegmentationPlatformFeatureProcessingError" + expires_after="2022-12-01"> + <owner>haileywang@chromium.org</owner> + <owner>chrome-segmentation-platform@google.com</owner> + <summary> + Records the feature processing error of segmentation models. Recorded + whenever an error is encountered during the feature processing stage of the + {SegmentationModel} model. Used to distinguish between multiple types of + processing errors. + </summary> + <token key="SegmentationModel" variants="SegmentationModel"/> +</histogram> + <histogram name="SegmentationPlatform.Init.CreationToInitializationLatency" units="ms" expires_after="M104"> <owner>ssid@chromium.org</owner>
diff --git a/tools/perf/core/perf_data_generator.py b/tools/perf/core/perf_data_generator.py index f98a2e15..514d919f 100755 --- a/tools/perf/core/perf_data_generator.py +++ b/tools/perf/core/perf_data_generator.py
@@ -111,11 +111,6 @@ 'android-pixel2-perf-calibration', 'linux-perf-calibration' ] -TESTERS_OPT_IN_FOR_PY3 = [ - 'linux-perf-fyi', 'android-pixel2-perf-fyi', - 'win-10_laptop_low_end-perf_HP-Candidate' -] - CALIBRATION_BUILDERS = { 'linux-perf-calibration': { 'tests': [ @@ -672,7 +667,7 @@ }], 'dimension': { 'cpu': 'x86-64', - 'os': 'Windows', + 'os': 'Windows-10', 'pool': 'chrome.tests', }, 'perf_trigger': @@ -682,7 +677,7 @@ 'additional_compile_targets': ['chromium_builder_perf'], 'dimension': { 'cpu': 'x86-64', - 'os': 'Windows', + 'os': 'Windows-10', 'pool': 'chrome.tests', }, 'perf_trigger': False, @@ -1888,8 +1883,6 @@ } if builder_name in DYNAMIC_SHARDING_TESTERS: result['trigger_script']['args'].append('--use-dynamic-shards') - if builder_name in TESTERS_OPT_IN_FOR_PY3: - result['trigger_script']['trigger_in_py3'] = True result['merge'] = { 'script': '//tools/perf/process_perf_results.py',
diff --git a/tools/perf/expectations.config b/tools/perf/expectations.config index cd6bb60..17e890b 100644 --- a/tools/perf/expectations.config +++ b/tools/perf/expectations.config
@@ -75,8 +75,6 @@ # Benchmark: blink_perf.webcodecs crbug.com/1300680 [ android ] blink_perf.webcodecs/software-video-encoding.html [ Skip ] crbug.com/1301260 [ linux ] blink_perf.webcodecs/hardware-video-encoding.html [ Skip ] -crbug.com/1341919 [ chromeos ] blink_perf.webcodecs/hardware-video-encoding.html [ Skip ] -crbug.com/1341919 [ win ] blink_perf.webcodecs/hardware-video-encoding.html [ Skip ] # Benchmark: blink_perf.webgl crbug.com/1341884 [ linux ] blink_perf.webgl_fast_call/binding-buffer-sub-data.html [ Skip ]
diff --git a/ui/base/cocoa/menu_controller.mm b/ui/base/cocoa/menu_controller.mm index be5ee49d..c299e6a 100644 --- a/ui/base/cocoa/menu_controller.mm +++ b/ui/base/cocoa/menu_controller.mm
@@ -35,8 +35,8 @@ // Called when adding a submenu to the menu and checks if the submenu, via its // |model|, has visible child items. bool MenuHasVisibleItems(const ui::MenuModel* model) { - int count = model->GetItemCount(); - for (int index = 0; index < count; index++) { + size_t count = model->GetItemCount(); + for (size_t index = 0; index < count; ++index) { if (model->IsVisibleAt(index)) return true; } @@ -91,7 +91,7 @@ // Adds the item at |index| in |model| as an NSMenuItem at |index| of |menu|. // Associates a submenu if the MenuModel::ItemType is TYPE_SUBMENU. - (void)addItemToMenu:(NSMenu*)menu - atIndex:(NSInteger)index + atIndex:(size_t)index fromModel:(ui::MenuModel*)model withColorProvider:(const ui::ColorProvider*)colorProvider; @@ -184,8 +184,8 @@ withColorProvider:(const ui::ColorProvider*)colorProvider { NSMenu* menu = [[[NSMenu alloc] initWithTitle:@""] autorelease]; - const int count = model->GetItemCount(); - for (int index = 0; index < count; index++) { + const size_t count = model->GetItemCount(); + for (size_t index = 0; index < count; ++index) { if (model->GetTypeAt(index) == ui::MenuModel::TYPE_SEPARATOR) { [self addSeparatorToMenu:menu atIndex:index]; } else { @@ -206,7 +206,7 @@ } - (void)addItemToMenu:(NSMenu*)menu - atIndex:(NSInteger)index + atIndex:(size_t)index fromModel:(ui::MenuModel*)model withColorProvider:(const ui::ColorProvider*)colorProvider { NSString* label = l10n_util::FixUpWindowsStyleLabel(model->GetLabelAt(index));
diff --git a/ui/base/cocoa/menu_controller_unittest.mm b/ui/base/cocoa/menu_controller_unittest.mm index 0a398630..98e71a4 100644 --- a/ui/base/cocoa/menu_controller_unittest.mm +++ b/ui/base/cocoa/menu_controller_unittest.mm
@@ -61,13 +61,14 @@ const TestSimpleMenuModelVisibility&) = delete; // SimpleMenuModel: - bool IsVisibleAt(int index) const override { + bool IsVisibleAt(size_t index) const override { return items_[ValidateItemIndex(index)].visible; } void SetVisibility(int command_id, bool visible) { - int index = SimpleMenuModel::GetIndexOfCommandId(command_id); - items_[ValidateItemIndex(index)].visible = visible; + absl::optional<size_t> index = + SimpleMenuModel::GetIndexOfCommandId(command_id); + items_[ValidateItemIndex(index.value())].visible = visible; } void AddItem(int command_id, const std::u16string& label) { @@ -88,9 +89,8 @@ typedef std::vector<Item> ItemVector; - int ValidateItemIndex(int index) const { - CHECK_GE(index, 0); - CHECK_LT(static_cast<size_t>(index), items_.size()); + int ValidateItemIndex(size_t index) const { + CHECK_LT(index, items_.size()); return index; } @@ -215,16 +215,16 @@ public: FontListMenuModel(SimpleMenuModel::Delegate* delegate, const gfx::FontList* font_list, - int index) + size_t index) : SimpleMenuModel(delegate), font_list_(font_list), index_(index) {} ~FontListMenuModel() override {} - const gfx::FontList* GetLabelFontListAt(int index) const override { + const gfx::FontList* GetLabelFontListAt(size_t index) const override { return (index == index_) ? font_list_.get() : nullptr; } private: raw_ptr<const gfx::FontList> font_list_; - const int index_; + const size_t index_; }; TEST_F(MenuControllerTest, EmptyMenu) {
diff --git a/ui/base/ime/linux/BUILD.gn b/ui/base/ime/linux/BUILD.gn index aa7adc45..f522ed4 100644 --- a/ui/base/ime/linux/BUILD.gn +++ b/ui/base/ime/linux/BUILD.gn
@@ -17,8 +17,6 @@ "linux_input_method_context.h", "linux_input_method_context_factory.cc", "linux_input_method_context_factory.h", - "linux_input_method_context_wrapper.cc", - "linux_input_method_context_wrapper.h", "text_edit_command_auralinux.cc", "text_edit_command_auralinux.h", "text_edit_key_bindings_delegate_auralinux.cc",
diff --git a/ui/base/ime/linux/linux_input_method_context_wrapper.cc b/ui/base/ime/linux/linux_input_method_context_wrapper.cc deleted file mode 100644 index 7fa1979..0000000 --- a/ui/base/ime/linux/linux_input_method_context_wrapper.cc +++ /dev/null
@@ -1,75 +0,0 @@ -// Copyright 2022 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 "ui/base/ime/linux/linux_input_method_context_wrapper.h" - -namespace ui { - -LinuxInputMethodContextWrapper::LinuxInputMethodContextWrapper( - std::unique_ptr<LinuxInputMethodContext> context, - std::unique_ptr<LinuxInputMethodContext> simple_context) - : context_(std::move(context)), - simple_context_(std::move(simple_context)) {} - -LinuxInputMethodContextWrapper::~LinuxInputMethodContextWrapper() = default; - -bool LinuxInputMethodContextWrapper::DispatchKeyEvent( - const ui::KeyEvent& key_event) { - return GetBaseContext()->DispatchKeyEvent(key_event); -} - -bool LinuxInputMethodContextWrapper::IsPeekKeyEvent( - const ui::KeyEvent& key_event) { - return GetBaseContext()->IsPeekKeyEvent(key_event); -} - -void LinuxInputMethodContextWrapper::SetCursorLocation(const gfx::Rect& rect) { - // Always use |context_|. This behavior is carried for compatibility. - context_->SetCursorLocation(rect); -} - -void LinuxInputMethodContextWrapper::SetSurroundingText( - const std::u16string& text, - const gfx::Range& selection_range) { - // Always use |context_|. This behavior is carried for compatibility. - context_->SetSurroundingText(text, selection_range); -} - -void LinuxInputMethodContextWrapper::SetContentType(TextInputType type, - TextInputMode mode, - uint32_t flags, - bool should_do_learning) { - GetBaseContext()->SetContentType(type, mode, flags, should_do_learning); -} - -void LinuxInputMethodContextWrapper::Reset() { - context_->Reset(); - simple_context_->Reset(); -} - -void LinuxInputMethodContextWrapper::UpdateFocus(bool has_client, - TextInputType old_type, - TextInputType new_type) { - context_->UpdateFocus(has_client, old_type, new_type); - simple_context_->UpdateFocus(has_client, old_type, new_type); - current_type_ = new_type; -} - -VirtualKeyboardController* -LinuxInputMethodContextWrapper::GetVirtualKeyboardController() { - // Always use |context_|. THis behavior is carried for compatibility. - return context_->GetVirtualKeyboardController(); -} - -LinuxInputMethodContext* LinuxInputMethodContextWrapper::GetBaseContext() { - switch (current_type_) { - case TEXT_INPUT_TYPE_NONE: - case TEXT_INPUT_TYPE_PASSWORD: - return simple_context_.get(); - default: - return context_.get(); - } -} - -} // namespace ui
diff --git a/ui/base/ime/linux/linux_input_method_context_wrapper.h b/ui/base/ime/linux/linux_input_method_context_wrapper.h deleted file mode 100644 index abbb173..0000000 --- a/ui/base/ime/linux/linux_input_method_context_wrapper.h +++ /dev/null
@@ -1,56 +0,0 @@ -// Copyright 2022 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 UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_WRAPPER_H_ -#define UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_WRAPPER_H_ - -#include <memory> - -#include "base/component_export.h" -#include "ui/base/ime/linux/linux_input_method_context.h" -#include "ui/base/ime/text_input_type.h" - -namespace ui { - -// Historically, LinuxInputMethodContext is instantiated for two variations, -// one for "simple" and the other for "non-simple". -// This is a class to help unify these into one. Specifically, we'd like to -// migrate each platform independently, and during the period, this class -// helps to fill the gap. -// TODO(crbug.com/1331183): Remove once all platforms are migrated. -class COMPONENT_EXPORT(UI_BASE_IME_LINUX) LinuxInputMethodContextWrapper - : public LinuxInputMethodContext { - public: - LinuxInputMethodContextWrapper( - std::unique_ptr<LinuxInputMethodContext> context, - std::unique_ptr<LinuxInputMethodContext> simple_context); - ~LinuxInputMethodContextWrapper() override; - - // LinuxInputMethodContext overrides: - bool DispatchKeyEvent(const ui::KeyEvent& key_event) override; - bool IsPeekKeyEvent(const ui::KeyEvent& key_event) override; - void SetCursorLocation(const gfx::Rect& rect) override; - void SetSurroundingText(const std::u16string& text, - const gfx::Range& selection_range) override; - void SetContentType(TextInputType type, - TextInputMode mode, - uint32_t flags, - bool should_do_learning) override; - void Reset() override; - void UpdateFocus(bool has_client, - TextInputType old_type, - TextInputType new_type) override; - VirtualKeyboardController* GetVirtualKeyboardController() override; - - private: - LinuxInputMethodContext* GetBaseContext(); - - std::unique_ptr<LinuxInputMethodContext> context_; - std::unique_ptr<LinuxInputMethodContext> simple_context_; - TextInputType current_type_ = TEXT_INPUT_TYPE_NONE; -}; - -} // namespace ui - -#endif // UI_BASE_IME_LINUX_LINUX_INPUT_METHOD_CONTEXT_WRAPPER_H_
diff --git a/ui/base/interaction/interaction_test_util_mac.mm b/ui/base/interaction/interaction_test_util_mac.mm index 1076fec..b47f126 100644 --- a/ui/base/interaction/interaction_test_util_mac.mm +++ b/ui/base/interaction/interaction_test_util_mac.mm
@@ -44,7 +44,7 @@ if (!model) return false; - for (int i = 0; i < model->GetItemCount(); ++i) { + for (size_t i = 0; i < model->GetItemCount(); ++i) { if (model->GetElementIdentifierAt(i) == element->identifier()) { NSMenuItem* item = [menu itemWithTag:i]; if (item) {
diff --git a/ui/base/models/dialog_model_menu_model_adapter.cc b/ui/base/models/dialog_model_menu_model_adapter.cc index 7e6abe62..aca67649 100644 --- a/ui/base/models/dialog_model_menu_model_adapter.cc +++ b/ui/base/models/dialog_model_menu_model_adapter.cc
@@ -36,38 +36,38 @@ return false; } -int DialogModelMenuModelAdapter::GetItemCount() const { - return static_cast<int>(model_->fields(GetPassKey()).size()); +size_t DialogModelMenuModelAdapter::GetItemCount() const { + return model_->fields(GetPassKey()).size(); } -MenuModel::ItemType DialogModelMenuModelAdapter::GetTypeAt(int index) const { +MenuModel::ItemType DialogModelMenuModelAdapter::GetTypeAt(size_t index) const { return GetField(index)->type(GetPassKey()) == DialogModelField::kSeparator ? TYPE_SEPARATOR : TYPE_COMMAND; } MenuSeparatorType DialogModelMenuModelAdapter::GetSeparatorTypeAt( - int index) const { + size_t index) const { NOTREACHED(); return MenuSeparatorType::NORMAL_SEPARATOR; } -int DialogModelMenuModelAdapter::GetCommandIdAt(int index) const { +int DialogModelMenuModelAdapter::GetCommandIdAt(size_t index) const { // TODO(pbos): Figure out what this should be. Combobox seems to offset by // 1000. Dunno why. return index + 1234; } -std::u16string DialogModelMenuModelAdapter::GetLabelAt(int index) const { +std::u16string DialogModelMenuModelAdapter::GetLabelAt(size_t index) const { return GetField(index)->AsMenuItem(GetPassKey())->label(GetPassKey()); } -bool DialogModelMenuModelAdapter::IsItemDynamicAt(int index) const { +bool DialogModelMenuModelAdapter::IsItemDynamicAt(size_t index) const { return false; } bool DialogModelMenuModelAdapter::GetAcceleratorAt( - int index, + size_t index, ui::Accelerator* accelerator) const { // TODO(pbos): Add support for accelerators. return false; @@ -78,54 +78,52 @@ return false; } -int DialogModelMenuModelAdapter::GetGroupIdAt(int index) const { +int DialogModelMenuModelAdapter::GetGroupIdAt(size_t index) const { NOTREACHED(); return -1; } -ImageModel DialogModelMenuModelAdapter::GetIconAt(int index) const { +ImageModel DialogModelMenuModelAdapter::GetIconAt(size_t index) const { return GetField(index)->AsMenuItem(GetPassKey())->icon(GetPassKey()); } ButtonMenuItemModel* DialogModelMenuModelAdapter::GetButtonMenuItemAt( - int index) const { + size_t index) const { NOTREACHED(); return nullptr; } -bool DialogModelMenuModelAdapter::IsEnabledAt(int index) const { +bool DialogModelMenuModelAdapter::IsEnabledAt(size_t index) const { DCHECK_LT(index, GetItemCount()); const DialogModelField* const field = GetField(index); - if (field->type(GetPassKey()) == DialogModelField::kSeparator) - return false; - - return field->AsMenuItem(GetPassKey())->is_enabled(GetPassKey()); + return field->type(GetPassKey()) != DialogModelField::kSeparator && + field->AsMenuItem(GetPassKey())->is_enabled(GetPassKey()); } -MenuModel* DialogModelMenuModelAdapter::GetSubmenuModelAt(int index) const { +MenuModel* DialogModelMenuModelAdapter::GetSubmenuModelAt(size_t index) const { NOTREACHED(); return nullptr; } -void DialogModelMenuModelAdapter::ActivatedAt(int index) { +void DialogModelMenuModelAdapter::ActivatedAt(size_t index) { // If this flags investigate why the ActivatedAt(index, event_flags) isn't // being called. NOTREACHED(); } -void DialogModelMenuModelAdapter::ActivatedAt(int index, int event_flags) { +void DialogModelMenuModelAdapter::ActivatedAt(size_t index, int event_flags) { DialogModelMenuItem* menu_item = GetField(index)->AsMenuItem(GetPassKey()); menu_item->OnActivated(GetPassKey(), event_flags); } -const DialogModelField* DialogModelMenuModelAdapter::GetField(int index) const { - DCHECK_GE(index, 0); +const DialogModelField* DialogModelMenuModelAdapter::GetField( + size_t index) const { DCHECK_LT(index, GetItemCount()); return model_->fields(GetPassKey())[index].get(); } -DialogModelField* DialogModelMenuModelAdapter::GetField(int index) { +DialogModelField* DialogModelMenuModelAdapter::GetField(size_t index) { return const_cast<DialogModelField*>( const_cast<const DialogModelMenuModelAdapter*>(this)->GetField(index)); }
diff --git a/ui/base/models/dialog_model_menu_model_adapter.h b/ui/base/models/dialog_model_menu_model_adapter.h index 98567cf..01a663d3 100644 --- a/ui/base/models/dialog_model_menu_model_adapter.h +++ b/ui/base/models/dialog_model_menu_model_adapter.h
@@ -27,25 +27,26 @@ // MenuModel: bool HasIcons() const override; - int GetItemCount() const override; - ItemType GetTypeAt(int index) const override; - ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override; - int GetCommandIdAt(int index) const override; - std::u16string GetLabelAt(int index) const override; - bool IsItemDynamicAt(int index) const override; - bool GetAcceleratorAt(int index, ui::Accelerator* accelerator) const override; + size_t GetItemCount() const override; + ItemType GetTypeAt(size_t index) const override; + ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const override; + int GetCommandIdAt(size_t index) const override; + std::u16string GetLabelAt(size_t index) const override; + bool IsItemDynamicAt(size_t index) const override; + bool GetAcceleratorAt(size_t index, + ui::Accelerator* accelerator) const override; bool IsItemCheckedAt(size_t index) const override; - int GetGroupIdAt(int index) const override; - ImageModel GetIconAt(int index) const override; - ButtonMenuItemModel* GetButtonMenuItemAt(int index) const override; - bool IsEnabledAt(int index) const override; - MenuModel* GetSubmenuModelAt(int index) const override; - void ActivatedAt(int index) override; - void ActivatedAt(int index, int event_flags) override; + int GetGroupIdAt(size_t index) const override; + ImageModel GetIconAt(size_t index) const override; + ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const override; + bool IsEnabledAt(size_t index) const override; + MenuModel* GetSubmenuModelAt(size_t index) const override; + void ActivatedAt(size_t index) override; + void ActivatedAt(size_t index, int event_flags) override; private: - const DialogModelField* GetField(int index) const; - DialogModelField* GetField(int index); + const DialogModelField* GetField(size_t index) const; + DialogModelField* GetField(size_t index); std::unique_ptr<DialogModel> model_; };
diff --git a/ui/base/models/menu_model.cc b/ui/base/models/menu_model.cc index 765db4a0..8ab6327 100644 --- a/ui/base/models/menu_model.cc +++ b/ui/base/models/menu_model.cc
@@ -15,29 +15,29 @@ menu_model_delegate_->OnMenuClearingDelegate(); } -bool MenuModel::IsVisibleAt(int index) const { +bool MenuModel::IsVisibleAt(size_t index) const { return true; } -bool MenuModel::IsAlertedAt(int index) const { +bool MenuModel::IsAlertedAt(size_t index) const { return false; } -bool MenuModel::IsNewFeatureAt(int index) const { +bool MenuModel::IsNewFeatureAt(size_t index) const { return false; } -ElementIdentifier MenuModel::GetElementIdentifierAt(int index) const { +ElementIdentifier MenuModel::GetElementIdentifierAt(size_t index) const { return ElementIdentifier(); } // static bool MenuModel::GetModelAndIndexForCommandId(int command_id, MenuModel** model, - int* index) { - const int item_count = (*model)->GetItemCount(); - for (int i = 0; i < item_count; ++i) { - const int candidate_index = i; + size_t* index) { + const size_t item_count = (*model)->GetItemCount(); + for (size_t i = 0; i < item_count; ++i) { + const size_t candidate_index = i; // Actionable submenus have commands. if ((*model)->GetTypeAt(candidate_index) == TYPE_ACTIONABLE_SUBMENU && (*model)->GetCommandIdAt(candidate_index) == command_id) { @@ -60,32 +60,32 @@ return false; } -std::u16string MenuModel::GetMinorTextAt(int index) const { +std::u16string MenuModel::GetMinorTextAt(size_t index) const { return std::u16string(); } -std::u16string MenuModel::GetSecondaryLabelAt(int index) const { +std::u16string MenuModel::GetSecondaryLabelAt(size_t index) const { return std::u16string(); } -ImageModel MenuModel::GetMinorIconAt(int index) const { +ImageModel MenuModel::GetMinorIconAt(size_t index) const { return ImageModel(); } -bool MenuModel::MayHaveMnemonicsAt(int index) const { +bool MenuModel::MayHaveMnemonicsAt(size_t index) const { return true; } -std::u16string MenuModel::GetAccessibleNameAt(int index) const { +std::u16string MenuModel::GetAccessibleNameAt(size_t index) const { return std::u16string(); } -const gfx::FontList* MenuModel::GetLabelFontListAt(int index) const { +const gfx::FontList* MenuModel::GetLabelFontListAt(size_t index) const { return nullptr; } // Default implementation ignores the event flags. -void MenuModel::ActivatedAt(int index, int event_flags) { +void MenuModel::ActivatedAt(size_t index, int event_flags) { ActivatedAt(index); }
diff --git a/ui/base/models/menu_model.h b/ui/base/models/menu_model.h index 330a631..016a06e 100644 --- a/ui/base/models/menu_model.h +++ b/ui/base/models/menu_model.h
@@ -55,52 +55,52 @@ virtual bool HasIcons() const = 0; // Returns the number of items in the menu. - virtual int GetItemCount() const = 0; + virtual size_t GetItemCount() const = 0; // Returns the type of item at the specified index. - virtual ItemType GetTypeAt(int index) const = 0; + virtual ItemType GetTypeAt(size_t index) const = 0; // Returns the separator type at the specified index. - virtual ui::MenuSeparatorType GetSeparatorTypeAt(int index) const = 0; + virtual ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const = 0; // Returns the command id of the item at the specified index. - virtual int GetCommandIdAt(int index) const = 0; + virtual int GetCommandIdAt(size_t index) const = 0; // Returns the label of the item at the specified index. - virtual std::u16string GetLabelAt(int index) const = 0; + virtual std::u16string GetLabelAt(size_t index) const = 0; // Returns the secondary label of the item at the specified index. Secondary // label is shown below the label. - virtual std::u16string GetSecondaryLabelAt(int index) const; + virtual std::u16string GetSecondaryLabelAt(size_t index) const; // Returns the minor text of the item at the specified index. The minor text // is rendered to the right of the label and using the font GetLabelFontAt(). - virtual std::u16string GetMinorTextAt(int index) const; + virtual std::u16string GetMinorTextAt(size_t index) const; // Returns the minor icon of the item at the specified index. The minor icon // is rendered to the left of the minor text. - virtual ImageModel GetMinorIconAt(int index) const; + virtual ImageModel GetMinorIconAt(size_t index) const; // Returns true if the menu item (label/sublabel/icon) at the specified // index can change over the course of the menu's lifetime. If this function // returns true, the label, sublabel and icon of the menu item will be // updated each time the menu is shown. - virtual bool IsItemDynamicAt(int index) const = 0; + virtual bool IsItemDynamicAt(size_t index) const = 0; // Returns whether the menu item at the specified index has a user-set title, // in which case it should always be treated as plain text. - virtual bool MayHaveMnemonicsAt(int index) const; + virtual bool MayHaveMnemonicsAt(size_t index) const; // Returns the accessible name for the menu item at the specified index. - virtual std::u16string GetAccessibleNameAt(int index) const; + virtual std::u16string GetAccessibleNameAt(size_t index) const; // Returns the font list used for the label at the specified index. // If NULL, then the default font list should be used. - virtual const gfx::FontList* GetLabelFontListAt(int index) const; + virtual const gfx::FontList* GetLabelFontListAt(size_t index) const; // Gets the accelerator information for the specified index, returning true if // there is a shortcut accelerator for the item, false otherwise. - virtual bool GetAcceleratorAt(int index, + virtual bool GetAcceleratorAt(size_t index, ui::Accelerator* accelerator) const = 0; // Returns the checked state of the item at the specified index. @@ -108,44 +108,44 @@ // Returns the id of the group of radio items that the item at the specified // index belongs to. - virtual int GetGroupIdAt(int index) const = 0; + virtual int GetGroupIdAt(size_t index) const = 0; // Gets the icon for the item at the specified index. ImageModel is empty if // there is no icon. - virtual ImageModel GetIconAt(int index) const = 0; + virtual ImageModel GetIconAt(size_t index) const = 0; // Returns the model for a menu item with a line of buttons at |index|. - virtual ButtonMenuItemModel* GetButtonMenuItemAt(int index) const = 0; + virtual ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const = 0; // Returns the enabled state of the item at the specified index. - virtual bool IsEnabledAt(int index) const = 0; + virtual bool IsEnabledAt(size_t index) const = 0; // Returns true if the menu item is visible. - virtual bool IsVisibleAt(int index) const; + virtual bool IsVisibleAt(size_t index) const; // Returns true if the item is rendered specially to draw attention // for in-product help. - virtual bool IsAlertedAt(int index) const; + virtual bool IsAlertedAt(size_t index) const; // Returns true if the menu item grants access to a new feature that we want // to show off to users (items marked as new will receive a "New" badge when // the appropriate flag is enabled). - virtual bool IsNewFeatureAt(int index) const; + virtual bool IsNewFeatureAt(size_t index) const; // Returns an application-window-unique identifier that can be used to track // the menu item irrespective of menu-specific command IDs. - virtual ElementIdentifier GetElementIdentifierAt(int index) const; + virtual ElementIdentifier GetElementIdentifierAt(size_t index) const; // Returns the model for the submenu at the specified index. - virtual MenuModel* GetSubmenuModelAt(int index) const = 0; + virtual MenuModel* GetSubmenuModelAt(size_t index) const = 0; // Called when the item at the specified index has been activated. - virtual void ActivatedAt(int index) = 0; + virtual void ActivatedAt(size_t index) = 0; // Called when the item has been activated with given event flags. // (for the case where the activation involves a navigation). // |event_flags| is a bit mask of ui::EventFlags. - virtual void ActivatedAt(int index, int event_flags); + virtual void ActivatedAt(size_t index, int event_flags); // Called when the menu is about to be shown. virtual void MenuWillShow() {} @@ -169,7 +169,7 @@ // and specifies the model to start searching from. static bool GetModelAndIndexForCommandId(int command_id, MenuModel** model, - int* index); + size_t* index); private: // MenuModelDelegate. Weak. Could be null.
diff --git a/ui/base/models/simple_menu_model.cc b/ui/base/models/simple_menu_model.cc index 20a3b1e..ce1d8d49 100644 --- a/ui/base/models/simple_menu_model.cc +++ b/ui/base/models/simple_menu_model.cc
@@ -225,18 +225,19 @@ AppendItem(std::move(item)); } -void SimpleMenuModel::InsertItemAt(int index, +void SimpleMenuModel::InsertItemAt(size_t index, int command_id, const std::u16string& label) { InsertItemAtIndex(Item(command_id, TYPE_COMMAND, label), index); } -void SimpleMenuModel::InsertItemWithStringIdAt( - int index, int command_id, int string_id) { +void SimpleMenuModel::InsertItemWithStringIdAt(size_t index, + int command_id, + int string_id) { InsertItemAt(index, command_id, l10n_util::GetStringUTF16(string_id)); } -void SimpleMenuModel::InsertSeparatorAt(int index, +void SimpleMenuModel::InsertSeparatorAt(size_t index, MenuSeparatorType separator_type) { #if !defined(USE_AURA) if (separator_type != NORMAL_SEPARATOR) { @@ -248,18 +249,19 @@ InsertItemAtIndex(std::move(item), index); } -void SimpleMenuModel::InsertCheckItemAt(int index, +void SimpleMenuModel::InsertCheckItemAt(size_t index, int command_id, const std::u16string& label) { InsertItemAtIndex(Item(command_id, TYPE_CHECK, label), index); } -void SimpleMenuModel::InsertCheckItemWithStringIdAt( - int index, int command_id, int string_id) { +void SimpleMenuModel::InsertCheckItemWithStringIdAt(size_t index, + int command_id, + int string_id) { InsertCheckItemAt(index, command_id, l10n_util::GetStringUTF16(string_id)); } -void SimpleMenuModel::InsertRadioItemAt(int index, +void SimpleMenuModel::InsertRadioItemAt(size_t index, int command_id, const std::u16string& label, int group_id) { @@ -268,13 +270,15 @@ InsertItemAtIndex(std::move(item), index); } -void SimpleMenuModel::InsertRadioItemWithStringIdAt( - int index, int command_id, int string_id, int group_id) { +void SimpleMenuModel::InsertRadioItemWithStringIdAt(size_t index, + int command_id, + int string_id, + int group_id) { InsertRadioItemAt( index, command_id, l10n_util::GetStringUTF16(string_id), group_id); } -void SimpleMenuModel::InsertSubMenuAt(int index, +void SimpleMenuModel::InsertSubMenuAt(size_t index, int command_id, const std::u16string& label, MenuModel* model) { @@ -283,68 +287,70 @@ InsertItemAtIndex(std::move(item), index); } -void SimpleMenuModel::InsertSubMenuWithStringIdAt( - int index, int command_id, int string_id, MenuModel* model) { +void SimpleMenuModel::InsertSubMenuWithStringIdAt(size_t index, + int command_id, + int string_id, + MenuModel* model) { InsertSubMenuAt(index, command_id, l10n_util::GetStringUTF16(string_id), model); } -void SimpleMenuModel::RemoveItemAt(int index) { +void SimpleMenuModel::RemoveItemAt(size_t index) { items_.erase(items_.begin() + ValidateItemIndex(index)); MenuItemsChanged(); } -void SimpleMenuModel::SetIcon(int index, const ui::ImageModel& icon) { +void SimpleMenuModel::SetIcon(size_t index, const ui::ImageModel& icon) { items_[ValidateItemIndex(index)].icon = icon; MenuItemsChanged(); } -void SimpleMenuModel::SetLabel(int index, const std::u16string& label) { +void SimpleMenuModel::SetLabel(size_t index, const std::u16string& label) { items_[ValidateItemIndex(index)].label = label; MenuItemsChanged(); } -void SimpleMenuModel::SetMinorText(int index, +void SimpleMenuModel::SetMinorText(size_t index, const std::u16string& minor_text) { items_[ValidateItemIndex(index)].minor_text = minor_text; } -void SimpleMenuModel::SetMinorIcon(int index, +void SimpleMenuModel::SetMinorIcon(size_t index, const ui::ImageModel& minor_icon) { items_[ValidateItemIndex(index)].minor_icon = minor_icon; } -void SimpleMenuModel::SetEnabledAt(int index, bool enabled) { +void SimpleMenuModel::SetEnabledAt(size_t index, bool enabled) { if (items_[ValidateItemIndex(index)].enabled == enabled) return; - items_[ValidateItemIndex(index)].enabled = enabled; + items_[index].enabled = enabled; MenuItemsChanged(); } -void SimpleMenuModel::SetVisibleAt(int index, bool visible) { +void SimpleMenuModel::SetVisibleAt(size_t index, bool visible) { if (items_[ValidateItemIndex(index)].visible == visible) return; - items_[ValidateItemIndex(index)].visible = visible; + items_[index].visible = visible; MenuItemsChanged(); } -void SimpleMenuModel::SetIsNewFeatureAt(int index, bool is_new_feature) { +void SimpleMenuModel::SetIsNewFeatureAt(size_t index, bool is_new_feature) { items_[ValidateItemIndex(index)].is_new_feature = is_new_feature; } -void SimpleMenuModel::SetMayHaveMnemonicsAt(int index, +void SimpleMenuModel::SetMayHaveMnemonicsAt(size_t index, bool may_have_mnemonics) { items_[ValidateItemIndex(index)].may_have_mnemonics = may_have_mnemonics; } -void SimpleMenuModel::SetAccessibleNameAt(int index, +void SimpleMenuModel::SetAccessibleNameAt(size_t index, std::u16string accessible_name) { items_[ValidateItemIndex(index)].accessible_name = std::move(accessible_name); } -void SimpleMenuModel::SetElementIdentifierAt(int index, +void SimpleMenuModel::SetElementIdentifierAt(size_t index, ElementIdentifier unique_id) { items_[ValidateItemIndex(index)].unique_id = unique_id; } @@ -354,19 +360,20 @@ MenuItemsChanged(); } -int SimpleMenuModel::GetIndexOfCommandId(int command_id) const { +absl::optional<size_t> SimpleMenuModel::GetIndexOfCommandId( + int command_id) const { for (auto i = items_.begin(); i != items_.end(); ++i) { if (i->command_id == command_id) - return static_cast<int>(std::distance(items_.begin(), i)); + return static_cast<size_t>(std::distance(items_.begin(), i)); } - return -1; + return absl::nullopt; } //////////////////////////////////////////////////////////////////////////////// // SimpleMenuModel, MenuModel implementation: bool SimpleMenuModel::HasIcons() const { - for (int i = 0; i < GetItemCount(); ++i) { + for (size_t i = 0; i < GetItemCount(); ++i) { if (!GetIconAt(i).IsEmpty()) return true; } @@ -374,76 +381,70 @@ return false; } -int SimpleMenuModel::GetItemCount() const { - return static_cast<int>(items_.size()); +size_t SimpleMenuModel::GetItemCount() const { + return items_.size(); } -MenuModel::ItemType SimpleMenuModel::GetTypeAt(int index) const { +MenuModel::ItemType SimpleMenuModel::GetTypeAt(size_t index) const { return items_[ValidateItemIndex(index)].type; } -ui::MenuSeparatorType SimpleMenuModel::GetSeparatorTypeAt(int index) const { +ui::MenuSeparatorType SimpleMenuModel::GetSeparatorTypeAt(size_t index) const { return items_[ValidateItemIndex(index)].separator_type; } -int SimpleMenuModel::GetCommandIdAt(int index) const { +int SimpleMenuModel::GetCommandIdAt(size_t index) const { return items_[ValidateItemIndex(index)].command_id; } -std::u16string SimpleMenuModel::GetLabelAt(int index) const { +std::u16string SimpleMenuModel::GetLabelAt(size_t index) const { if (IsItemDynamicAt(index)) return delegate_->GetLabelForCommandId(GetCommandIdAt(index)); return items_[ValidateItemIndex(index)].label; } -std::u16string SimpleMenuModel::GetMinorTextAt(int index) const { +std::u16string SimpleMenuModel::GetMinorTextAt(size_t index) const { return items_[ValidateItemIndex(index)].minor_text; } -ImageModel SimpleMenuModel::GetMinorIconAt(int index) const { +ImageModel SimpleMenuModel::GetMinorIconAt(size_t index) const { return items_[ValidateItemIndex(index)].minor_icon; } -bool SimpleMenuModel::IsItemDynamicAt(int index) const { - if (delegate_) - return delegate_->IsItemForCommandIdDynamic(GetCommandIdAt(index)); - return false; +bool SimpleMenuModel::IsItemDynamicAt(size_t index) const { + return delegate_ && + delegate_->IsItemForCommandIdDynamic(GetCommandIdAt(index)); } -bool SimpleMenuModel::GetAcceleratorAt(int index, +bool SimpleMenuModel::GetAcceleratorAt(size_t index, ui::Accelerator* accelerator) const { - if (delegate_) { - return delegate_->GetAcceleratorForCommandId(GetCommandIdAt(index), - accelerator); - } - return false; + return delegate_ && delegate_->GetAcceleratorForCommandId( + GetCommandIdAt(index), accelerator); } bool SimpleMenuModel::IsItemCheckedAt(size_t index) const { if (!delegate_) return false; MenuModel::ItemType item_type = GetTypeAt(index); - return (item_type == TYPE_CHECK || item_type == TYPE_RADIO) ? - delegate_->IsCommandIdChecked(GetCommandIdAt(index)) : false; + return (item_type == TYPE_CHECK || item_type == TYPE_RADIO) && + delegate_->IsCommandIdChecked(GetCommandIdAt(index)); } -int SimpleMenuModel::GetGroupIdAt(int index) const { +int SimpleMenuModel::GetGroupIdAt(size_t index) const { return items_[ValidateItemIndex(index)].group_id; } -ImageModel SimpleMenuModel::GetIconAt(int index) const { +ImageModel SimpleMenuModel::GetIconAt(size_t index) const { if (IsItemDynamicAt(index)) return delegate_->GetIconForCommandId(GetCommandIdAt(index)); - - ValidateItemIndex(index); - return items_[index].icon; + return items_[ValidateItemIndex(index)].icon; } -ButtonMenuItemModel* SimpleMenuModel::GetButtonMenuItemAt(int index) const { +ButtonMenuItemModel* SimpleMenuModel::GetButtonMenuItemAt(size_t index) const { return items_[ValidateItemIndex(index)].button_model; } -bool SimpleMenuModel::IsEnabledAt(int index) const { +bool SimpleMenuModel::IsEnabledAt(size_t index) const { int command_id = GetCommandIdAt(index); if (!delegate_ || command_id == kSeparatorId || GetButtonMenuItemAt(index)) @@ -453,7 +454,7 @@ items_[ValidateItemIndex(index)].enabled; } -bool SimpleMenuModel::IsVisibleAt(int index) const { +bool SimpleMenuModel::IsVisibleAt(size_t index) const { int command_id = GetCommandIdAt(index); if (!delegate_ || command_id == kSeparatorId || command_id == kTitleId || GetButtonMenuItemAt(index)) { @@ -464,7 +465,7 @@ items_[ValidateItemIndex(index)].visible; } -bool SimpleMenuModel::IsAlertedAt(int index) const { +bool SimpleMenuModel::IsAlertedAt(size_t index) const { const int command_id = GetCommandIdAt(index); if (!delegate_ || command_id == kSeparatorId || command_id == kTitleId) return false; @@ -472,7 +473,7 @@ // This method needs to be recursive, because if the highlighted command is // in a submenu then the submenu item should also be highlighted. if (auto* const submenu = GetSubmenuModelAt(index)) { - for (int i = 0; i < submenu->GetItemCount(); ++i) { + for (size_t i = 0; i < submenu->GetItemCount(); ++i) { if (submenu->IsAlertedAt(i)) return true; } @@ -481,32 +482,32 @@ return delegate_->IsCommandIdAlerted(command_id); } -bool SimpleMenuModel::IsNewFeatureAt(int index) const { +bool SimpleMenuModel::IsNewFeatureAt(size_t index) const { return items_[ValidateItemIndex(index)].is_new_feature; } -bool SimpleMenuModel::MayHaveMnemonicsAt(int index) const { +bool SimpleMenuModel::MayHaveMnemonicsAt(size_t index) const { return items_[ValidateItemIndex(index)].may_have_mnemonics; } -std::u16string SimpleMenuModel::GetAccessibleNameAt(int index) const { +std::u16string SimpleMenuModel::GetAccessibleNameAt(size_t index) const { return items_[ValidateItemIndex(index)].accessible_name; } -ElementIdentifier SimpleMenuModel::GetElementIdentifierAt(int index) const { +ElementIdentifier SimpleMenuModel::GetElementIdentifierAt(size_t index) const { return items_[ValidateItemIndex(index)].unique_id; } -void SimpleMenuModel::ActivatedAt(int index) { +void SimpleMenuModel::ActivatedAt(size_t index) { ActivatedAt(index, 0); } -void SimpleMenuModel::ActivatedAt(int index, int event_flags) { +void SimpleMenuModel::ActivatedAt(size_t index, int event_flags) { if (delegate_) delegate_->ExecuteCommand(GetCommandIdAt(index), event_flags); } -MenuModel* SimpleMenuModel::GetSubmenuModelAt(int index) const { +MenuModel* SimpleMenuModel::GetSubmenuModelAt(size_t index) const { return items_[ValidateItemIndex(index)].submenu; } @@ -544,9 +545,8 @@ SimpleMenuModel::Item& SimpleMenuModel::Item::operator=(Item&&) = default; SimpleMenuModel::Item::~Item() = default; -int SimpleMenuModel::ValidateItemIndex(int index) const { - CHECK_GE(index, 0); - CHECK_LT(static_cast<size_t>(index), items_.size()); +size_t SimpleMenuModel::ValidateItemIndex(size_t index) const { + CHECK_LT(index, items_.size()); return index; } @@ -556,7 +556,7 @@ MenuItemsChanged(); } -void SimpleMenuModel::InsertItemAtIndex(Item item, int index) { +void SimpleMenuModel::InsertItemAtIndex(Item item, size_t index) { ValidateItem(item); items_.insert(items_.begin() + index, std::move(item)); MenuItemsChanged();
diff --git a/ui/base/models/simple_menu_model.h b/ui/base/models/simple_menu_model.h index eadda34..7ecb2f6c 100644 --- a/ui/base/models/simple_menu_model.h +++ b/ui/base/models/simple_menu_model.h
@@ -11,6 +11,7 @@ #include "base/component_export.h" #include "base/memory/raw_ptr.h" #include "base/memory/weak_ptr.h" +#include "third_party/abseil-cpp/absl/types/optional.h" #include "ui/base/accelerators/accelerator.h" #include "ui/base/models/image_model.h" #include "ui/base/models/menu_model.h" @@ -131,92 +132,99 @@ const ui::ImageModel& icon); // Methods for inserting items into the model. - void InsertItemAt(int index, int command_id, const std::u16string& label); - void InsertItemWithStringIdAt(int index, int command_id, int string_id); - void InsertSeparatorAt(int index, MenuSeparatorType separator_type); - void InsertCheckItemAt(int index, + void InsertItemAt(size_t index, int command_id, const std::u16string& label); + void InsertItemWithStringIdAt(size_t index, int command_id, int string_id); + void InsertSeparatorAt(size_t index, MenuSeparatorType separator_type); + void InsertCheckItemAt(size_t index, int command_id, const std::u16string& label); - void InsertCheckItemWithStringIdAt(int index, int command_id, int string_id); - void InsertRadioItemAt(int index, + void InsertCheckItemWithStringIdAt(size_t index, + int command_id, + int string_id); + void InsertRadioItemAt(size_t index, int command_id, const std::u16string& label, int group_id); - void InsertRadioItemWithStringIdAt( - int index, int command_id, int string_id, int group_id); - void InsertSubMenuAt(int index, + void InsertRadioItemWithStringIdAt(size_t index, + int command_id, + int string_id, + int group_id); + void InsertSubMenuAt(size_t index, int command_id, const std::u16string& label, MenuModel* model); - void InsertSubMenuWithStringIdAt( - int index, int command_id, int string_id, MenuModel* model); + void InsertSubMenuWithStringIdAt(size_t index, + int command_id, + int string_id, + MenuModel* model); // Remove item at specified index from the model. - void RemoveItemAt(int index); + void RemoveItemAt(size_t index); // Sets the icon for the item at |index|. - void SetIcon(int index, const ui::ImageModel& icon); + void SetIcon(size_t index, const ui::ImageModel& icon); // Sets the label for the item at |index|. - void SetLabel(int index, const std::u16string& label); + void SetLabel(size_t index, const std::u16string& label); // Sets the minor text for the item at |index|. - void SetMinorText(int index, const std::u16string& minor_text); + void SetMinorText(size_t index, const std::u16string& minor_text); // Sets the minor icon for the item at |index|. - void SetMinorIcon(int index, const ui::ImageModel& minor_icon); + void SetMinorIcon(size_t index, const ui::ImageModel& minor_icon); // Sets whether the item at |index| is enabled. - void SetEnabledAt(int index, bool enabled); + void SetEnabledAt(size_t index, bool enabled); // Sets whether the item at |index| is visible. - void SetVisibleAt(int index, bool visible); + void SetVisibleAt(size_t index, bool visible); // Sets whether the item at |index| is new. - void SetIsNewFeatureAt(int index, bool is_new_feature); + void SetIsNewFeatureAt(size_t index, bool is_new_feature); // Sets whether the item at |index| is may have mnemonics. - void SetMayHaveMnemonicsAt(int index, bool may_have_mnemonics); + void SetMayHaveMnemonicsAt(size_t index, bool may_have_mnemonics); // Sets the accessible name of item at |index|. - void SetAccessibleNameAt(int index, std::u16string accessible_name); + void SetAccessibleNameAt(size_t index, std::u16string accessible_name); // Sets an application-window unique identifier associated with this menu item // allowing it to be tracked without knowledge of menu-specific command IDs. - void SetElementIdentifierAt(int index, ElementIdentifier unique_id); + void SetElementIdentifierAt(size_t index, ElementIdentifier unique_id); // Clears all items. Note that it does not free MenuModel of submenu. void Clear(); // Returns the index of the item that has the given |command_id|. Returns - // -1 if not found. - int GetIndexOfCommandId(int command_id) const; + // nullopt if not found. + absl::optional<size_t> GetIndexOfCommandId(int command_id) const; // Overridden from MenuModel: bool HasIcons() const override; - int GetItemCount() const override; - ItemType GetTypeAt(int index) const override; - ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override; - int GetCommandIdAt(int index) const override; - std::u16string GetLabelAt(int index) const override; - std::u16string GetMinorTextAt(int index) const override; - ImageModel GetMinorIconAt(int index) const override; - bool IsItemDynamicAt(int index) const override; - bool GetAcceleratorAt(int index, ui::Accelerator* accelerator) const override; + size_t GetItemCount() const override; + ItemType GetTypeAt(size_t index) const override; + ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const override; + int GetCommandIdAt(size_t index) const override; + std::u16string GetLabelAt(size_t index) const override; + std::u16string GetMinorTextAt(size_t index) const override; + ImageModel GetMinorIconAt(size_t index) const override; + bool IsItemDynamicAt(size_t index) const override; + bool GetAcceleratorAt(size_t index, + ui::Accelerator* accelerator) const override; bool IsItemCheckedAt(size_t index) const override; - int GetGroupIdAt(int index) const override; - ImageModel GetIconAt(int index) const override; - ui::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const override; - bool IsEnabledAt(int index) const override; - bool IsVisibleAt(int index) const override; - bool IsAlertedAt(int index) const override; - bool IsNewFeatureAt(int index) const override; - bool MayHaveMnemonicsAt(int index) const override; - std::u16string GetAccessibleNameAt(int index) const override; - ElementIdentifier GetElementIdentifierAt(int index) const override; - void ActivatedAt(int index) override; - void ActivatedAt(int index, int event_flags) override; - MenuModel* GetSubmenuModelAt(int index) const override; + int GetGroupIdAt(size_t index) const override; + ImageModel GetIconAt(size_t index) const override; + ui::ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const override; + bool IsEnabledAt(size_t index) const override; + bool IsVisibleAt(size_t index) const override; + bool IsAlertedAt(size_t index) const override; + bool IsNewFeatureAt(size_t index) const override; + bool MayHaveMnemonicsAt(size_t index) const override; + std::u16string GetAccessibleNameAt(size_t index) const override; + ElementIdentifier GetElementIdentifierAt(size_t index) const override; + void ActivatedAt(size_t index) override; + void ActivatedAt(size_t index, int event_flags) override; + MenuModel* GetSubmenuModelAt(size_t index) const override; void MenuWillShow() override; void MenuWillClose() override; @@ -253,14 +261,14 @@ ElementIdentifier unique_id; }; - typedef std::vector<Item> ItemVector; + using ItemVector = std::vector<Item>; // Returns |index|. - int ValidateItemIndex(int index) const; + size_t ValidateItemIndex(size_t index) const; // Functions for inserting items into |items_|. void AppendItem(Item item); - void InsertItemAtIndex(Item item, int index); + void InsertItemAtIndex(Item item, size_t index); void ValidateItem(const Item& item); // Notify the delegate that the menu is closed.
diff --git a/ui/chromeos/BUILD.gn b/ui/chromeos/BUILD.gn index db5e0f66..1baebd51 100644 --- a/ui/chromeos/BUILD.gn +++ b/ui/chromeos/BUILD.gn
@@ -32,9 +32,9 @@ deps += [ "//ash/constants", "//base/third_party/dynamic_annotations", + "//chromeos/ash/components/network", "//chromeos/dbus/power", "//chromeos/dbus/power:power_manager_proto", - "//chromeos/network:network", "//components/device_event_log", "//mojo/public/cpp/bindings", "//services/device/public/mojom",
diff --git a/ui/chromeos/file_manager_strings.grdp b/ui/chromeos/file_manager_strings.grdp index 9b15f4f..b423fc6 100644 --- a/ui/chromeos/file_manager_strings.grdp +++ b/ui/chromeos/file_manager_strings.grdp
@@ -794,7 +794,7 @@ Your organization requires more storage to complete the upload. </message> <message name="IDS_FILE_BROWSER_DRIVE_ORGANIZATION_STORAGE_FULL" desc="File Manager menu storage meter message indicating the user's organization has run out of quota."> - *Org storage full + Org storage full </message> <message name="IDS_FILE_BROWSER_SHARE_ERROR" desc="File Manager error message when sharing a file or a directory on Drive fails because of internet connection problems."> Sharing failed. Check your connection and try again later.
diff --git a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DRIVE_ORGANIZATION_STORAGE_FULL.png.sha1 b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DRIVE_ORGANIZATION_STORAGE_FULL.png.sha1 index 0944237..6d739b95 100644 --- a/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DRIVE_ORGANIZATION_STORAGE_FULL.png.sha1 +++ b/ui/chromeos/file_manager_strings_grdp/IDS_FILE_BROWSER_DRIVE_ORGANIZATION_STORAGE_FULL.png.sha1
@@ -1 +1 @@ -9e8abe0765da5fc3432e20f5316316bd8c64bb70 \ No newline at end of file +a041b821d2eb19e78bbf22cfa2ce11eeb5a19685 \ No newline at end of file
diff --git a/ui/chromeos/strings/BUILD.gn b/ui/chromeos/strings/BUILD.gn index e3cfd32..44505aa5 100644 --- a/ui/chromeos/strings/BUILD.gn +++ b/ui/chromeos/strings/BUILD.gn
@@ -21,8 +21,8 @@ ] deps = [ "//ash/constants", + "//chromeos/ash/components/network", "//chromeos/login/login_state:login_state", - "//chromeos/network:network", "//chromeos/strings:strings_grit", "//components/login:login", "//components/strings:components_strings",
diff --git a/ui/file_manager/file_manager/foreground/css/common.css b/ui/file_manager/file_manager/foreground/css/common.css index 915cb7df..94703b6 100644 --- a/ui/file_manager/file_manager/foreground/css/common.css +++ b/ui/file_manager/file_manager/foreground/css/common.css
@@ -215,6 +215,13 @@ min-width: 6px; } +.menu-warning { + color: var(--cros-textfield-label-color-error); + font-size: 11px; + line-height: 16px; + margin-top: 6px; +} + /* Entry names (File names, Folder names, Volume names, ...). */ /* Their base bidi direction should be ltr even in RTL languages. */ html[dir='rtl'] .entry-name {
diff --git a/ui/file_manager/file_manager/foreground/js/gear_menu_controller.js b/ui/file_manager/file_manager/foreground/js/gear_menu_controller.js index 21456bac..c608a2f 100644 --- a/ui/file_manager/file_manager/foreground/js/gear_menu_controller.js +++ b/ui/file_manager/file_manager/foreground/js/gear_menu_controller.js
@@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import {getSizeStats} from '../../common/js/api.js'; -import {str, util} from '../../common/js/util.js'; +import {getDriveQuotaMetadata, getSizeStats} from '../../common/js/api.js'; +import {str, strf, util} from '../../common/js/util.js'; import {VolumeManagerCommon} from '../../common/js/volume_manager_types.js'; import {DirectoryChangeEvent} from '../../externs/directory_change_event.js'; @@ -126,7 +126,27 @@ return; } - this.gearMenu_.setSpaceInfo(getSizeStats(currentVolumeInfo.volumeId), true); + if (currentVolumeInfo.volumeType == VolumeManagerCommon.VolumeType.DRIVE) { + this.gearMenu_.setSpaceInfo( + getDriveQuotaMetadata().then( + quota /* chrome.fileManagerPrivate.DriveQuotaMetadata */ => ({ + totalSize: quota.totalUserBytes, + usedSize: quota.usedUserBytes, + warningMessage: quota.organizationLimitExceeded ? + strf('DRIVE_ORGANIZATION_STORAGE_FULL') : + null, + })), + true); + return; + } + + this.gearMenu_.setSpaceInfo( + getSizeStats(currentVolumeInfo.volumeId) + .then(size /* chrome.fileManagerPrivate.MountPointSizeStats */ => ({ + totalSize: size.totalSize, + usedSize: size.totalSize - size.remainingSize, + })), + true); } /**
diff --git a/ui/file_manager/file_manager/foreground/js/ui/gear_menu.js b/ui/file_manager/file_manager/foreground/js/ui/gear_menu.js index 5b50a9d..62697dd 100644 --- a/ui/file_manager/file_manager/foreground/js/ui/gear_menu.js +++ b/ui/file_manager/file_manager/foreground/js/ui/gear_menu.js
@@ -8,6 +8,11 @@ import {str, strf, util} from '../../../common/js/util.js'; +/** + * @typedef {{totalSize: number, usedSize: number, warningMessage: string}} + */ +export let SpaceInfo; + export class GearMenu { /** * @param {!HTMLElement} element @@ -63,12 +68,20 @@ * @const * @private */ + this.volumeSpaceWarning_ = + queryRequiredElement('#volume-space-info-warning', element); + + /** + * @type {!HTMLElement} + * @const + * @private + */ this.providersMenuItem_ = queryRequiredElement('#gear-menu-providers', element); /** - * Volume space info. - * @type {Promise<chrome.fileManagerPrivate.MountPointSizeStats|undefined>} + * Promise to be resolved with volume space info. + * @type {Promise<SpaceInfo|undefined>} * @private */ this.spaceInfoPromise_ = null; @@ -86,21 +99,20 @@ } /** - * @param {Promise<chrome.fileManagerPrivate.MountPointSizeStats|undefined>} - * spaceInfoPromise Promise to be fulfilled with space info. - * @param {boolean} showLoadingCaption Whether show loading caption or not. + * @param {Promise<SpaceInfo|undefined>} spaceInfoPromise Promise to be + * fulfilled with space info. + * @param {boolean} showLoadingCaption Whether to show the loading caption or + * not. */ setSpaceInfo(spaceInfoPromise, showLoadingCaption) { this.spaceInfoPromise_ = spaceInfoPromise; if (!spaceInfoPromise || loadTimeData.getBoolean('HIDE_SPACE_INFO')) { - this.volumeSpaceInfo.hidden = true; - this.volumeSpaceInfoSeparator_.hidden = true; + this.hideVolumeSpaceInfo_(); return; } - this.volumeSpaceInfo.hidden = false; - this.volumeSpaceInfoSeparator_.hidden = false; + this.showVolumeSpaceInfo_(); this.volumeSpaceInnerBar_.setAttribute('pending', ''); if (showLoadingCaption) { this.volumeSpaceInfoLabel_.innerText = str('WAITING_FOR_SPACE_INFO'); @@ -112,26 +124,51 @@ if (this.spaceInfoPromise_ != spaceInfoPromise) { return; } + this.volumeSpaceInnerBar_.removeAttribute('pending'); this.volumeSpaceOuterBar_.hidden = true; - if (spaceInfo) { - const sizeStr = util.bytesToString(spaceInfo.remainingSize); - this.volumeSpaceInfoLabel_.textContent = - strf('SPACE_AVAILABLE', sizeStr); + this.volumeSpaceWarning_.hidden = true; - if (spaceInfo.totalSize > 0) { - const usedSpace = spaceInfo.totalSize - spaceInfo.remainingSize; - this.volumeSpaceInnerBar_.style.width = - (100 * usedSpace / spaceInfo.totalSize) + '%'; - - this.volumeSpaceOuterBar_.hidden = false; - } - } else { + if (!spaceInfo) { this.volumeSpaceInfoLabel_.textContent = str('FAILED_SPACE_INFO'); + return; + } + + if (spaceInfo.totalSize >= 0) { + const usedSpace = spaceInfo.usedSize; + this.volumeSpaceInnerBar_.style.width = + Math.min(100, 100 * usedSpace / spaceInfo.totalSize) + '%'; + + this.volumeSpaceOuterBar_.hidden = false; + + this.volumeSpaceInfoLabel_.textContent = strf( + 'SPACE_AVAILABLE', + util.bytesToString( + Math.max(0, spaceInfo.totalSize - spaceInfo.usedSize))); + } else { + // User has unlimited individual storage. + this.volumeSpaceInfoLabel_.textContent = + strf('SPACE_USED', util.bytesToString(spaceInfo.usedSize)); + } + + if (spaceInfo.warningMessage) { + this.volumeSpaceWarning_.hidden = false; + this.volumeSpaceWarning_.textContent = + '*' + spaceInfo.warningMessage; } }, error => { console.warn('Failed get space info', error); }); } + + hideVolumeSpaceInfo_() { + this.volumeSpaceInfo.hidden = true; + this.volumeSpaceInfoSeparator_.hidden = true; + } + + showVolumeSpaceInfo_() { + this.volumeSpaceInfo.hidden = false; + this.volumeSpaceInfoSeparator_.hidden = false; + } }
diff --git a/ui/file_manager/file_manager/main.html b/ui/file_manager/file_manager/main.html index 15af0f8..685961e 100644 --- a/ui/file_manager/file_manager/main.html +++ b/ui/file_manager/file_manager/main.html
@@ -300,6 +300,7 @@ <div class="progress-bar" aria-hidden="true"> <div class="progress-track" id="volume-space-info-bar"></div> </div> + <div id="volume-space-info-warning" class="menu-warning"></div> </div> </cr-menu-item> </cr-menu>
diff --git a/ui/file_manager/integration_tests/file_manager/gear_menu.js b/ui/file_manager/integration_tests/file_manager/gear_menu.js index 0dc1b67..f8ae65b4 100644 --- a/ui/file_manager/integration_tests/file_manager/gear_menu.js +++ b/ui/file_manager/integration_tests/file_manager/gear_menu.js
@@ -575,7 +575,7 @@ }; /** - * Tests that the "xGB available message appears in the gear menu for + * Tests that the "xGB available" message appears in the gear menu for * the "Google Drive" volume. */ testcase.showAvailableStorageDrive = async () => { @@ -589,17 +589,19 @@ // Wait for the gear menu to appear. await remoteCall.waitForElement(appId, '#gear-menu:not([hidden])'); - // Check #volume-storage is shown and disabled (can't manage Drive - // storage). - await remoteCall.waitForElement( + // Check #volume-storage is displayed and get a reference to it. + const driveMenuEntry = await remoteCall.waitForElement( appId, '#gear-menu:not([hidden]) cr-menu-item' + '[command=\'#volume-storage\']' + ':not([hidden])'); + + // Check that it correctly indicates the available storage. + chrome.test.assertTrue(driveMenuEntry.text.trim() === '1 MB available'); }; /** - * Tests that the "xGB available message appears in the gear menu for + * Tests that the "xGB available" message appears in the gear menu for * an SMB volume. */ testcase.showAvailableStorageSmbfs = async () => {
diff --git a/ui/gtk/gtk_ui.cc b/ui/gtk/gtk_ui.cc index 2bfa807..0b73c0ab 100644 --- a/ui/gtk/gtk_ui.cc +++ b/ui/gtk/gtk_ui.cc
@@ -30,7 +30,6 @@ #include "ui/base/ime/input_method.h" #include "ui/base/ime/linux/fake_input_method_context.h" #include "ui/base/ime/linux/linux_input_method_context.h" -#include "ui/base/ime/linux/linux_input_method_context_wrapper.h" #include "ui/color/color_id.h" #include "ui/color/color_provider.h" #include "ui/color/color_provider_manager.h"
diff --git a/ui/views/controls/combobox/combobox_menu_model.cc b/ui/views/controls/combobox/combobox_menu_model.cc index e800e79..156c178 100644 --- a/ui/views/controls/combobox/combobox_menu_model.cc +++ b/ui/views/controls/combobox/combobox_menu_model.cc
@@ -16,34 +16,35 @@ // Overridden from MenuModel: bool ComboboxMenuModel::HasIcons() const { - for (int i = 0; i < GetItemCount(); ++i) { + for (size_t i = 0; i < GetItemCount(); ++i) { if (!GetIconAt(i).IsEmpty()) return true; } return false; } -int ComboboxMenuModel::GetItemCount() const { +size_t ComboboxMenuModel::GetItemCount() const { return model_->GetItemCount(); } -ui::MenuModel::ItemType ComboboxMenuModel::GetTypeAt(int index) const { +ui::MenuModel::ItemType ComboboxMenuModel::GetTypeAt(size_t index) const { if (model_->IsItemSeparatorAt(index)) return TYPE_SEPARATOR; return UseCheckmarks() ? TYPE_CHECK : TYPE_COMMAND; } -ui::MenuSeparatorType ComboboxMenuModel::GetSeparatorTypeAt(int index) const { +ui::MenuSeparatorType ComboboxMenuModel::GetSeparatorTypeAt( + size_t index) const { return ui::NORMAL_SEPARATOR; } -int ComboboxMenuModel::GetCommandIdAt(int index) const { +int ComboboxMenuModel::GetCommandIdAt(size_t index) const { // Define the id of the first item in the menu (since it needs to be > 0) constexpr int kFirstMenuItemId = 1000; - return index + kFirstMenuItemId; + return static_cast<int>(index) + kFirstMenuItemId; } -std::u16string ComboboxMenuModel::GetLabelAt(int index) const { +std::u16string ComboboxMenuModel::GetLabelAt(size_t index) const { // Inserting the Unicode formatting characters if necessary so that the // text is displayed correctly in right-to-left UIs. std::u16string text = model_->GetDropDownTextAt(index); @@ -51,21 +52,21 @@ return text; } -std::u16string ComboboxMenuModel::GetSecondaryLabelAt(int index) const { +std::u16string ComboboxMenuModel::GetSecondaryLabelAt(size_t index) const { std::u16string text = model_->GetDropDownSecondaryTextAt(index); base::i18n::AdjustStringForLocaleDirection(&text); return text; } -bool ComboboxMenuModel::IsItemDynamicAt(int index) const { +bool ComboboxMenuModel::IsItemDynamicAt(size_t index) const { return true; } -const gfx::FontList* ComboboxMenuModel::GetLabelFontListAt(int index) const { +const gfx::FontList* ComboboxMenuModel::GetLabelFontListAt(size_t index) const { return &owner_->GetFontList(); } -bool ComboboxMenuModel::GetAcceleratorAt(int index, +bool ComboboxMenuModel::GetAcceleratorAt(size_t index, ui::Accelerator* accelerator) const { return false; } @@ -74,31 +75,31 @@ return UseCheckmarks() && index == owner_->GetSelectedIndex(); } -int ComboboxMenuModel::GetGroupIdAt(int index) const { +int ComboboxMenuModel::GetGroupIdAt(size_t index) const { return -1; } -ui::ImageModel ComboboxMenuModel::GetIconAt(int index) const { +ui::ImageModel ComboboxMenuModel::GetIconAt(size_t index) const { return model_->GetDropDownIconAt(index); } ui::ButtonMenuItemModel* ComboboxMenuModel::GetButtonMenuItemAt( - int index) const { + size_t index) const { return nullptr; } -bool ComboboxMenuModel::IsEnabledAt(int index) const { +bool ComboboxMenuModel::IsEnabledAt(size_t index) const { return model_->IsItemEnabledAt(index); } -void ComboboxMenuModel::ActivatedAt(int index) { +void ComboboxMenuModel::ActivatedAt(size_t index) { owner_->MenuSelectionAt(index); } -void ComboboxMenuModel::ActivatedAt(int index, int event_flags) { +void ComboboxMenuModel::ActivatedAt(size_t index, int event_flags) { ActivatedAt(index); } -ui::MenuModel* ComboboxMenuModel::GetSubmenuModelAt(int index) const { +ui::MenuModel* ComboboxMenuModel::GetSubmenuModelAt(size_t index) const { return nullptr; }
diff --git a/ui/views/controls/combobox/combobox_menu_model.h b/ui/views/controls/combobox/combobox_menu_model.h index ebce201..0656b73 100644 --- a/ui/views/controls/combobox/combobox_menu_model.h +++ b/ui/views/controls/combobox/combobox_menu_model.h
@@ -28,23 +28,24 @@ // Overridden from MenuModel: bool HasIcons() const override; - int GetItemCount() const override; - ui::MenuModel::ItemType GetTypeAt(int index) const override; - ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override; - int GetCommandIdAt(int index) const override; - std::u16string GetLabelAt(int index) const override; - std::u16string GetSecondaryLabelAt(int index) const override; - bool IsItemDynamicAt(int index) const override; - const gfx::FontList* GetLabelFontListAt(int index) const override; - bool GetAcceleratorAt(int index, ui::Accelerator* accelerator) const override; + size_t GetItemCount() const override; + ui::MenuModel::ItemType GetTypeAt(size_t index) const override; + ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const override; + int GetCommandIdAt(size_t index) const override; + std::u16string GetLabelAt(size_t index) const override; + std::u16string GetSecondaryLabelAt(size_t index) const override; + bool IsItemDynamicAt(size_t index) const override; + const gfx::FontList* GetLabelFontListAt(size_t index) const override; + bool GetAcceleratorAt(size_t index, + ui::Accelerator* accelerator) const override; bool IsItemCheckedAt(size_t index) const override; - int GetGroupIdAt(int index) const override; - ui::ImageModel GetIconAt(int index) const override; - ui::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const override; - bool IsEnabledAt(int index) const override; - void ActivatedAt(int index) override; - void ActivatedAt(int index, int event_flags) override; - ui::MenuModel* GetSubmenuModelAt(int index) const override; + int GetGroupIdAt(size_t index) const override; + ui::ImageModel GetIconAt(size_t index) const override; + ui::ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const override; + bool IsEnabledAt(size_t index) const override; + void ActivatedAt(size_t index) override; + void ActivatedAt(size_t index, int event_flags) override; + ui::MenuModel* GetSubmenuModelAt(size_t index) const override; raw_ptr<views::Combobox> owner_; // Weak. Owns this. raw_ptr<ui::ComboboxModel> model_; // Weak.
diff --git a/ui/views/controls/combobox/combobox_unittest.cc b/ui/views/controls/combobox/combobox_unittest.cc index d382986..00dc0cd 100644 --- a/ui/views/controls/combobox/combobox_unittest.cc +++ b/ui/views/controls/combobox/combobox_unittest.cc
@@ -828,8 +828,7 @@ ui::MenuModel* menu_model = test_api_->menu_model(); - EXPECT_EQ(TestComboboxModel::kItemCount, - static_cast<size_t>(menu_model->GetItemCount())); + EXPECT_EQ(TestComboboxModel::kItemCount, menu_model->GetItemCount()); EXPECT_EQ(ui::MenuModel::TYPE_SEPARATOR, menu_model->GetTypeAt(kSeparatorIndex));
diff --git a/ui/views/controls/editable_combobox/editable_combobox.cc b/ui/views/controls/editable_combobox/editable_combobox.cc index f02a2ba..e94fafd 100644 --- a/ui/views/controls/editable_combobox/editable_combobox.cc +++ b/ui/views/controls/editable_combobox/editable_combobox.cc
@@ -176,8 +176,8 @@ return MenuConfig::instance().check_selected_combobox_item; } - std::u16string GetItemTextAt(int index, bool showing_password_text) const { - int index_in_model = items_shown_[index].index; + std::u16string GetItemTextAt(size_t index, bool showing_password_text) const { + size_t index_in_model = items_shown_[index].index; std::u16string text = combobox_model_->GetItemAt(index_in_model); return showing_password_text ? text @@ -185,7 +185,7 @@ gfx::RenderText::kPasswordReplacementChar); } - ui::ImageModel GetIconAt(int index) const override { + ui::ImageModel GetIconAt(size_t index) const override { return combobox_model_->GetDropDownIconAt(items_shown_[index].index); } @@ -198,7 +198,7 @@ observation_.Reset(); } - int GetItemCount() const override { return items_shown_.size(); } + size_t GetItemCount() const override { return items_shown_.size(); } private: struct ShownItem { @@ -206,39 +206,39 @@ bool enabled; }; bool HasIcons() const override { - for (int i = 0; i < GetItemCount(); ++i) { + for (size_t i = 0; i < GetItemCount(); ++i) { if (!GetIconAt(i).IsEmpty()) return true; } return false; } - ItemType GetTypeAt(int index) const override { + ItemType GetTypeAt(size_t index) const override { return UseCheckmarks() ? TYPE_CHECK : TYPE_COMMAND; } - ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override { + ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const override { return ui::NORMAL_SEPARATOR; } - int GetCommandIdAt(int index) const override { + int GetCommandIdAt(size_t index) const override { constexpr int kFirstMenuItemId = 1000; - return index + kFirstMenuItemId; + return static_cast<int>(index) + kFirstMenuItemId; } - std::u16string GetLabelAt(int index) const override { + std::u16string GetLabelAt(size_t index) const override { std::u16string text = GetItemTextAt(index, owner_->showing_password_text_); base::i18n::AdjustStringForLocaleDirection(&text); return text; } - bool IsItemDynamicAt(int index) const override { return false; } + bool IsItemDynamicAt(size_t index) const override { return false; } - const gfx::FontList* GetLabelFontListAt(int index) const override { + const gfx::FontList* GetLabelFontListAt(size_t index) const override { return &owner_->GetFontList(); } - bool GetAcceleratorAt(int index, + bool GetAcceleratorAt(size_t index, ui::Accelerator* accelerator) const override { return false; } @@ -249,19 +249,19 @@ owner_->GetText(); } - int GetGroupIdAt(int index) const override { return -1; } + int GetGroupIdAt(size_t index) const override { return -1; } - ui::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const override { + ui::ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const override { return nullptr; } - bool IsEnabledAt(int index) const override { + bool IsEnabledAt(size_t index) const override { return items_shown_[index].enabled; } - void ActivatedAt(int index) override { owner_->OnItemSelected(index); } + void ActivatedAt(size_t index) override { owner_->OnItemSelected(index); } - MenuModel* GetSubmenuModelAt(int index) const override { return nullptr; } + MenuModel* GetSubmenuModelAt(size_t index) const override { return nullptr; } raw_ptr<EditableCombobox> owner_; // Weak. Owns |this|. raw_ptr<ui::ComboboxModel> combobox_model_; // Weak.
diff --git a/ui/views/controls/menu/menu_model_adapter.cc b/ui/views/controls/menu/menu_model_adapter.cc index fb5d5e6..45b0ba5 100644 --- a/ui/views/controls/menu/menu_model_adapter.cc +++ b/ui/views/controls/menu/menu_model_adapter.cc
@@ -154,7 +154,7 @@ void MenuModelAdapter::ExecuteCommand(int id) { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) { model->ActivatedAt(index); return; @@ -165,7 +165,7 @@ void MenuModelAdapter::ExecuteCommand(int id, int mouse_event_flags) { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) { model->ActivatedAt(index, mouse_event_flags); return; @@ -184,7 +184,7 @@ bool MenuModelAdapter::GetAccelerator(int id, ui::Accelerator* accelerator) const { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) return model->GetAcceleratorAt(index, accelerator); @@ -194,7 +194,7 @@ std::u16string MenuModelAdapter::GetLabel(int id) const { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) return model->GetLabelAt(index); @@ -204,7 +204,7 @@ const gfx::FontList* MenuModelAdapter::GetLabelFontList(int id) const { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) { const gfx::FontList* font_list = model->GetLabelFontListAt(index); if (font_list) @@ -217,7 +217,7 @@ bool MenuModelAdapter::IsCommandEnabled(int id) const { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) return model->IsEnabledAt(index); @@ -227,7 +227,7 @@ bool MenuModelAdapter::IsCommandVisible(int id) const { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) return model->IsVisibleAt(index); @@ -237,7 +237,7 @@ bool MenuModelAdapter::IsItemChecked(int id) const { ui::MenuModel* model = menu_model_; - int index = 0; + size_t index = 0; if (ui::MenuModel::GetModelAndIndexForCommandId(id, &model, &index)) return model->IsItemCheckedAt(index); @@ -290,8 +290,8 @@ DCHECK(menu); DCHECK(model); bool has_icons = model->HasIcons(); - const int item_count = model->GetItemCount(); - for (int i = 0; i < item_count; ++i) { + const size_t item_count = model->GetItemCount(); + for (size_t i = 0; i < item_count; ++i) { MenuItemView* item = AppendMenuItem(menu, model, i); if (item) { // Enabled state should be ignored for titles as they are non-interactive.
diff --git a/ui/views/controls/menu/menu_model_adapter_unittest.cc b/ui/views/controls/menu/menu_model_adapter_unittest.cc index 2f53921..5164ca6 100644 --- a/ui/views/controls/menu/menu_model_adapter_unittest.cc +++ b/ui/views/controls/menu/menu_model_adapter_unittest.cc
@@ -27,7 +27,7 @@ class MenuModelBase : public ui::MenuModel { public: explicit MenuModelBase(int command_id_base) - : command_id_base_(command_id_base), last_activation_(-1) {} + : command_id_base_(command_id_base) {} MenuModelBase(const MenuModelBase&) = delete; MenuModelBase& operator=(const MenuModelBase&) = delete; @@ -38,62 +38,70 @@ bool HasIcons() const override { return false; } - int GetItemCount() const override { return static_cast<int>(items_.size()); } + size_t GetItemCount() const override { return items_.size(); } - ItemType GetTypeAt(int index) const override { return items_[index].type; } + ItemType GetTypeAt(size_t index) const override { return items_[index].type; } - ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override { + ui::MenuSeparatorType GetSeparatorTypeAt(size_t index) const override { return ui::NORMAL_SEPARATOR; } - int GetCommandIdAt(int index) const override { - return index + command_id_base_; + int GetCommandIdAt(size_t index) const override { + return static_cast<int>(index) + command_id_base_; } - std::u16string GetLabelAt(int index) const override { + std::u16string GetLabelAt(size_t index) const override { return items_[index].label; } - bool IsItemDynamicAt(int index) const override { return false; } + bool IsItemDynamicAt(size_t index) const override { return false; } - const gfx::FontList* GetLabelFontListAt(int index) const override { + const gfx::FontList* GetLabelFontListAt(size_t index) const override { return nullptr; } - bool GetAcceleratorAt(int index, + bool GetAcceleratorAt(size_t index, ui::Accelerator* accelerator) const override { return false; } bool IsItemCheckedAt(size_t index) const override { return false; } - int GetGroupIdAt(int index) const override { return 0; } + int GetGroupIdAt(size_t index) const override { return 0; } - ui::ImageModel GetIconAt(int index) const override { + ui::ImageModel GetIconAt(size_t index) const override { return ui::ImageModel(); } - ui::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const override { + ui::ButtonMenuItemModel* GetButtonMenuItemAt(size_t index) const override { return nullptr; } - bool IsEnabledAt(int index) const override { return items_[index].enabled; } + bool IsEnabledAt(size_t index) const override { + return items_[index].enabled; + } - bool IsVisibleAt(int index) const override { return items_[index].visible; } + bool IsVisibleAt(size_t index) const override { + return items_[index].visible; + } - bool IsAlertedAt(int index) const override { return items_[index].alerted; } + bool IsAlertedAt(size_t index) const override { + return items_[index].alerted; + } - bool IsNewFeatureAt(int index) const override { + bool IsNewFeatureAt(size_t index) const override { return items_[index].new_feature; } - MenuModel* GetSubmenuModelAt(int index) const override { + MenuModel* GetSubmenuModelAt(size_t index) const override { return items_[index].submenu; } - void ActivatedAt(int index) override { set_last_activation(index); } + void ActivatedAt(size_t index) override { set_last_activation(index); } - void ActivatedAt(int index, int event_flags) override { ActivatedAt(index); } + void ActivatedAt(size_t index, int event_flags) override { + ActivatedAt(index); + } void MenuWillShow() override {} @@ -133,8 +141,8 @@ const Item& GetItemDefinition(size_t index) { return items_[index]; } // Access index argument to ActivatedAt(). - int last_activation() const { return last_activation_; } - void set_last_activation(int last_activation) { + absl::optional<size_t> last_activation() const { return last_activation_; } + void set_last_activation(absl::optional<size_t> last_activation) { last_activation_ = last_activation; } @@ -143,7 +151,7 @@ private: int command_id_base_; - int last_activation_; + absl::optional<size_t> last_activation_; }; class SubmenuModel : public MenuModelBase { @@ -204,7 +212,7 @@ views::MenuModelAdapter* delegate, int submenu_id, size_t expected_children, - int submenu_model_index, + size_t submenu_model_index, int id) { views::MenuItemView* submenu = menu->GetMenuItemByID(submenu_id); views::SubmenuView* subitem_container = submenu->GetSubmenu(); @@ -267,8 +275,8 @@ // Check activation. static_cast<views::MenuDelegate*>(delegate)->ExecuteCommand(id); - EXPECT_EQ(i, static_cast<size_t>(submodel->last_activation())); - submodel->set_last_activation(-1); + EXPECT_EQ(i, submodel->last_activation()); + submodel->set_last_activation(absl::nullopt); } } @@ -351,8 +359,8 @@ // Check activation. static_cast<views::MenuDelegate*>(&delegate)->ExecuteCommand(id); - EXPECT_EQ(i, static_cast<size_t>(model.last_activation())); - model.set_last_activation(-1); + EXPECT_EQ(i, model.last_activation()); + model.set_last_activation(absl::nullopt); } // Check the submenu.
diff --git a/ui/views/controls/menu/menu_runner_impl_cocoa.mm b/ui/views/controls/menu/menu_runner_impl_cocoa.mm index 6f92eb0..46722c1 100644 --- a/ui/views/controls/menu/menu_runner_impl_cocoa.mm +++ b/ui/views/controls/menu/menu_runner_impl_cocoa.mm
@@ -242,12 +242,12 @@ } - (void)controllerWillAddMenu:(NSMenu*)menu fromModel:(ui::MenuModel*)model { - int alerted_index = -1; + absl::optional<size_t> alerted_index; IdentifierContainer* const element_ids = [[[IdentifierContainer alloc] init] autorelease]; - for (int i = 0; i < model->GetItemCount(); ++i) { + for (size_t i = 0; i < model->GetItemCount(); ++i) { if (model->IsAlertedAt(i)) { - DCHECK_LT(alerted_index, 0); + DCHECK(!alerted_index.has_value()); alerted_index = i; } const ui::ElementIdentifier identifier = model->GetElementIdentifierAt(i); @@ -255,14 +255,14 @@ [element_ids ids].push_back(identifier); } - if (alerted_index >= 0 || ![element_ids ids].empty()) { + if (alerted_index.has_value() || ![element_ids ids].empty()) { auto shown_callback = ^(NSNotification* note) { NSMenu* const menu_obj = note.object; - if (alerted_index >= 0) { + if (alerted_index.has_value()) { if ([menu respondsToSelector:@selector(_menuImpl)]) { NSCarbonMenuImpl* menuImpl = [menu_obj _menuImpl]; if ([menuImpl respondsToSelector:@selector(highlightItemAtIndex:)]) { - [menuImpl highlightItemAtIndex:alerted_index]; + [menuImpl highlightItemAtIndex:alerted_index.value()]; } } }
diff --git a/ui/views/controls/menu/native_menu_win.cc b/ui/views/controls/menu/native_menu_win.cc index 3a62f75f..ca62ed3 100644 --- a/ui/views/controls/menu/native_menu_win.cc +++ b/ui/views/controls/menu/native_menu_win.cc
@@ -69,9 +69,9 @@ owner_draw_ = model_->HasIcons() || owner_draw_; first_item_index_ = delegate ? delegate->GetInsertionIndex(menu_) : 0; - for (int model_index = 0; model_index < model_->GetItemCount(); + for (size_t model_index = 0; model_index < model_->GetItemCount(); ++model_index) { - int menu_index = model_index + first_item_index_; + size_t menu_index = model_index + first_item_index_; if (model_->GetTypeAt(model_index) == ui::MenuModel::TYPE_SEPARATOR) AddSeparatorItemAt(menu_index, model_index); else @@ -83,7 +83,7 @@ // A depth-first walk of the menu items, updating states. int model_index = 0; for (const auto& item : items_) { - int menu_index = model_index + first_item_index_; + size_t menu_index = model_index + first_item_index_; SetMenuItemState(menu_index, model_->IsEnabledAt(model_index), model_->IsItemCheckedAt(model_index), false); if (model_->IsItemDynamicAt(model_index)) {
diff --git a/ui/views/controls/menu/native_menu_win.h b/ui/views/controls/menu/native_menu_win.h index c4c8341..bfd6503 100644 --- a/ui/views/controls/menu/native_menu_win.h +++ b/ui/views/controls/menu/native_menu_win.h
@@ -99,7 +99,7 @@ HWND system_menu_for_; // The index of the first item in the model in the menu. - int first_item_index_; + size_t first_item_index_; // If we're a submenu, this is our parent. raw_ptr<NativeMenuWin> parent_;
diff --git a/ui/views/controls/textfield/textfield_unittest.cc b/ui/views/controls/textfield/textfield_unittest.cc index 3ea9cef..7d74ba3 100644 --- a/ui/views/controls/textfield/textfield_unittest.cc +++ b/ui/views/controls/textfield/textfield_unittest.cc
@@ -3879,7 +3879,7 @@ // A normal empty field may show the Emoji option (if supported). ui::MenuModel* context_menu = GetContextMenuModel(); EXPECT_TRUE(context_menu); - EXPECT_GT(context_menu->GetItemCount(), 0); + EXPECT_GT(context_menu->GetItemCount(), 0u); // Not all OS/versions support the emoji menu. EXPECT_EQ(ui::IsEmojiPanelSupported(), context_menu->GetLabelAt(0) == @@ -3894,7 +3894,7 @@ // In no case is the emoji option showing on a read-only field. ui::MenuModel* context_menu = GetContextMenuModel(); EXPECT_TRUE(context_menu); - EXPECT_GT(context_menu->GetItemCount(), 0); + EXPECT_GT(context_menu->GetItemCount(), 0u); EXPECT_NE(context_menu->GetLabelAt(0), l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_EMOJI)); } @@ -3916,7 +3916,7 @@ textfield_->SelectAll(false); ui::MenuModel* context_menu = GetContextMenuModel(); EXPECT_TRUE(context_menu); - EXPECT_GT(context_menu->GetItemCount(), 0); + EXPECT_GT(context_menu->GetItemCount(), 0u); // Not all OS/versions support the emoji menu. EXPECT_EQ(ui::IsEmojiPanelSupported(), context_menu->GetLabelAt(kExpectedEmojiIndex) == @@ -3967,7 +3967,7 @@ ui::MenuModel* context_menu = GetContextMenuModel(); EXPECT_TRUE(context_menu); - EXPECT_GT(context_menu->GetItemCount(), 0); + EXPECT_GT(context_menu->GetItemCount(), 0u); EXPECT_NE(context_menu->GetCommandIdAt(0), IDS_CONTENT_CONTEXT_LOOK_UP); EXPECT_NE(context_menu->GetLabelAt(0), l10n_util::GetStringFUTF16(IDS_CONTENT_CONTEXT_LOOK_UP, kText));
diff --git a/ui/views/interaction/interaction_sequence_views_unittest.cc b/ui/views/interaction/interaction_sequence_views_unittest.cc index 3936e91..4ff6c40c 100644 --- a/ui/views/interaction/interaction_sequence_views_unittest.cc +++ b/ui/views/interaction/interaction_sequence_views_unittest.cc
@@ -166,7 +166,7 @@ menu_model_->AddItem(kMenuID1, kMenuItem1); menu_model_->AddItem(kMenuID2, kMenuItem2); menu_model_->SetElementIdentifierAt( - menu_model_->GetIndexOfCommandId(kMenuID2), id); + menu_model_->GetIndexOfCommandId(kMenuID2).value(), id); menu_runner_ = std::make_unique<MenuRunner>(menu_model_.get(), MenuRunner::NO_FLAGS);
diff --git a/ui/webui/resources/BUILD.gn b/ui/webui/resources/BUILD.gn index 559c223..2b70d13 100644 --- a/ui/webui/resources/BUILD.gn +++ b/ui/webui/resources/BUILD.gn
@@ -232,7 +232,6 @@ "js/cr/event_target.m.js", "js/cr.m.js", "js/cr/ui.m.js", - "js/cr/ui/array_data_model.m.js", "js/cr/ui/drag_wrapper.js", "js/cr/ui/focus_grid.js", "js/cr/ui/focus_outline_manager.m.js", @@ -257,6 +256,7 @@ if (is_chromeos_ash) { generate_definitions_js_files += [ + "js/cr/ui/array_data_model.m.js", "js/cr/ui/list_item.m.js", "js/cr/ui/list_selection_controller.m.js", "js/cr/ui/list_selection_model.m.js",
diff --git a/ui/webui/resources/js/cr/ui/BUILD.gn b/ui/webui/resources/js/cr/ui/BUILD.gn index 42150ee5..fb79712 100644 --- a/ui/webui/resources/js/cr/ui/BUILD.gn +++ b/ui/webui/resources/js/cr/ui/BUILD.gn
@@ -73,7 +73,6 @@ out_folder = "$preprocess_folder" out_manifest = "$target_gen_dir/$preprocess_gen_manifest" in_files = [ - "array_data_model.m.js", "focus_outline_manager.m.js", "focus_row.m.js", "keyboard_shortcut_list.m.js", @@ -94,6 +93,7 @@ if (is_chromeos_ash) { in_files += [ + "array_data_model.m.js", "grid.m.js", "list_item.m.js", "list.m.js",
diff --git a/url/url_constants.cc b/url/url_constants.cc index 96850982..ee21a27 100644 --- a/url/url_constants.cc +++ b/url/url_constants.cc
@@ -50,6 +50,8 @@ const char16_t kUrnScheme16[] = u"urn"; const char kUuidInPackageScheme[] = "uuid-in-package"; const char16_t kUuidInPackageScheme16[] = u"uuid-in-package"; +const char kWebcalScheme[] = "webcal"; +const char16_t kWebcalScheme16[] = u"webcal"; const char kWsScheme[] = "ws"; const char16_t kWsScheme16[] = u"ws"; const char kWssScheme[] = "wss";
diff --git a/url/url_constants.h b/url/url_constants.h index 1722666..049062793 100644 --- a/url/url_constants.h +++ b/url/url_constants.h
@@ -54,6 +54,8 @@ COMPONENT_EXPORT(URL) extern const char16_t kUrnScheme16[]; COMPONENT_EXPORT(URL) extern const char kUuidInPackageScheme[]; COMPONENT_EXPORT(URL) extern const char16_t kUuidInPackageScheme16[]; +COMPONENT_EXPORT(URL) extern const char kWebcalScheme[]; +COMPONENT_EXPORT(URL) extern const char16_t kWebcalScheme16[]; COMPONENT_EXPORT(URL) extern const char kWsScheme[]; COMPONENT_EXPORT(URL) extern const char16_t kWsScheme16[]; COMPONENT_EXPORT(URL) extern const char kWssScheme[];
diff --git a/url/url_util.cc b/url/url_util.cc index cd8e2e1..d92fe87 100644 --- a/url/url_util.cc +++ b/url/url_util.cc
@@ -29,6 +29,16 @@ SchemeType type; }; +// A pair for representing a scheme and a custom protocol handler for it. +// +// This pair of strings must be normalized protocol handler parameters as +// described in the Custom Handler specification. +// https://html.spec.whatwg.org/multipage/system-state.html#normalize-protocol-handler-parameters +struct SchemeWithHandler { + std::string scheme; + std::string handler; +}; + // List of currently registered schemes and associated properties. struct SchemeRegistry { // Standard format schemes (see header for details). @@ -101,6 +111,9 @@ kAboutScheme, }; + // Schemes with a predefined default custom handler. + std::vector<SchemeWithHandler> predefined_handler_schemes; + bool allow_non_standard_schemes = false; }; @@ -501,6 +514,21 @@ << "Trying to add a scheme after the lists have been locked."; } +void DoAddSchemeWithHandler(const char* new_scheme, + const char* handler, + std::vector<SchemeWithHandler>* schemes) { + DoSchemeModificationPreamble(); + DCHECK(schemes); + DCHECK(strlen(new_scheme) > 0); + DCHECK(strlen(handler) > 0); + DCHECK_EQ(base::ToLowerASCII(new_scheme), new_scheme); + DCHECK(std::find_if(schemes->begin(), schemes->end(), + [&new_scheme](const SchemeWithHandler& scheme) { + return scheme.scheme == new_scheme; + }) == schemes->end()); + schemes->push_back({new_scheme, handler}); +} + void DoAddScheme(const char* new_scheme, std::vector<std::string>* schemes) { DoSchemeModificationPreamble(); DCHECK(schemes); @@ -649,6 +677,22 @@ return GetSchemeRegistry().empty_document_schemes; } +void AddPredefinedHandlerScheme(const char* new_scheme, const char* handler) { + DoAddSchemeWithHandler( + new_scheme, handler, + &GetSchemeRegistryWithoutLocking()->predefined_handler_schemes); +} + +std::vector<std::pair<std::string, std::string>> GetPredefinedHandlerSchemes() { + std::vector<std::pair<std::string, std::string>> result; + result.reserve(GetSchemeRegistry().predefined_handler_schemes.size()); + for (const SchemeWithHandler& entry : + GetSchemeRegistry().predefined_handler_schemes) { + result.emplace_back(entry.scheme, entry.handler); + } + return result; +} + void LockSchemeRegistries() { scheme_registries_locked = true; }
diff --git a/url/url_util.h b/url/url_util.h index db7e08c..455ac2ab 100644 --- a/url/url_util.h +++ b/url/url_util.h
@@ -115,6 +115,16 @@ COMPONENT_EXPORT(URL) void AddEmptyDocumentScheme(const char* new_scheme); COMPONENT_EXPORT(URL) const std::vector<std::string>& GetEmptyDocumentSchemes(); +// Adds a scheme with a predefined default handler. +// +// This pair of strings must be normalized protocol handler parameters as +// described in the Custom Handler specification. +// https://html.spec.whatwg.org/multipage/system-state.html#normalize-protocol-handler-parameters +COMPONENT_EXPORT(URL) +void AddPredefinedHandlerScheme(const char* new_scheme, const char* handler); +COMPONENT_EXPORT(URL) +std::vector<std::pair<std::string, std::string>> GetPredefinedHandlerSchemes(); + // Sets a flag to prevent future calls to Add*Scheme from succeeding. // // This is designed to help prevent errors for multithreaded applications.
diff --git a/weblayer/browser/java/org/chromium/weblayer_private/TranslateCompactInfoBar.java b/weblayer/browser/java/org/chromium/weblayer_private/TranslateCompactInfoBar.java index 90844b9..6c1d8dbe 100644 --- a/weblayer/browser/java/org/chromium/weblayer_private/TranslateCompactInfoBar.java +++ b/weblayer/browser/java/org/chromium/weblayer_private/TranslateCompactInfoBar.java
@@ -206,13 +206,13 @@ switch (menuType) { case TranslateMenu.MENU_OVERFLOW: mOverflowMenuHelper = new TranslateMenuHelper(getContext(), mMenuButton, mOptions, - this, isIncognito, isSourceLangUnknown); + this, isIncognito, isSourceLangUnknown, () -> null); return; case TranslateMenu.MENU_TARGET_LANGUAGE: case TranslateMenu.MENU_SOURCE_LANGUAGE: if (mLanguageMenuHelper == null) { mLanguageMenuHelper = new TranslateMenuHelper(getContext(), mMenuButton, - mOptions, this, isIncognito, isSourceLangUnknown); + mOptions, this, isIncognito, isSourceLangUnknown, () -> null); } return; default: