tbb-commits
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
August 2020
- 2 participants
- 290 discussions

[tor-browser/tor-browser-78.1.0esr-10.0-1] Bug 31740: Remove some unnecessary RemoteSettings instances
by gk@torproject.org 07 Aug '20
by gk@torproject.org 07 Aug '20
07 Aug '20
commit 4436013e20bfe5e469b9ef94ddb48d0310028a30
Author: Alex Catarineu <acat(a)torproject.org>
Date: Wed Oct 16 23:01:12 2019 +0200
Bug 31740: Remove some unnecessary RemoteSettings instances
More concretely, SearchService.jsm 'hijack-blocklists' and
url-classifier-skip-urls.
---
netwerk/url-classifier/UrlClassifierFeatureBase.cpp | 2 +-
netwerk/url-classifier/components.conf | 6 ------
toolkit/components/search/SearchService.jsm | 2 --
3 files changed, 1 insertion(+), 9 deletions(-)
diff --git a/netwerk/url-classifier/UrlClassifierFeatureBase.cpp b/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
index 9bc7fc5d6e9a..3fb3b74a4f08 100644
--- a/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
+++ b/netwerk/url-classifier/UrlClassifierFeatureBase.cpp
@@ -76,7 +76,7 @@ void UrlClassifierFeatureBase::InitializePreferences() {
nsCOMPtr<nsIUrlClassifierSkipListService> skipListService =
do_GetService("@mozilla.org/url-classifier/skip-list-service;1");
- if (NS_WARN_IF(!skipListService)) {
+ if (!skipListService) {
return;
}
diff --git a/netwerk/url-classifier/components.conf b/netwerk/url-classifier/components.conf
index 7f49d94b6488..b2e667247317 100644
--- a/netwerk/url-classifier/components.conf
+++ b/netwerk/url-classifier/components.conf
@@ -13,10 +13,4 @@ Classes = [
'constructor': 'mozilla::net::ChannelClassifierService::GetSingleton',
'headers': ['mozilla/net/ChannelClassifierService.h'],
},
- {
- 'cid': '{b9f4fd03-9d87-4bfd-9958-85a821750ddc}',
- 'contract_ids': ['@mozilla.org/url-classifier/skip-list-service;1'],
- 'jsm': 'resource://gre/modules/UrlClassifierSkipListService.jsm',
- 'constructor': 'UrlClassifierSkipListService',
- },
]
diff --git a/toolkit/components/search/SearchService.jsm b/toolkit/components/search/SearchService.jsm
index 608f3c475458..23cb3daa9fac 100644
--- a/toolkit/components/search/SearchService.jsm
+++ b/toolkit/components/search/SearchService.jsm
@@ -573,8 +573,6 @@ SearchService.prototype = {
)
.finally(() => (this._ensureKnownRegionPromise = null));
- this._setupRemoteSettings().catch(Cu.reportError);
-
await this._loadEngines(cache);
// If we've got this far, but the application is now shutting down,
1
0

[tor-browser/tor-browser-78.1.0esr-10.0-1] TB4: Tor Browser's Firefox preference overrides.
by gk@torproject.org 07 Aug '20
by gk@torproject.org 07 Aug '20
07 Aug '20
commit afe53132c4c75028330546a31810c6843e4c179d
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Sep 10 18:20:43 2013 -0700
TB4: Tor Browser's Firefox preference overrides.
This hack directly includes our preference changes in omni.ja.
Bug 18292: Staged updates fail on Windows
Temporarily disable staged updates on Windows.
Bug 18297: Use separate Noto JP,KR,SC,TC fonts
Bug 23404: Add Noto Sans Buginese to the macOS whitelist
Bug 23745: Set dom.indexedDB.enabled = true
Bug 13575: Disable randomised Firefox HTTP cache decay user tests.
(Fernando Fernandez Mancera <ffmancera(a)riseup.net>)
Bug 17252: Enable session identifiers with FPI
Session tickets and session identifiers were isolated
by OriginAttributes, so we can re-enable them by
allowing the default value (true) of
"security.ssl.disable_session_identifiers".
The pref "security.enable_tls_session_tickets" is obsolete
(removed in https://bugzilla.mozilla.org/917049)
Bug 14952: Enable http/2 and AltSvc
In Firefox, SPDY/HTTP2 now uses Origin Attributes for
isolation of connections, push streams, origin frames, etc.
That means we get first-party isolation provided
"privacy.firstparty.isolate" is true. So in this patch, we
stop overriding "network.http.spdy.enabled" and
"network.http.spdy.enabled.http2".
Alternate Services also use Origin Attributes for isolation.
So we stop overriding
"network.http.altsvc.enabled" and "network.http.altsvc.oe"
as well.
(All 4 of the abovementioned "network.http.*" prefs adopt
Firefox 60ESR's default value of true.)
However, we want to disable HTTP/2 push for now, so we
set "network.http.spdy.allow-push" to false.
"network.http.spdy.enabled.http2draft" was removed in Bug 1132357.
"network.http.sped.enabled.v2" was removed in Bug 912550.
"network.http.sped.enabled.v3" was removed in Bug 1097944.
"network.http.sped.enabled.v3-1" was removed in Bug 1248197.
Bug 26114: addons.mozilla.org is not special
* Don't expose navigator.mozAddonManager on any site
* Don't block NoScript from modifying addons.mozilla.org or other sites
Enable ReaderView mode again (#27281).
Bug 29916: Make sure enterprise policies are disabled
Bug 2874: Block Components.interfaces from content
Bug 26146: Spoof HTTP User-Agent header for desktop platforms
In Tor Browser 8.0, the OS was revealed in both the HTTP User-Agent
header and to JavaScript code via navigator.userAgent. To avoid
leaking the OS inside each HTTP request (which many web servers
log), always use the Windows 7 OS value in the desktop User-Agent
header. We continue to allow access to the actual OS via JavaScript,
since doing so improves compatibility with web applications such
as GitHub and Google Docs.
Bug 12885: Windows Jump Lists fail for Tor Browser
Jumplist entries are stored in a binary file in:
%APPDATA%\\Microsoft\Windows\Recent\CustomDestinations\
and has a name in the form
[a-f0-9]+.customDestinations-ms
The hex at the front is unique per app, and is ultimately derived from
something called the 'App User Model ID' (AUMID) via some unknown
hashing method. The AUMID is provided as a key when programmatically
creating, updating, and deleting a jumplist. The default behaviour in
firefox is for the installer to define an AUMID for an app, and save it
in the registry so that the jumplist data can be removed by the
uninstaller.
However, the Tor Browser does not set this (or any other) regkey during
installation, so this codepath fails and the app's AUMID is left
undefined. As a result the app's AUMID ends up being defined by
windows, but unknowable by Tor Browser. This unknown AUMID is used to
create and modify the jumplist, but the delete API requires that we
provide the app's AUMID explicitly. Since we don't know what the AUMID
is (since the expected regkey where it is normally stored does not
exist) jumplist deletion will fail and we will leave behind a mostly
empty customDestinations-ms file. The name of the file is derived from
the binary path, so an enterprising person could reverse engineer how
that hex name is calculated, and generate the name for Tor Browser's
default Desktop installation path to determine whether a person had
used Tor Browser in the past.
The 'taskbar.grouping.useprofile' option that is enabled by this patch
works around this AUMID problem by having firefox.exe create it's own
AUMID based on the profile path (rather than looking for a regkey). This
way, if a user goes in and enables and disables jumplist entries, the
backing store is properly deleted.
Unfortunately, all windows users currently have this file lurking in
the above mentioned directory and this patch will not remove it since it
was created with an unknown AUMID. However, another patch could be
written which goes to that directory and deletes any item containing the
'Tor Browser' string. See bug 28996.
Bug 31396: Disable indexedDB WebExtension storage backend.
Bug 30845: Make sure default themes and other internal extensions are enabled
Bug 28896: Enable extensions in private browsing by default
Bug 31065: Explicitly allow proxying localhost
Bug 31598: Enable letterboxing
Disable Presentation API everywhere
Bug 21549 - Use Firefox's WASM default pref. It is disabled at safer
security levels.
Bug 32321: Disable Mozilla's MitM pings
Bug 19890: Disable installation of system addons
By setting the URL to "" we make sure that already installed system
addons get deleted as well.
Bug 22548: Firefox downgrades VP9 videos to VP8.
On systems where H.264 is not available or no HWA, VP9 is preferred. But in Tor
Browser 7.0 all youtube videos are degraded to VP8.
This behaviour can be turned off by setting media.benchmark.vp9.threshold to 0.
All clients will get better experience and lower traffic, beause TBB doesn't
use "Use hardware acceleration when available".
Bug 25741 - TBA: Add mobile-override of 000-tor-browser prefs
Bug 16441: Suppress "Reset Tor Browser" prompt.
Bug 29120: Use the in-memory media cache and increase its maximum size.
Bug 33697: use old search config based on list.json
Bug 33855: Ensure that site-specific browser mode is disabled.
Bug 30682: Disable Intermediate CA Preloading.
---
.eslintignore | 3 +
browser/app/profile/000-tor-browser.js | 593 ++++++++++++++++++++++++++
browser/app/profile/firefox.js | 6 +-
browser/installer/package-manifest.in | 1 +
browser/moz.build | 1 +
mobile/android/app/000-tor-browser-android.js | 54 +++
mobile/android/app/geckoview-prefs.js | 2 +
mobile/android/app/mobile.js | 4 +
mobile/android/app/moz.build | 1 +
taskcluster/ci/source-test/mozlint.yml | 2 +
10 files changed, 664 insertions(+), 3 deletions(-)
diff --git a/.eslintignore b/.eslintignore
index e0be1073894c..031ff26f1808 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -143,6 +143,9 @@ js/src/jsapi-tests/binast/
js/src/tests/
js/src/Y.js
+# uses `#include`
+mobile/android/app/000-tor-browser-android.js
+
# Uses `#filter substitution`
mobile/android/app/mobile.js
mobile/android/app/geckoview-prefs.js
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
new file mode 100644
index 000000000000..16af79f5907d
--- /dev/null
+++ b/browser/app/profile/000-tor-browser.js
@@ -0,0 +1,593 @@
+# Default Preferences
+# Tor Browser Bundle
+# Do not edit this file.
+
+// Please maintain unit tests at ./tbb-tests/browser_tor_TB4.js
+
+// Disable initial homepage notifications
+pref("browser.search.update", false);
+pref("browser.rights.3.shown", true);
+pref("browser.startup.homepage_override.mstone", "ignore");
+pref("startup.homepage_welcome_url", "");
+pref("startup.homepage_welcome_url.additional", "");
+
+// Set a generic, default URL that will be opened in a tab after an update.
+// Typically, this will not be used; instead, the <update> element within
+// each update manifest should contain attributes similar to:
+// actions="showURL"
+// openURL="https://blog.torproject.org/tor-browser-55a2-released"
+pref("startup.homepage_override_url", "https://blog.torproject.org/category/tags/tor-browser");
+
+// Try to nag a bit more about updates: Pop up a restart dialog an hour after the initial dialog
+pref("app.update.promptWaitTime", 3600);
+
+#ifdef XP_WIN
+// For now, disable staged updates on Windows (see #18292).
+pref("app.update.staging.enabled", false);
+#endif
+
+// No need to contact the Kinto-based blocklist system in addition to the old
+// one which is still used, see bug 22071.
+pref("services.blocklist.update_enabled", false);
+
+// Disable "Slow startup" warnings and associated disk history
+// (bug #13346)
+pref("browser.slowStartup.notificationDisabled", true);
+pref("browser.slowStartup.maxSamples", 0);
+pref("browser.slowStartup.samples", 0);
+
+// Disable the "Refresh" prompt that is displayed for stale profiles.
+pref("browser.disableResetPrompt", true);
+
+// Disk activity: Disable Browsing History Storage
+pref("browser.privatebrowsing.autostart", true);
+pref("browser.cache.disk.enable", false);
+pref("browser.cache.offline.enable", false);
+pref("permissions.memory_only", true);
+pref("network.cookie.lifetimePolicy", 2);
+pref("security.nocertdb", true);
+
+// Disk activity: TBB Directory Isolation
+pref("browser.download.useDownloadDir", false);
+pref("browser.shell.checkDefaultBrowser", false);
+pref("browser.download.manager.addToRecentDocs", false);
+
+// Misc privacy: Disk
+pref("signon.rememberSignons", false);
+pref("browser.formfill.enable", false);
+pref("signon.autofillForms", false);
+pref("browser.sessionstore.privacy_level", 2);
+// Use the in-memory media cache and increase its maximum size (#29120)
+pref("browser.privatebrowsing.forceMediaMemoryCache", true);
+pref("media.memory_cache_max_size", 16384);
+// Disable site-specific browsing to avoid sharing site icons with the OS.
+pref("browser.ssb.enabled", false);
+
+// Misc privacy: Remote
+pref("browser.send_pings", false);
+pref("geo.enabled", false);
+pref("geo.wifi.uri", "");
+pref("browser.search.suggest.enabled", false);
+pref("browser.safebrowsing.malware.enabled", false);
+pref("browser.safebrowsing.phishing.enabled", false);
+pref("browser.safebrowsing.downloads.enabled", false);
+pref("browser.safebrowsing.downloads.remote.enabled", false);
+pref("browser.safebrowsing.blockedURIs.enabled", false);
+pref("browser.safebrowsing.downloads.remote.url", "");
+pref("browser.safebrowsing.provider.google.updateURL", "");
+pref("browser.safebrowsing.provider.google.gethashURL", "");
+pref("browser.safebrowsing.provider.google4.updateURL", "");
+pref("browser.safebrowsing.provider.google4.gethashURL", "");
+pref("browser.safebrowsing.provider.mozilla.updateURL", "");
+pref("browser.safebrowsing.provider.mozilla.gethashURL", "");
+pref("extensions.ui.lastCategory", "addons://list/extension");
+pref("datareporting.healthreport.uploadEnabled", false);
+pref("datareporting.policy.dataSubmissionEnabled", false);
+// Make sure Unified Telemetry is really disabled, see: #18738.
+pref("toolkit.telemetry.unified", false);
+pref("toolkit.telemetry.enabled", false);
+// No experiments, use Tor Browser. See 21797.
+pref("experiments.enabled", false);
+pref("browser.syncPromoViewsLeftMap", "{\"addons\":0, \"passwords\":0, \"bookmarks\":0}"); // Don't promote sync
+pref("identity.fxaccounts.enabled", false); // Disable sync by default
+pref("services.sync.engine.prefs", false); // Never sync prefs, addons, or tabs with other browsers
+pref("services.sync.engine.addons", false);
+pref("services.sync.engine.tabs", false);
+pref("extensions.getAddons.cache.enabled", false); // https://blog.mozilla.org/addons/how-to-opt-out-of-add-on-metadata-updates/
+pref("browser.newtabpage.enabled", false);
+pref("browser.search.region", "US"); // The next two prefs disable GeoIP search lookups (#16254)
+pref("browser.search.geoip.url", "");
+pref("browser.fixup.alternate.enabled", false); // Bug #16783: Prevent .onion fixups
+// Make sure there is no Tracking Protection active in Tor Browser, see: #17898.
+pref("privacy.trackingprotection.pbmode.enabled", false);
+// Disable the Pocket extension (Bug #18886 and #31602)
+pref("extensions.pocket.enabled", false);
+pref("network.http.referer.hideOnionSource", true);
+
+// Disable ServiceWorkers by default
+pref("dom.serviceWorkers.enabled", false);
+
+// Fingerprinting
+pref("webgl.disable-extensions", true);
+pref("webgl.disable-fail-if-major-performance-caveat", true);
+pref("webgl.enable-webgl2", false);
+pref("gfx.downloadable_fonts.fallback_delay", -1);
+pref("browser.startup.homepage_override.buildID", "20100101");
+pref("browser.link.open_newwindow.restriction", 0); // Bug 9881: Open popups in new tabs (to avoid fullscreen popups)
+// Set video VP9 to 0 for everyone (bug 22548)
+pref("media.benchmark.vp9.threshold", 0);
+pref("dom.enable_resource_timing", false); // Bug 13024: To hell with this API
+pref("privacy.resistFingerprinting", true);
+pref("privacy.resistFingerprinting.block_mozAddonManager", true); // Bug 26114
+pref("dom.webaudio.enabled", false); // Bug 13017: Disable Web Audio API
+pref("dom.w3c_touch_events.enabled", 0); // Bug 10286: Always disable Touch API
+pref("dom.w3c_pointer_events.enabled", false);
+pref("dom.vr.enabled", false); // Bug 21607: Disable WebVR for now
+// Disable randomised Firefox HTTP cache decay user test groups (Bug: 13575)
+pref("security.webauth.webauthn", false); // Bug 26614: Disable Web Authentication API for now
+pref("browser.cache.frecency_experiment", -1);
+// Disable intermediate preloading (Bug 30682)
+pref("security.remote_settings.intermediates.enabled", false);
+// Bug 2874: Block Components.interfaces from content
+pref("dom.use_components_shim", false);
+// Enable letterboxing
+pref("privacy.resistFingerprinting.letterboxing", true);
+// Disable network information API everywhere. It gets spoofed in bug 1372072
+// but, alas, the behavior is inconsistent across platforms, see:
+// https://trac.torproject.org/projects/tor/ticket/27268#comment:19. We should
+// not leak that difference if possible.
+pref("dom.netinfo.enabled", false);
+pref("network.http.referer.defaultPolicy", 2); // Bug 32948: Make referer behavior consistent regardless of private browing mode status
+
+// Third party stuff
+pref("privacy.firstparty.isolate", true); // Always enforce first party isolation
+pref("network.cookie.cookieBehavior", 1);
+pref("network.http.spdy.allow-push", false); // Disabled for now. See https://bugs.torproject.org/27127
+pref("network.predictor.enabled", false); // Temporarily disabled. See https://bugs.torproject.org/16633
+
+// Proxy and proxy security
+pref("network.proxy.socks", "127.0.0.1");
+pref("network.proxy.socks_port", 9150);
+pref("network.proxy.socks_remote_dns", true);
+pref("network.proxy.no_proxies_on", ""); // For fingerprinting and local service vulns (#10419)
+pref("network.proxy.allow_hijacking_localhost", true); // Allow proxies for localhost (#31065)
+pref("network.proxy.type", 1);
+pref("network.security.ports.banned", "9050,9051,9150,9151");
+pref("network.dns.disabled", true); // This should cover the #5741 patch for DNS leaks
+pref("network.dns.disablePrefetch", true);
+pref("network.protocol-handler.external-default", false);
+pref("network.protocol-handler.external.mailto", false);
+pref("network.protocol-handler.external.news", false);
+pref("network.protocol-handler.external.nntp", false);
+pref("network.protocol-handler.external.snews", false);
+pref("network.protocol-handler.warn-external.mailto", true);
+pref("network.protocol-handler.warn-external.news", true);
+pref("network.protocol-handler.warn-external.nntp", true);
+pref("network.protocol-handler.warn-external.snews", true);
+// Make sure we don't have any GIO supported protocols (defense in depth
+// measure)
+pref("network.gio.supported-protocols", "");
+pref("plugin.disable", true); // Disable to search plugins on first start
+pref("plugin.state.flash", 0); // Disable for defense-in-depth
+pref("media.peerconnection.enabled", false); // Disable WebRTC interfaces
+// Disables media devices but only if `media.peerconnection.enabled` is set to
+// `false` as well. (see bug 16328 for this defense-in-depth measure)
+pref("media.navigator.enabled", false);
+// GMPs: We make sure they don't show up on the Add-on panel and confuse users.
+// And the external update/donwload server must not get pinged. We apply a
+// clever solution for https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=769716.
+pref("media.gmp-provider.enabled", false);
+pref("media.gmp-manager.url.override", "data:text/plain,");
+// Since ESR52 it is not enough anymore to block pinging the GMP update/download
+// server. There is a local fallback that must be blocked now as well. See:
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1267495.
+pref("media.gmp-manager.updateEnabled", false);
+// Mozilla is relying on preferences to make sure no DRM blob is downloaded and
+// run. Even though those prefs should be set correctly by specifying
+// --disable-eme (which we do), we disable all of them here as well for defense
+// in depth (see bug 16285 for more details).
+pref("browser.eme.ui.enabled", false);
+pref("media.gmp-widevinecdm.visible", false);
+pref("media.gmp-widevinecdm.enabled", false);
+pref("media.eme.enabled", false);
+pref("media.mediadrm-widevinecdm.visible", false);
+// WebIDE can bypass proxy settings for remote debugging. It also downloads
+// some additional addons that we have not reviewed. Turn all that off.
+pref("devtools.webide.autoinstallADBExtension", false);
+pref("devtools.webide.enabled", false);
+// The in-browser debugger for debugging chrome code is not coping with our
+// restrictive DNS look-up policy. We use "127.0.0.1" instead of "localhost" as
+// a workaround. See bug 16523 for more details.
+pref("devtools.debugger.chrome-debugging-host", "127.0.0.1");
+// Disable using UNC paths (bug 26424 and Mozilla's bug 1413868)
+pref("network.file.disable_unc_paths", true);
+// Enhance our treatment of file:// to avoid proxy bypasses (see Mozilla's bug
+// 1412081)
+pref("network.file.path_blacklist", "/net");
+// Make sure no enterprise policy can interfere with our proxy settings, see
+// #29916.
+pref("browser.policies.testing.disallowEnterprise", true);
+
+// Security slider
+pref("svg.in-content.enabled", true);
+pref("mathml.disabled", false);
+
+// Network and performance
+pref("security.ssl.enable_false_start", true);
+pref("network.http.connection-retry-timeout", 0);
+pref("network.http.max-persistent-connections-per-proxy", 256);
+pref("network.manage-offline-status", false);
+// No need to leak things to Mozilla, see bug 21790
+pref("network.captive-portal-service.enabled", false);
+// As a "defense in depth" measure, configure an empty push server URL (the
+// DOM Push features are disabled by default via other prefs).
+pref("dom.push.serverURL", "");
+
+// Extension support
+pref("extensions.autoDisableScopes", 0);
+pref("extensions.bootstrappedAddons", "{}");
+pref("extensions.checkCompatibility.4.*", false);
+pref("extensions.databaseSchema", 3);
+pref("extensions.enabledAddons", "https-everywhere%40eff.org:3.1.4,%7B73a6fe31-595d-460b-a920-fcc0f8843232%7D:2.6.6.1,torbutton%40torproject.org:1.5.2,ubufox%40ubuntu.com:2.6,%7B972ce4c6-7e08-4474-a285-3208198ce6fd%7D:17.0.5");
+pref("extensions.enabledItems", "langpack-en-US@firefox.mozilla.org:,{73a6fe31-595d-460b-a920-fcc0f8843232}:1.9.9.57,{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.4,{972ce4c6-7e08-4474-a285-3208198ce6fd}:3.5.8");
+pref("extensions.enabledScopes", 5); // AddonManager.SCOPE_PROFILE=1 | AddonManager.SCOPE_APPLICATION=4
+pref("extensions.pendingOperations", false);
+pref("xpinstall.whitelist.add", "");
+pref("xpinstall.whitelist.add.36", "");
+// We don't know what extensions Mozilla is advertising to our users and we
+// don't want to have some random Google Analytics script running either on the
+// about:addons page, see bug 22073, 22900 and 31601.
+pref("extensions.getAddons.showPane", false);
+pref("extensions.htmlaboutaddons.recommendations.enabled", false);
+// Show our legacy extensions directly on about:addons and get rid of the
+// warning for the default theme.
+pref("extensions.legacy.exceptions", "{972ce4c6-7e08-4474-a285-3208198ce6fd},torbutton(a)torproject.org");
+// Bug 26114: Allow NoScript to access addons.mozilla.org etc.
+pref("extensions.webextensions.restrictedDomains", "");
+// Bug 31396: Disable indexedDB WebExtension storage backend.
+pref("extensions.webextensions.ExtensionStorageIDB.enabled", false);
+// Bug 28896: Make sure our bundled WebExtensions are running in Private Browsing Mode
+pref("extensions.allowPrivateBrowsingByDefault", true);
+
+// Toolbar layout
+pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-list\":[],\"PersonalToolbar\":[\"personal-bookmarks\"],\"nav-bar\":[\"back-button\",\"forward-button\",\"stop-reload-button\",\"urlbar-container\",\"torbutton-button\",\"security-level-button\",\"downloads-button\"],\"TabsToolbar\":[\"tabbrowser-tabs\",\"new-tab-button\",\"alltabs-button\"],\"toolbar-menubar\":[\"menubar-items\"],\"PanelUI-contents\":[\"home-button\",\"edit-controls\",\"zoom-controls\",\"new-window-button\",\"save-page-button\",\"print-button\",\"bookmarks-menu-button\",\"history-panelmenu\",\"find-button\",\"preferences-button\",\"add-ons-button\",\"developer-button\"],\"addon-bar\":[\"addonbar-closebutton\",\"status-bar\"]},\"seen\":[\"developer-button\",\"https-everywhere-eff_eff_org-browser-action\",\"_73a6fe31-595d-460b-a920-fcc0f8843232_-browser-action\"],\"dirtyAreaCache\":[\"PersonalToolbar\",\"nav-bar\",\"TabsToolbar\",\"toolbar-menubar\"],\"currentVersion\":14,\"newElementCount
\":1}");
+
+// Putting the search engine prefs into this file to fix #11236.
+// Default search engine
+pref("browser.search.defaultenginename", "Search");
+
+// Search engine order (order displayed in the search bar dropdown)
+// Somewhat surprisingly we get some random behavior if we specify more than
+// two search engines as below. See
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1126722 for details.
+pref("browser.search.order.extra.1", "Search");
+pref("browser.search.order.extra.2", "YouTube");
+
+// Enforce certificate pinning, see: https://bugs.torproject.org/16206
+pref("security.cert_pinning.enforcement_level", 2);
+
+// Don't allow MitM via Microsoft Family Safety, see bug 21686
+pref("security.family_safety.mode", 0);
+
+// Don't allow MitM via enterprise roots, see bug 30681
+pref("security.enterprise_roots.enabled", false);
+
+// Don't ping Mozilla for MitM detection, see bug 32321
+pref("security.certerrors.mitm.priming.enabled", false);
+
+// Disable the language pack signing check for now on macOS, see #31942
+#ifdef XP_MACOSX
+pref("extensions.langpacks.signatures.required", false);
+#endif
+
+// Avoid report TLS errors to Mozilla. We might want to repurpose this feature
+// one day to help detecting bad relays (which is bug 19119). For now we just
+// hide the checkbox, see bug 22072.
+pref("security.ssl.errorReporting.enabled", false);
+
+// Workaround for https://bugs.torproject.org/13579. Progress on
+// `about:downloads` is only shown if the following preference is set to `true`
+// in case the download panel got removed from the toolbar.
+pref("browser.download.panel.shown", true);
+
+// Treat .onions as secure
+pref("dom.securecontext.whitelist_onions", true);
+
+// prefs to disable jump-list entries in the taskbar on Windows (see bug #12885)
+#ifdef XP_WIN
+// this pref changes the app's set AUMID to be dependent on the profile path, rather than
+// attempting to read it from the registry; this is necessary so that the file generated
+// by the jumplist system can be properly deleted if it is disabled
+pref("taskbar.grouping.useprofile", true);
+pref("browser.taskbar.lists.enabled", false);
+pref("browser.taskbar.lists.frequent.enabled", false);
+pref("browser.taskbar.lists.tasks.enabled", false);
+pref("browser.taskbar.lists.recent.enabled", false);
+#endif
+
+// Disable Presentation API
+pref("dom.presentation.controller.enabled", false);
+pref("dom.presentation.enabled", false);
+pref("dom.presentation.discoverable", false);
+pref("dom.presentation.discoverable.encrypted", false);
+pref("dom.presentation.discovery.enabled", false);
+pref("dom.presentation.receiver.enabled", false);
+
+pref("dom.audiochannel.audioCompeting", false);
+pref("dom.audiochannel.mediaControl", false);
+
+#expand pref("torbrowser.version", __TOR_BROWSER_VERSION_QUOTED__);
+
+// Old torbutton prefs
+
+// debug prefs
+pref("extensions.torbutton.loglevel",4);
+pref("extensions.torbutton.logmethod",1); // 0=stdout, 1=errorconsole, 2=debuglog
+
+// Display prefs
+pref("extensions.torbutton.display_circuit", true);
+pref("extensions.torbutton(a)torproject.org.description", "chrome://torbutton/locale/torbutton.properties");
+pref("extensions.torbutton.updateNeeded", false);
+
+// Tor check and proxy prefs
+pref("extensions.torbutton.test_enabled",true);
+pref("extensions.torbutton.test_url","https://check.torproject.org/?TorButton=true");
+pref("extensions.torbutton.local_tor_check",true);
+pref("extensions.torbutton.versioncheck_url","https://www.torproject.org/projects/torbrowser/RecommendedTBBVersions");
+pref("extensions.torbutton.versioncheck_enabled",true);
+pref("extensions.torbutton.use_nontor_proxy",false);
+
+// State prefs:
+pref("extensions.torbutton.startup",false);
+pref("extensions.torbutton.inserted_button",false);
+pref("extensions.torbutton.inserted_security_level",false);
+
+// This is only used when letterboxing is disabled.
+// See #7255 for details. We display the warning three times to make sure the
+// user did not click on it by accident.
+pref("extensions.torbutton.maximize_warnings_remaining", 3);
+
+// Security prefs:
+pref("extensions.torbutton.clear_http_auth",true);
+pref("extensions.torbutton.close_newnym",true);
+pref("extensions.torbutton.resize_new_windows",false);
+pref("extensions.torbutton.startup_state", 2); // 0=non-tor, 1=tor, 2=last
+pref("extensions.torbutton.tor_memory_jar",false);
+pref("extensions.torbutton.nontor_memory_jar",false);
+pref("extensions.torbutton.launch_warning",true);
+
+// Opt out of Firefox addon pings:
+// https://developer.mozilla.org/en/Addons/Working_with_AMO
+pref("extensions.torbutton(a)torproject.org.getAddons.cache.enabled", false);
+
+// Security Slider
+pref("extensions.torbutton.security_slider", 4);
+pref("extensions.torbutton.security_custom", false);
+
+pref("extensions.torbutton.confirm_plugins", true);
+pref("extensions.torbutton.confirm_newnym", true);
+
+pref("extensions.torbutton.noscript_inited", false);
+pref("extensions.torbutton.noscript_persist", false);
+
+// Browser home page:
+pref("browser.startup.homepage", "about:tor");
+
+// This pref specifies an ad-hoc "version" for various pref update hacks we need to do
+pref("extensions.torbutton.pref_fixup_version", 0);
+
+// If we are bundling fonts, whitelist those bundled fonts, and restrict system fonts to a selection.
+
+#ifdef MOZ_BUNDLED_FONTS
+
+#ifdef XP_MACOSX
+pref("font.system.whitelist", "AppleGothic, Apple Color Emoji, Arial, Courier, Geneva, Georgia, Heiti TC, Helvetica, Helvetica Neue, .Helvetica Neue DeskInterface, Hiragino Kaku Gothic ProN, Lucida Grande, Monaco, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tibetan, Noto Sans Yi, STHeiti, STIX Math, Tahoma, Thonburi, Times, Times New Roman, Verdana");
+pref("font.name-list.cursive.x-unicode", "Apple Chancery, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tibetan, Noto Sans Yi");
+pref("font.name-list.fantasy.x-unicode", "Papyrus, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tibetan, Noto Sans Yi");
+pref("font.name-list.monospace.x-unicode", "Courier, Arial, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tibetan, Noto Sans Yi");
+pref("font.name-list.sans-serif.x-unicode", "Helvetica, Tahoma, Arial, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tibetan, Noto Sans Yi");
+pref("font.name-list.serif.x-unicode", "Times, Arial, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Tibetan, Noto Sans Yi");
+pref("font.name.cursive.ar", "Arial");
+pref("font.name.fantasy.ar", "Arial");
+pref("font.name.monospace.ar", "Arial");
+pref("font.name.sans-serif.ar", "Arial");
+#endif
+
+#ifdef XP_WIN
+pref("font.system.whitelist", "Arial, Batang, 바탕, Cambria Math, Courier New, Euphemia, Gautami, Georgia, Gulim, 굴림, GulimChe, 굴림체, Iskoola Pota, Kalinga, Kartika, Latha, Lucida Console, MS Gothic, MS ゴシック, MS Mincho, MS 明朝, MS PGothic, MS Pゴシック, MS PMincho, MS P明朝, MV Boli, Malgun Gothic, Mangal, Meiryo, Meiryo UI, Microsoft Himalaya, Microsoft JhengHei, Microsoft JhengHei UI, Microsoft YaHei, 微软雅黑, Microsoft YaHei UI, MingLiU, 細明體, Noto Sans Buginese, Noto Sans Khmer, Noto Sans Lao, Noto Sans Myanmar, Noto Sans Yi, Nyala, PMingLiU, 新細明體, Plantagenet Cherokee, Raavi, Segoe UI, Shruti, SimSun, 宋体, Sylfaen, Tahoma, Times New Roman, Tunga, Verdana, Vrinda, Yu Gothic UI");
+#endif
+
+#ifdef XP_LINUX
+pref("font.default.lo", "Noto Sans Lao");
+pref("font.default.my", "Noto Sans Myanmar");
+pref("font.default.x-western", "sans-serif");
+pref("font.name-list.cursive.ar", "Noto Naskh Arabic, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.cursive.he", "Noto Sans Hebrew, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.cursive.x-cyrillic", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.cursive.x-unicode", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.cursive.x-western", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.ar", "Noto Naskh Arabic, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.el", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.he", "Noto Sans Hebrew, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.x-cyrillic", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.x-unicode", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.fantasy.x-western", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.ar", "Noto Naskh Arabic, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.el", "Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.he", "Noto Sans Hebrew, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.ja", "Noto Sans JP Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.ko", "Noto Sans KR Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.th", "Noto Sans Thai, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-armn", "Noto Sans Armenian, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-beng", "Noto Sans Bengali, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-cyrillic", "Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-devanagari", "Noto Sans Devanagari, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-ethi", "Noto Sans Ethiopic, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-geor", "Noto Sans Georgian, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-gujr", "Noto Sans Gujarati, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-guru", "Noto Sans Gurmukhi, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-khmr", "Noto Sans Khmer, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-knda", "Noto Sans Kannada, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-mlym", "Noto Sans Malayalam, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-orya", "Noto Sans Oriya, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-sinh", "Noto Sans Sinhala, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-tamil", "Noto Sans Tamil, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-telu", "Noto Sans Telugu, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-tibt", "Noto Sans Tibetan, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-unicode", "Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.x-western", "Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.zh-CN", "Noto Sans SC Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.zh-HK", "Noto Sans TC Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.monospace.zh-TW", "Noto Sans TC Regular, Cousine, Courier, Courier New, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.ar", "Noto Naskh Arabic, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.el", "Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.he", "Noto Sans Hebrew, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.ja", "Noto Sans JP Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.ko", "Noto Sans KR Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.th", "Noto Sans Thai, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-armn", "Noto Sans Armenian, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-beng", "Noto Sans Bengali, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-cyrillic", "Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-devanagari", "Noto Sans Devanagari, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-ethi", "Noto Sans Ethiopic, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-geor", "Noto Sans Georgian, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-gujr", "Noto Sans Gujarati, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-guru", "Noto Sans Gurmukhi, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-khmr", "Noto Sans Khmer, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-knda", "Noto Sans Kannada, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-mlym", "Noto Sans Malayalam, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-orya", "Noto Sans Oriya, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-sinh", "Noto Sans Sinhala, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-tamil", "Noto Sans Tamil, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-telu", "Noto Sans Telugu, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-tibt", "Noto Sans Tibetan, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-unicode", "Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.x-western", "Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.zh-CN", "Noto Sans SC Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.zh-HK", "Noto Sans TC Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.sans-serif.zh-TW", "Noto Sans TC Regular, Arimo, Arial, Verdana, Noto Naskh Arabic, Noto Sans Armenian, Noto Sans Bengali, Noto Sans Buginese, Noto Sans JP Regular, Noto Sans KR Regular, Noto Sans SC Regular, Noto Sans TC Regular, Noto Sans Canadian Aboriginal, Noto Sans Cherokee, Noto Sans Devanagari, Noto Sans Ethiopic, Noto Sans Georgian, Noto Sans Gujarati, Noto Sans Gurmukhi, Noto Sans Hebrew, Noto Sans Kannada, Noto Sans Khmer, Noto Sans Lao, Noto Sans Malayalam, Noto Sans Mongolian, Noto Sans Myanmar, Noto Sans Oriya, Noto Sans Sinhala, Noto Sans Tamil, Noto Sans Telugu, Noto Sans Thaana, Noto Sans Thai, Noto Sans Tibetan, Noto Sans Yi, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.ar", "Noto Naskh Arabic, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.el", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.he", "Tinos, Georgia, Noto Sans Hebrew, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.ja", "Noto Sans JP Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.ko", "Noto Sans KR Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.th", "Noto Serif Thai, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-armn", "Noto Serif Armenian, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-beng", "Noto Sans Bengali, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-cyrillic", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-devanagari", "Noto Sans Devanagari, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-ethi", "Noto Sans Ethiopic, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-geor", "Noto Sans Georgian, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-gujr", "Noto Sans Gujarati, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-guru", "Noto Sans Gurmukhi, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-khmr", "Noto Serif Khmer, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-knda", "Noto Sans Kannada, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-mlym", "Noto Sans Malayalam, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-orya", "Noto Sans Oriya, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-sinh", "Noto Sans Sinhala, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-tamil", "Noto Sans Tamil, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-telu", "Noto Sans Telugu, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-tibt", "Noto Sans Tibetan, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-unicode", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.x-western", "Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.zh-CN", "Noto Sans SC Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.zh-HK", "Noto Sans TC Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name-list.serif.zh-TW", "Noto Sans TC Regular, Tinos, Georgia, Noto Serif Armenian, Noto Serif Khmer, Noto Serif Lao, Noto Serif Thai");
+pref("font.name.cursive.ar", "Noto Naskh Arabic");
+pref("font.name.cursive.el", "Tinos, Georgia");
+pref("font.name.cursive.he", "Noto Sans Hebrew");
+pref("font.name.cursive.x-cyrillic", "Tinos, Georgia");
+pref("font.name.cursive.x-unicode", "Tinos, Georgia");
+pref("font.name.cursive.x-western", "Tinos, Georgia");
+pref("font.name.fantasy.ar", "Noto Naskh Arabic");
+pref("font.name.fantasy.el", "Tinos, Georgia");
+pref("font.name.fantasy.he", "Noto Sans Hebrew");
+pref("font.name.fantasy.x-cyrillic", "Tinos, Georgia");
+pref("font.name.fantasy.x-unicode", "Tinos, Georgia");
+pref("font.name.fantasy.x-western", "Tinos, Georgia");
+pref("font.name.monospace.ar", "Noto Naskh Arabic");
+pref("font.name.monospace.el", "Tinos, Georgia");
+pref("font.name.monospace.he", "Noto Sans Hebrew");
+pref("font.name.monospace.ja", "Noto Sans JP Regular");
+pref("font.name.monospace.ko", "Noto Sans KR Regular");
+pref("font.name.monospace.my", "Noto Sans Myanmar");
+pref("font.name.monospace.th", "Noto Sans Thai");
+pref("font.name.monospace.x-armn", "Noto Sans Armenian");
+pref("font.name.monospace.x-beng", "Noto Sans Bengali");
+pref("font.name.monospace.x-cyrillic", "Cousine, Courier, Courier New");
+pref("font.name.monospace.x-devanagari", "Noto Sans Devanagari");
+pref("font.name.monospace.x-ethi", "Noto Sans Ethiopic");
+pref("font.name.monospace.x-geor", "Noto Sans Georgian");
+pref("font.name.monospace.x-gujr", "Noto Sans Gujarati");
+pref("font.name.monospace.x-guru", "Noto Sans Gurmukhi");
+pref("font.name.monospace.x-khmr", "Noto Sans Khmer");
+pref("font.name.monospace.x-knda", "Noto Sans Kannada");
+pref("font.name.monospace.x-mlym", "Noto Sans Malayalam");
+pref("font.name.monospace.x-orya", "Noto Sans Oriya");
+pref("font.name.monospace.x-sinh", "Noto Sans Sinhala");
+pref("font.name.monospace.x-tamil", "Noto Sans Tamil");
+pref("font.name.monospace.x-telu", "Noto Sans Telugu");
+pref("font.name.monospace.x-tibt", "Noto Sans Tibetan");
+pref("font.name.monospace.x-unicode", "Cousine, Courier, Courier New");
+pref("font.name.monospace.x-western", "Cousine, Courier, Courier New");
+pref("font.name.monospace.zh-CN", "Noto Sans SC Regular");
+pref("font.name.monospace.zh-HK", "Noto Sans TC Regular");
+pref("font.name.monospace.zh-TW", "Noto Sans TC Regular");
+pref("font.name.sans-serif.ar", "Noto Naskh Arabic");
+pref("font.name.sans-serif.el", "Arimo, Arial, Verdana");
+pref("font.name.sans-serif.he", "Noto Sans Hebrew");
+pref("font.name.sans-serif.ja", "Noto Sans JP Regular");
+pref("font.name.sans-serif.ko", "Noto Sans KR Regular");
+pref("font.name.sans-serif.th", "Noto Sans Thai");
+pref("font.name.sans-serif.x-armn", "Noto Sans Armenian");
+pref("font.name.sans-serif.x-beng", "Noto Sans Bengali");
+pref("font.name.sans-serif.x-cyrillic", "Arimo, Arial, Verdana");
+pref("font.name.sans-serif.x-devanagari", "Noto Sans Devanagari");
+pref("font.name.sans-serif.x-ethi", "Noto Sans Ethiopic");
+pref("font.name.sans-serif.x-geor", "Noto Sans Georgian");
+pref("font.name.sans-serif.x-gujr", "Noto Sans Gujarati");
+pref("font.name.sans-serif.x-guru", "Noto Sans Gurmukhi");
+pref("font.name.sans-serif.x-khmr", "Noto Sans Khmer");
+pref("font.name.sans-serif.x-knda", "Noto Sans Kannada");
+pref("font.name.sans-serif.x-mlym", "Noto Sans Malayalam");
+pref("font.name.sans-serif.x-orya", "Noto Sans Oriya");
+pref("font.name.sans-serif.x-sinh", "Noto Sans Sinhala");
+pref("font.name.sans-serif.x-tamil", "Noto Sans Tamil");
+pref("font.name.sans-serif.x-telu", "Noto Sans Telugu");
+pref("font.name.sans-serif.x-tibt", "Noto Sans Tibetan");
+pref("font.name.sans-serif.x-unicode", "Arimo, Arial, Verdana");
+pref("font.name.sans-serif.x-western", "Arimo, Arial, Verdana");
+pref("font.name.sans-serif.zh-CN", "Noto Sans SC Regular");
+pref("font.name.sans-serif.zh-HK", "Noto Sans TC Regular");
+pref("font.name.sans-serif.zh-TW", "Noto Sans TC Regular");
+pref("font.name.sans.my", "Noto Sans Myanmar");
+pref("font.name.serif.ar", "Noto Naskh Arabic");
+pref("font.name.serif.el", "Tinos, Georgia");
+pref("font.name.serif.he", "Noto Sans Hebrew");
+pref("font.name.serif.ja", "Noto Sans JP Regular");
+pref("font.name.serif.ko", "Noto Sans KR Regular");
+pref("font.name.serif.my", "Noto Sans Myanmar");
+pref("font.name.serif.th", "Noto Serif Thai");
+pref("font.name.serif.x-armn", "Noto Serif Armenian");
+pref("font.name.serif.x-beng", "Noto Sans Bengali");
+pref("font.name.serif.x-cyrillic", "Tinos, Georgia");
+pref("font.name.serif.x-devanagari", "Noto Sans Devanagari");
+pref("font.name.serif.x-ethi", "Noto Sans Ethiopic");
+pref("font.name.serif.x-geor", "Noto Sans Georgian");
+pref("font.name.serif.x-gujr", "Noto Sans Gujarati");
+pref("font.name.serif.x-guru", "Noto Sans Gurmukhi");
+pref("font.name.serif.x-khmr", "Noto Serif Khmer");
+pref("font.name.serif.x-knda", "Noto Sans Kannada");
+pref("font.name.serif.x-mlym", "Noto Sans Malayalam");
+pref("font.name.serif.x-orya", "Noto Sans Oriya");
+pref("font.name.serif.x-sinh", "Noto Sans Sinhala");
+pref("font.name.serif.x-tamil", "Noto Sans Tamil");
+pref("font.name.serif.x-telu", "Noto Sans Telugu");
+pref("font.name.serif.x-tibt", "Noto Sans Tibetan");
+pref("font.name.serif.x-unicode", "Tinos, Georgia");
+pref("font.name.serif.x-western", "Tinos, Georgia");
+pref("font.name.serif.zh-CN", "Noto Sans SC Regular");
+pref("font.name.serif.zh-HK", "Noto Sans TC Regular");
+pref("font.name.serif.zh-TW", "Noto Sans TC Regular");
+#endif
+#endif
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index 997da226a80e..ed9df13b8f88 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -49,9 +49,9 @@ pref("extensions.recommendations.themeRecommendationUrl", "https://color.firefox
pref("extensions.update.autoUpdateDefault", true);
-// Check AUS for system add-on updates.
-pref("extensions.systemAddon.update.url", "https://aus5.mozilla.org/update/3/SystemAddons/%VERSION%/%BUILD_ID%/%BUILD_…");
-pref("extensions.systemAddon.update.enabled", true);
+// No AUS check for system add-on updates for Tor Browser users.
+pref("extensions.systemAddon.update.url", "");
+pref("extensions.systemAddon.update.enabled", false);
// Disable add-ons that are not installed by the user in all scopes by default.
// See the SCOPE constants in AddonManager.jsm for values to use here.
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index e011b74cc4b4..7deaf1b51f9a 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -292,6 +292,7 @@
@RESPATH@/browser/defaults/settings/pinning
@RESPATH@/browser/defaults/settings/main
@RESPATH@/browser/defaults/settings/security-state
+@RESPATH@/browser/@PREF_DIR@/000-tor-browser.js
; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325)
; Technically this is an app pref file, but we are keeping it in the original
diff --git a/browser/moz.build b/browser/moz.build
index cfbfea4f31f2..19977e036fba 100644
--- a/browser/moz.build
+++ b/browser/moz.build
@@ -53,6 +53,7 @@ if CONFIG['MOZ_GPSD']:
# These files are specified in this moz.build to pick up DIST_SUBDIR as set in
# this directory, which is un-set in browser/app.
JS_PREFERENCE_PP_FILES += [
+ 'app/profile/000-tor-browser.js',
'app/profile/firefox.js',
]
FINAL_TARGET_FILES.defaults += ['app/permissions']
diff --git a/mobile/android/app/000-tor-browser-android.js b/mobile/android/app/000-tor-browser-android.js
new file mode 100644
index 000000000000..db9e23063738
--- /dev/null
+++ b/mobile/android/app/000-tor-browser-android.js
@@ -0,0 +1,54 @@
+// Import all prefs from the canonical file
+// We override mobile-specific prefs below
+// Tor Browser for Android
+// Do not edit this file.
+
+#include ../../../browser/app/profile/000-tor-browser.js
+
+// Space separated list of URLs that are allowed to send objects (instead of
+// only strings) through webchannels. This list is duplicated in browser/app/profile/firefox.js
+pref("webchannel.allowObject.urlWhitelist", "");
+
+// Disable browser auto updaters
+pref("app.update.auto", false);
+pref("browser.startup.homepage_override.mstone", "ignore");
+
+// Clear data on quit
+pref("privacy.clearOnShutdown.cache", true);
+pref("privacy.clearOnShutdown.cookies",true);
+pref("privacy.clearOnShutdown.downloads",true);
+pref("privacy.clearOnShutdown.formdata",true);
+pref("privacy.clearOnShutdown.history",true);
+pref("privacy.clearOnShutdown.offlineApps",true);
+pref("privacy.clearOnShutdown.passwords",true);
+pref("privacy.clearOnShutdown.sessions",true);
+pref("privacy.clearOnShutdown.siteSettings",true);
+
+// Disable Control media casting & mirroring features
+pref("browser.casting.enabled", false);
+
+// controls if we want camera support
+pref("device.camera.enabled", false);
+pref("media.realtime_decoder.enabled", false);
+
+// Do not fetch updated per-site user-agent strings from Mozilla
+// See ua-update.json.in for the packaged UA override list
+// See https://bugzilla.mozilla.org/show_bug.cgi?id=897221
+pref("general.useragent.updates.enabled", false);
+pref("general.useragent.updates.url", "");
+
+// Enable touch events on Android (highlighting text, etc)
+pref("dom.w3c_touch_events.enabled", 2);
+
+// No HLS support for now due to browser freezing, see: #29859.
+pref("media.hls.enabled", false);
+
+// Inherit locale from the OS, used for multi-locale builds
+pref("intl.locale.requested", "");
+
+// Disable WebAuthn. It requires Google Play Services, so it isn't
+// available, but avoid any potential problems.
+pref("security.webauth.webauthn_enable_android_fido2", false);
+
+// Disable the External App Blocker on Android
+pref("extensions.torbutton.launch_warning", false);
diff --git a/mobile/android/app/geckoview-prefs.js b/mobile/android/app/geckoview-prefs.js
index 3d3871975a28..826970425362 100644
--- a/mobile/android/app/geckoview-prefs.js
+++ b/mobile/android/app/geckoview-prefs.js
@@ -91,3 +91,5 @@ pref("toolkit.autocomplete.delegate", true);
// Android doesn't support the new sync storage yet, we will have our own in
// Bug 1625257.
pref("webextensions.storage.sync.kinto", true);
+
+#include 000-tor-browser-android.js
diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js
index dc1385a36b86..a33666d4cfcf 100644
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -399,7 +399,11 @@ pref("app.update.timerMinimumDelay", 30); // seconds
// used by update service to decide whether or not to
// automatically download an update
pref("app.update.autodownload", "wifi");
+#ifdef TOR_BROWSER_VERSION
+pref("app.update.url.android", "");
+#else
pref("app.update.url.android", "https://aus5.mozilla.org/update/4/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TAR…");
+#endif
#ifdef MOZ_UPDATER
/* prefs used specifically for updating the app */
diff --git a/mobile/android/app/moz.build b/mobile/android/app/moz.build
index 65963fe448eb..4075e8a9d2c4 100644
--- a/mobile/android/app/moz.build
+++ b/mobile/android/app/moz.build
@@ -17,6 +17,7 @@ if CONFIG['MOZ_PKG_SPECIAL']:
DEFINES['MOZ_PKG_SPECIAL'] = CONFIG['MOZ_PKG_SPECIAL']
JS_PREFERENCE_PP_FILES += [
+ '000-tor-browser-android.js',
'mobile.js',
]
diff --git a/taskcluster/ci/source-test/mozlint.yml b/taskcluster/ci/source-test/mozlint.yml
index 6e3373dee6ec..42067fcf14a0 100644
--- a/taskcluster/ci/source-test/mozlint.yml
+++ b/taskcluster/ci/source-test/mozlint.yml
@@ -135,7 +135,9 @@ lintpref:
files-changed:
- 'modules/libpref/init/all.js'
- 'modules/libpref/init/StaticPrefList.yaml'
+ - 'browser/app/profile/000-tor-browser.js'
- 'browser/app/profile/firefox.js'
+ - 'mobile/android/app/000-tor-browser-android.js'
- 'mobile/android/app/mobile.js'
- 'devtools/client/preferences/debugger.js'
- 'mobile/android/app/geckoview-prefs.js'
1
0

[tor-browser/tor-browser-78.1.0esr-10.0-1] Bug 2176: Rebrand Firefox to TorBrowser
by gk@torproject.org 07 Aug '20
by gk@torproject.org 07 Aug '20
07 Aug '20
commit dc4ec93b7a99f108ba1699208951ee6028727f69
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue Sep 10 16:21:47 2013 -0700
Bug 2176: Rebrand Firefox to TorBrowser
See also Bugs #5194, #7187, #8115, #8219.
This patch does some basic renaming of Firefox to TorBrowser. The rest of the
branding is done by images and icons.
Also fix bug 27905.
Bug 25702: Update Tor Browser icon to follow design guidelines
- Updated all of the branding in /browser/branding/official with new 'stable'
icon series.
- Updated /extensions/onboarding/content/img/tor-watermark.png with new icon and
add the source svg in the same directory
- Copied /browser/branding/official over /browser/branding/nightly and the new
/browser/branding/alpha directories. Replaced content with 'nightly' and
'alpha' icon series.
Updated VisualElements_70.png and VisualElements_150.png with updated icons in
each branding directory (fixes #22654)
- Updated firefox.VisualElementsManfiest.xml with updated colors in each
branding directory
- Updated content/identity-icons-brand.svg with Tor Browser icon (fixes #28111)
- Added firefox.svg to each branding directory from which all the other icons
are derived (apart from document.icns and document.ico)
- Added default256.png and default512.png icons
- Updated aboutTBUpdate.css to point to branding-aware icon128.png and removed
original icon
- Use the Tor Browser icon within devtools/client/themes/images/.
Bug 30631: Blurry Tor Browser icon on macOS app switcher
It would seem the png2icns tool does not generate correct icns files and
so on macOS the larger icons were missing resulting in blurry icons in
the OS chrome. Regenerated the padded icons in a macOS VM using
iconutil.
Bug 28196: preparations for using torbutton tor-browser-brand.ftl
A small change to Fluent FileSource class is required so that we
can register a new source without its supported locales being
counted as available locales for the browser.
Bug 31803: Replaced about:debugging logo with flat version
---
browser/actors/WebRTCParent.jsm | 2 +-
browser/base/content/aboutDialog.xhtml | 2 +-
browser/base/content/aboutNetError.xhtml | 2 +-
browser/base/content/aboutRestartRequired.xhtml | 2 +-
browser/base/content/aboutTabCrashed.xhtml | 2 +-
browser/base/content/blockedSite.xhtml | 2 +-
browser/base/content/browser.js | 2 +-
browser/base/content/browser.xhtml | 2 +-
browser/base/content/macWindow.inc.xhtml | 2 +-
browser/base/content/newInstallPage.html | 2 +-
browser/base/content/safeMode.xhtml | 2 +-
browser/base/content/webrtcIndicator.xhtml | 2 +-
browser/branding/alpha/VisualElements_150.png | Bin 0 -> 8412 bytes
browser/branding/alpha/VisualElements_70.png | Bin 0 -> 3496 bytes
browser/branding/alpha/background.png | Bin 0 -> 33362 bytes
browser/branding/alpha/bgstub.jpg | Bin 0 -> 12506 bytes
browser/branding/alpha/bgstub_2x.jpg | Bin 0 -> 49771 bytes
browser/branding/alpha/branding.nsi | 64 +++++++++++++++++++++
browser/branding/alpha/configure.sh | 5 ++
browser/branding/alpha/content/about-logo.png | Bin 0 -> 21173 bytes
browser/branding/alpha/content/about-logo(a)2x.png | Bin 0 -> 51309 bytes
browser/branding/alpha/content/about-wordmark.svg | 36 ++++++++++++
browser/branding/alpha/content/about.png | Bin 0 -> 18520 bytes
browser/branding/alpha/content/aboutDialog.css | 49 ++++++++++++++++
browser/branding/alpha/content/aboutlogins.svg | 59 +++++++++++++++++++
.../branding/alpha/content/firefox-wordmark.svg | 1 +
.../branding/alpha/content/horizontal-lockup.svg | 5 ++
.../alpha/content/identity-icons-brand.svg | 25 ++++++++
browser/branding/alpha/content/jar.mn | 22 +++++++
browser/branding/alpha/content/moz.build | 7 +++
browser/branding/alpha/default128.png | Bin 0 -> 9397 bytes
browser/branding/alpha/default16.png | Bin 0 -> 811 bytes
browser/branding/alpha/default256.png | Bin 0 -> 20481 bytes
browser/branding/alpha/default32.png | Bin 0 -> 1956 bytes
browser/branding/alpha/default48.png | Bin 0 -> 3067 bytes
browser/branding/alpha/default512.png | Bin 0 -> 44907 bytes
browser/branding/alpha/default64.png | Bin 0 -> 4318 bytes
browser/branding/alpha/disk.icns | Bin 0 -> 1548786 bytes
browser/branding/alpha/document.icns | Bin 0 -> 564054 bytes
browser/branding/alpha/document.ico | Bin 0 -> 119671 bytes
browser/branding/alpha/dsstore | Bin 0 -> 14340 bytes
.../alpha/firefox.VisualElementsManifest.xml | 12 ++++
browser/branding/alpha/firefox.icns | Bin 0 -> 291096 bytes
browser/branding/alpha/firefox.ico | Bin 0 -> 119941 bytes
browser/branding/alpha/firefox.svg | 25 ++++++++
browser/branding/alpha/firefox64.ico | Bin 0 -> 119941 bytes
browser/branding/alpha/locales/en-US/brand.dtd | 11 ++++
browser/branding/alpha/locales/en-US/brand.ftl | 22 +++++++
.../branding/alpha/locales/en-US/brand.properties | 14 +++++
browser/branding/alpha/locales/jar.mn | 12 ++++
browser/branding/alpha/locales/moz.build | 7 +++
browser/branding/alpha/moz.build | 13 +++++
browser/branding/alpha/newtab.ico | Bin 0 -> 6518 bytes
browser/branding/alpha/newwindow.ico | Bin 0 -> 6518 bytes
browser/branding/alpha/pbmode.ico | Bin 0 -> 6518 bytes
browser/branding/alpha/pref/firefox-branding.js | 34 +++++++++++
browser/branding/alpha/stubinstaller/bgstub.jpg | Bin 0 -> 53597 bytes
.../alpha/stubinstaller/installing_page.css | 61 ++++++++++++++++++++
.../alpha/stubinstaller/profile_cleanup_page.css | 42 ++++++++++++++
browser/branding/alpha/wizHeader.bmp | Bin 0 -> 34254 bytes
browser/branding/alpha/wizHeaderRTL.bmp | Bin 0 -> 34254 bytes
browser/branding/alpha/wizWatermark.bmp | Bin 0 -> 206038 bytes
browser/branding/branding-common.mozbuild | 2 +
browser/branding/nightly/VisualElements_150.png | Bin 25470 -> 11666 bytes
browser/branding/nightly/VisualElements_70.png | Bin 9590 -> 4273 bytes
browser/branding/nightly/configure.sh | 3 +-
.../nightly/content/identity-icons-brand.svg | 32 ++++++++++-
browser/branding/nightly/content/jar.mn | 2 +
browser/branding/nightly/default128.png | Bin 12392 -> 13686 bytes
browser/branding/nightly/default16.png | Bin 756 -> 891 bytes
browser/branding/nightly/default22.png | Bin 1146 -> 0 bytes
browser/branding/nightly/default24.png | Bin 1281 -> 0 bytes
browser/branding/nightly/default256.png | Bin 30546 -> 33587 bytes
browser/branding/nightly/default32.png | Bin 1910 -> 2254 bytes
browser/branding/nightly/default48.png | Bin 3606 -> 3789 bytes
browser/branding/nightly/default512.png | Bin 0 -> 87830 bytes
browser/branding/nightly/default64.png | Bin 4826 -> 5426 bytes
browser/branding/nightly/document.icns | Bin 517716 -> 689723 bytes
browser/branding/nightly/document.ico | Bin 47042 -> 124422 bytes
.../nightly/firefox.VisualElementsManifest.xml | 2 +-
browser/branding/nightly/firefox.icns | Bin 1014680 -> 642308 bytes
browser/branding/nightly/firefox.ico | Bin 66730 -> 131711 bytes
browser/branding/nightly/firefox.svg | 29 ++++++++++
browser/branding/nightly/firefox64.ico | Bin 38630 -> 131711 bytes
browser/branding/nightly/locales/en-US/brand.dtd | 8 +--
browser/branding/nightly/locales/en-US/brand.ftl | 2 +-
.../nightly/locales/en-US/brand.properties | 10 ++--
browser/branding/nightly/locales/jar.mn | 7 +--
browser/branding/nightly/locales/moz.build | 2 -
browser/branding/nightly/wizHeader.bmp | Bin 25820 -> 34254 bytes
browser/branding/nightly/wizHeaderRTL.bmp | Bin 25820 -> 34254 bytes
browser/branding/nightly/wizWatermark.bmp | Bin 154544 -> 206038 bytes
browser/branding/official/VisualElements_150.png | Bin 23037 -> 7949 bytes
browser/branding/official/VisualElements_70.png | Bin 8763 -> 3374 bytes
browser/branding/official/configure.sh | 2 +-
.../official/content/identity-icons-brand.svg | 34 ++++++++++-
browser/branding/official/content/jar.mn | 2 +
browser/branding/official/default128.png | Bin 13513 -> 9007 bytes
browser/branding/official/default16.png | Bin 722 -> 839 bytes
browser/branding/official/default22.png | Bin 1134 -> 0 bytes
browser/branding/official/default24.png | Bin 1312 -> 0 bytes
browser/branding/official/default256.png | Bin 32441 -> 19136 bytes
browser/branding/official/default32.png | Bin 1948 -> 1965 bytes
browser/branding/official/default48.png | Bin 3448 -> 3074 bytes
browser/branding/official/default512.png | Bin 0 -> 40438 bytes
browser/branding/official/default64.png | Bin 5459 -> 4196 bytes
browser/branding/official/disk.icns | Bin 1525764 -> 172073 bytes
browser/branding/official/document.icns | Bin 501145 -> 509227 bytes
browser/branding/official/document.ico | Bin 45478 -> 119916 bytes
.../official/firefox.VisualElementsManifest.xml | 2 +-
browser/branding/official/firefox.icns | Bin 1021785 -> 259709 bytes
browser/branding/official/firefox.ico | Bin 68328 -> 118595 bytes
browser/branding/official/firefox.svg | 31 ++++++++++
browser/branding/official/firefox64.ico | Bin 38630 -> 118595 bytes
browser/branding/official/locales/en-US/brand.dtd | 8 +--
.../official/locales/en-US/brand.properties | 10 ++--
browser/branding/official/wizHeader.bmp | Bin 25820 -> 34254 bytes
browser/branding/official/wizHeaderRTL.bmp | Bin 25820 -> 34254 bytes
browser/branding/official/wizWatermark.bmp | Bin 154544 -> 206038 bytes
.../aboutconfig/content/aboutconfig.html | 2 +-
.../components/aboutlogins/AboutLoginsParent.jsm | 4 +-
.../aboutlogins/content/aboutLogins.html | 2 +-
.../components/customizableui/content/panelUI.js | 2 +-
.../enterprisepolicies/content/aboutPolicies.html | 2 +-
.../migration/content/aboutWelcomeBack.xhtml | 2 +-
.../newtab/aboutwelcome/content/aboutwelcome.html | 2 +-
.../newtab/bin/render-activity-stream-html.js | 2 +-
.../asrouter/templates/FirstRun/FirstRun.jsx | 2 +-
.../data/content/abouthomecache/page.html.template | 2 +-
.../newtab/data/content/activity-stream.bundle.js | 4 +-
.../newtab/lib/OnboardingMessageProvider.jsm | 2 +-
browser/components/newtab/lib/RemoteL10n.jsm | 2 +-
.../newtab/prerendered/activity-stream-debug.html | 2 +-
.../prerendered/activity-stream-noscripts.html | 2 +-
.../newtab/prerendered/activity-stream.html | 2 +-
.../newtab/test/unit/asrouter/RemoteL10n.test.js | 4 +-
browser/components/pioneer/content/pioneer.html | 2 +-
.../preferences/dialogs/blocklists.xhtml | 2 +-
.../preferences/dialogs/browserLanguages.xhtml | 2 +-
.../preferences/dialogs/clearSiteData.xhtml | 2 +-
.../preferences/dialogs/connection.xhtml | 2 +-
.../components/preferences/dialogs/sanitize.xhtml | 2 +-
.../preferences/dialogs/siteDataSettings.xhtml | 2 +-
browser/components/preferences/main.js | 2 +-
browser/components/preferences/preferences.xhtml | 2 +-
browser/components/preferences/privacy.js | 2 +-
.../content/aboutPrivateBrowsing.html | 2 +-
.../protections/content/protections.html | 2 +-
.../sessionstore/content/aboutSessionRestore.xhtml | 2 +-
.../onboarding/content/img/tor-watermark.png | Bin 0 -> 3064 bytes
.../shared/identity-block/identity-block.inc.css | 10 ++++
config/version.mk | 2 +-
devtools/client/aboutdebugging/aboutdebugging.js | 2 +-
.../images/aboutdebugging-firefox-aurora.svg | 35 +++++++++--
.../themes/images/aboutdebugging-firefox-beta.svg | 35 +++++++++--
.../themes/images/aboutdebugging-firefox-logo.svg | 11 ++--
.../images/aboutdebugging-firefox-nightly.svg | 35 +++++++++--
.../images/aboutdebugging-firefox-release.svg | 35 +++++++++--
intl/l10n/L10nRegistry.jsm | 7 ++-
.../pki/resources/content/exceptionDialog.xhtml | 2 +-
.../components/certviewer/content/certviewer.html | 2 +-
toolkit/content/aboutProfiles.xhtml | 2 +-
toolkit/content/aboutRights-unbranded.xhtml | 2 +-
toolkit/content/aboutRights.xhtml | 2 +-
toolkit/content/aboutServiceWorkers.xhtml | 2 +-
toolkit/content/aboutSupport.xhtml | 2 +-
toolkit/content/aboutTelemetry.xhtml | 2 +-
toolkit/content/resetProfile.xhtml | 2 +-
.../downloads/content/unknownContentType.xhtml | 2 +-
.../mozapps/extensions/content/aboutaddons.html | 2 +-
.../extensions/content/abuse-report-frame.html | 2 +-
toolkit/mozapps/extensions/content/blocklist.xhtml | 2 +-
.../mozapps/extensions/content/extensions.xhtml | 2 +-
toolkit/mozapps/preferences/changemp.xhtml | 2 +-
.../mozapps/update/content/updateElevation.xhtml | 2 +-
toolkit/profile/content/createProfileWizard.xhtml | 2 +-
toolkit/profile/content/profileDowngrade.xhtml | 2 +-
toolkit/profile/content/profileSelection.xhtml | 2 +-
178 files changed, 888 insertions(+), 126 deletions(-)
diff --git a/browser/actors/WebRTCParent.jsm b/browser/actors/WebRTCParent.jsm
index fea1897d63d4..d50845f9001a 100644
--- a/browser/actors/WebRTCParent.jsm
+++ b/browser/actors/WebRTCParent.jsm
@@ -482,7 +482,7 @@ function prompt(aActor, aBrowser, aRequest) {
let chromeDoc = aBrowser.ownerDocument;
let stringBundle = chromeDoc.defaultView.gNavigatorBundle;
let localization = new Localization(
- ["branding/brand.ftl", "browser/browser.ftl"],
+ ["branding/tor-browser-brand.ftl", "browser/browser.ftl"],
true
);
diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml
index 68d100db81a5..1ee820326dc6 100644
--- a/browser/base/content/aboutDialog.xhtml
+++ b/browser/base/content/aboutDialog.xhtml
@@ -35,7 +35,7 @@
#endif
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="browser/aboutDialog.ftl"/>
</linkset>
diff --git a/browser/base/content/aboutNetError.xhtml b/browser/base/content/aboutNetError.xhtml
index 3e9677e3c0ff..299aadddc82e 100644
--- a/browser/base/content/aboutNetError.xhtml
+++ b/browser/base/content/aboutNetError.xhtml
@@ -27,7 +27,7 @@
<link rel="icon" id="favicon" href="chrome://global/skin/icons/warning.svg"/>
<link rel="localization" href="browser/aboutCertError.ftl" />
<link rel="localization" href="browser/nsserrors.ftl" />
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
</head>
<body dir="&locale.dir;">
diff --git a/browser/base/content/aboutRestartRequired.xhtml b/browser/base/content/aboutRestartRequired.xhtml
index c7e7b9dcbb91..6b5ce7c201c8 100644
--- a/browser/base/content/aboutRestartRequired.xhtml
+++ b/browser/base/content/aboutRestartRequired.xhtml
@@ -15,7 +15,7 @@
toolkit/components/places/src/nsFaviconService.h should be updated. -->
<link rel="icon" type="image/png" id="favicon"
href="chrome://global/skin/icons/warning.svg"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/aboutRestartRequired.ftl"/>
</head>
<body>
diff --git a/browser/base/content/aboutTabCrashed.xhtml b/browser/base/content/aboutTabCrashed.xhtml
index 6ac50822f334..fd7d8f71ae9f 100644
--- a/browser/base/content/aboutTabCrashed.xhtml
+++ b/browser/base/content/aboutTabCrashed.xhtml
@@ -15,7 +15,7 @@
href="chrome://browser/content/aboutTabCrashed.css"/>
<link rel="stylesheet" type="text/css" media="all"
href="chrome://browser/skin/aboutTabCrashed.css"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/aboutTabCrashed.ftl"/>
<title data-l10n-id="crashed-title"></title>
diff --git a/browser/base/content/blockedSite.xhtml b/browser/base/content/blockedSite.xhtml
index 4601b0db82d7..af64566af1ac 100644
--- a/browser/base/content/blockedSite.xhtml
+++ b/browser/base/content/blockedSite.xhtml
@@ -9,7 +9,7 @@
<meta http-equiv="Content-Security-Policy" content="default-src chrome:; object-src 'none'" />
<link rel="stylesheet" href="chrome://browser/skin/blockedSite.css" type="text/css" media="all" />
<link rel="icon" type="image/png" id="favicon" href="chrome://global/skin/icons/blocklist_favicon.png"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/safebrowsing/blockedSite.ftl"/>
</head>
<body>
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index a7c8ef0d3054..904905483b14 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -926,7 +926,7 @@ const gStoragePressureObserver = {
}
this._lastNotificationTime = Date.now();
- MozXULElement.insertFTLIfNeeded("branding/brand.ftl");
+ MozXULElement.insertFTLIfNeeded("branding/tor-browser-brand.ftl");
MozXULElement.insertFTLIfNeeded("browser/preferences/preferences.ftl");
const BYTES_IN_GIGABYTE = 1073741824;
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 56f9e9c032fe..3a81d6615284 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -65,7 +65,7 @@
persist="screenX screenY width height sizemode"
data-l10n-sync="true">
<head>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/branding/sync-brand.ftl"/>
<link rel="localization" href="browser/branding/brandings.ftl"/>
<link rel="localization" href="toolkit/global/textActions.ftl"/>
diff --git a/browser/base/content/macWindow.inc.xhtml b/browser/base/content/macWindow.inc.xhtml
index d6327086ff32..a4ba07c94d7a 100644
--- a/browser/base/content/macWindow.inc.xhtml
+++ b/browser/base/content/macWindow.inc.xhtml
@@ -11,7 +11,7 @@
# browser-doctype.inc must also be included.
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="browser/branding/sync-brand.ftl"/>
<html:link rel="localization" href="toolkit/global/textActions.ftl"/>
<html:link rel="localization" href="browser/browserSets.ftl"/>
diff --git a/browser/base/content/newInstallPage.html b/browser/base/content/newInstallPage.html
index 3b7604030f05..4c0c4bc69d27 100644
--- a/browser/base/content/newInstallPage.html
+++ b/browser/base/content/newInstallPage.html
@@ -10,7 +10,7 @@
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" type="text/css" href="chrome://global/skin/in-content/common.css">
<link rel="stylesheet" type="text/css" href="chrome://browser/skin/newInstallPage.css">
- <link rel="localization" href="branding/brand.ftl">
+ <link rel="localization" href="branding/tor-browser-brand.ftl">
<link rel="localization" href="browser/branding/sync-brand.ftl">
<link rel="localization" href="browser/newInstallPage.ftl">
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png">
diff --git a/browser/base/content/safeMode.xhtml b/browser/base/content/safeMode.xhtml
index 5c95e191372b..7f10b95b9874 100644
--- a/browser/base/content/safeMode.xhtml
+++ b/browser/base/content/safeMode.xhtml
@@ -18,7 +18,7 @@
buttonidextra1="refresh-profile">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="browser/safeMode.ftl"/>
</linkset>
diff --git a/browser/base/content/webrtcIndicator.xhtml b/browser/base/content/webrtcIndicator.xhtml
index e56d175a9121..80b0a12c0329 100644
--- a/browser/base/content/webrtcIndicator.xhtml
+++ b/browser/base/content/webrtcIndicator.xhtml
@@ -20,7 +20,7 @@
chromemargin="0,0,0,0">
<head>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/webrtcIndicator.ftl"/>
#ifndef XP_MACOSX
<title data-l10n-id="webrtc-indicator-title"></title>
diff --git a/browser/branding/alpha/VisualElements_150.png b/browser/branding/alpha/VisualElements_150.png
new file mode 100644
index 000000000000..fbf4af94d813
Binary files /dev/null and b/browser/branding/alpha/VisualElements_150.png differ
diff --git a/browser/branding/alpha/VisualElements_70.png b/browser/branding/alpha/VisualElements_70.png
new file mode 100644
index 000000000000..1add6b0e77ff
Binary files /dev/null and b/browser/branding/alpha/VisualElements_70.png differ
diff --git a/browser/branding/alpha/background.png b/browser/branding/alpha/background.png
new file mode 100644
index 000000000000..0a7e3088f4f0
Binary files /dev/null and b/browser/branding/alpha/background.png differ
diff --git a/browser/branding/alpha/bgstub.jpg b/browser/branding/alpha/bgstub.jpg
new file mode 100644
index 000000000000..3b78c9498c93
Binary files /dev/null and b/browser/branding/alpha/bgstub.jpg differ
diff --git a/browser/branding/alpha/bgstub_2x.jpg b/browser/branding/alpha/bgstub_2x.jpg
new file mode 100644
index 000000000000..c724d1803c26
Binary files /dev/null and b/browser/branding/alpha/bgstub_2x.jpg differ
diff --git a/browser/branding/alpha/branding.nsi b/browser/branding/alpha/branding.nsi
new file mode 100644
index 000000000000..b37853b77643
--- /dev/null
+++ b/browser/branding/alpha/branding.nsi
@@ -0,0 +1,64 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# NSIS branding defines for nightly builds.
+# The official release build branding.nsi is located in other-license/branding/firefox/
+# The unofficial build branding.nsi is located in browser/branding/unofficial/
+
+# BrandFullNameInternal is used for some registry and file system values
+# instead of BrandFullName and typically should not be modified.
+!define BrandFullNameInternal "Nightly"
+!define BrandFullName "Firefox Nightly"
+!define CompanyName "mozilla.org"
+!define URLInfoAbout "https://www.mozilla.org"
+!define HelpLink "https://support.mozilla.org"
+
+!define URLStubDownloadX86 "https://download.mozilla.org/?os=win&lang=${AB_CD}&product=firefox-nightly-…"
+!define URLStubDownloadAMD64 "https://download.mozilla.org/?os=win64&lang=${AB_CD}&product=firefox-nightl…"
+!define URLStubDownloadAArch64 "https://download.mozilla.org/?os=win64-aarch64&lang=${AB_CD}&product=firefo…"
+!define URLManualDownload "https://www.mozilla.org/${AB_CD}/firefox/installer-help/?channel=nightly&in…"
+!define URLSystemRequirements "https://www.mozilla.org/firefox/system-requirements/"
+!define Channel "nightly"
+
+# The installer's certificate name and issuer expected by the stub installer
+!define CertNameDownload "Mozilla Corporation"
+!define CertIssuerDownload "DigiCert SHA2 Assured ID Code Signing CA"
+
+# Dialog units are used so the UI displays correctly with the system's DPI
+# settings.
+!define PROFILE_CLEANUP_LABEL_TOP "35u"
+!define PROFILE_CLEANUP_LABEL_LEFT "0"
+!define PROFILE_CLEANUP_LABEL_WIDTH "100%"
+!define PROFILE_CLEANUP_LABEL_HEIGHT "80u"
+!define PROFILE_CLEANUP_LABEL_ALIGN "center"
+!define PROFILE_CLEANUP_CHECKBOX_LEFT "center"
+!define PROFILE_CLEANUP_CHECKBOX_WIDTH "100%"
+!define PROFILE_CLEANUP_BUTTON_LEFT "center"
+!define INSTALL_BLURB_TOP "137u"
+!define INSTALL_BLURB_WIDTH "60u"
+!define INSTALL_FOOTER_TOP "-48u"
+!define INSTALL_FOOTER_WIDTH "250u"
+!define INSTALL_INSTALLING_TOP "70u"
+!define INSTALL_INSTALLING_LEFT "0"
+!define INSTALL_INSTALLING_WIDTH "100%"
+!define INSTALL_PROGRESS_BAR_TOP "112u"
+!define INSTALL_PROGRESS_BAR_LEFT "20%"
+!define INSTALL_PROGRESS_BAR_WIDTH "60%"
+!define INSTALL_PROGRESS_BAR_HEIGHT "12u"
+
+!define PROFILE_CLEANUP_CHECKBOX_TOP_MARGIN "20u"
+!define PROFILE_CLEANUP_BUTTON_TOP_MARGIN "20u"
+!define PROFILE_CLEANUP_BUTTON_X_PADDING "40u"
+!define PROFILE_CLEANUP_BUTTON_Y_PADDING "4u"
+
+# Font settings that can be customized for each channel
+!define INSTALL_HEADER_FONT_SIZE 28
+!define INSTALL_HEADER_FONT_WEIGHT 400
+!define INSTALL_INSTALLING_FONT_SIZE 28
+!define INSTALL_INSTALLING_FONT_WEIGHT 400
+
+# UI Colors that can be customized for each channel
+!define COMMON_TEXT_COLOR 0xFFFFFF
+!define COMMON_BACKGROUND_COLOR 0x000000
+!define INSTALL_INSTALLING_TEXT_COLOR 0xFFFFFF
diff --git a/browser/branding/alpha/configure.sh b/browser/branding/alpha/configure.sh
new file mode 100644
index 000000000000..243091484f75
--- /dev/null
+++ b/browser/branding/alpha/configure.sh
@@ -0,0 +1,5 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+MOZ_APP_DISPLAYNAME="Tor Browser"
diff --git a/browser/branding/alpha/content/about-logo.png b/browser/branding/alpha/content/about-logo.png
new file mode 100644
index 000000000000..7d705be61dfd
Binary files /dev/null and b/browser/branding/alpha/content/about-logo.png differ
diff --git a/browser/branding/alpha/content/about-logo(a)2x.png b/browser/branding/alpha/content/about-logo(a)2x.png
new file mode 100644
index 000000000000..193c856f3e8c
Binary files /dev/null and b/browser/branding/alpha/content/about-logo(a)2x.png differ
diff --git a/browser/branding/alpha/content/about-wordmark.svg b/browser/branding/alpha/content/about-wordmark.svg
new file mode 100644
index 000000000000..6f71130b417d
--- /dev/null
+++ b/browser/branding/alpha/content/about-wordmark.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="270px" height="48px" viewBox="0 0 270 48">
+ <path fill="#fff" d="M75.5,11.8V7.9c0-2.2,1.2-3.5,3.1-3.5c1,0,1.8,0.3,3,0.9l1.8-3.5c-1.7-1-3.5-1.4-5.7-1.4
+ C73.2,0.3,70,2.8,70,8c0,2.3,0.2,3.7,0.2,3.7h-2.5v3.8H70V37h5.4V15.6h5.1l1.4-3.8H75.5z M92.3,11.2c-6.7,0-11,5.2-11,13.3
+ c0,8.1,4.3,13.2,11.1,13.2c6.8,0,11.2-5,11.2-13.2C103.6,16.5,99.5,11.2,92.3,11.2z M92.5,33.6c-3.3,0-5.1-2.1-5.1-9.5
+ c0-6.1,1.5-8.8,5-8.8c3.2,0,5.2,2.1,5.2,9.3C97.6,30.9,95.8,33.6,92.5,33.6z M43.7,11.1c-2.5,0-4.4,1.3-6.4,4c0-1.4-0.3-2.8-0.9-4
+ l-5,1.3c0.6,1.6,0.9,3.6,0.9,6.8V37h5.5V19.9c0.5-2,2.4-3.7,4.7-3.7c0.6,0,1,0.1,1.6,0.4l1.7-5.1C45,11.2,44.5,11.1,43.7,11.1z
+ M0,37h5.7V21.2h9.6v-4.6H5.7V7.2h11.8l0.7-4.7H0V37z M21.4,37h5.5V11.2l-5.5,1V37z M24.2,0.7c-2,0-3.6,1.6-3.6,3.7
+ c0,2,1.5,3.6,3.5,3.6c2,0,3.7-1.6,3.7-3.6C27.8,2.3,26.2,0.7,24.2,0.7z M125.2,11.8h-6.4c-0.7,1.1-3.3,6.1-4,7.7
+ c-1.2-2.3-3.4-6.3-4.6-8.2l-5.9,1.2l7.3,10.8L102.2,37h6.9c0.9-1.4,4.5-7.5,5.5-9.4c0.5,0.9,4.6,8,5.5,9.4h6.9l-9.2-13.8L125.2,11.8
+ z M62.7,13.8c-2.1-1.9-4.4-2.6-6.9-2.6c-3.2,0-5.7,1-7.7,3.4C45.9,17.1,45,20,45,24.5c0,8.1,4.5,13.2,11.6,13.2
+ c3.4,0,6.4-1.1,9.1-3.3L63.4,31c-1.9,1.6-3.9,2.5-6.3,2.5c-4.9,0-6.2-3.7-6.2-7.2v-0.4H66v-1.2C66,18.9,64.9,15.8,62.7,13.8z
+ M51,21.8c0-4.1,1.7-6.5,4.8-6.5c2.8,0,4.5,2.4,4.5,6.5H51z M198.5,14.3l-2.4-2.4c-1.2,0.8-2.2,1.1-3.5,1.1c-3,0-3.8-1.4-7.6-1.4
+ c-5.4,0-9.2,3.4-9.2,8.4c0,3.3,2.2,6.1,5.6,7.2c-3.4,1-4.5,2.2-4.5,4.3c0,2.2,1.8,3.6,4.7,3.6h3.8c2.5,0,3.9,0.2,4.9,0.9
+ c0.9,0.6,1.4,1.6,1.4,3c0,3.1-2.2,4.4-6,4.4c-2,0-3.8-0.5-5.1-1.2c-0.9-0.6-1.5-1.6-1.5-2.9c0-0.8,0.3-1.7,0.7-2.2l-4.1,0.4
+ c-0.3,1-0.5,1.7-0.5,2.6c0,3.5,3,6.4,10.8,6.4c6.1,0,9.9-2.5,9.9-7.9c0-2.1-0.8-3.9-2.7-5.3c-1.5-1.1-3.1-1.4-6-1.4h-4
+ c-1.3,0-2-0.5-2-1.2c0-0.8,1.1-1.7,4.5-2.9c1.8,0,3.4-0.3,4.7-1.1c2.3-1.4,3.7-4.1,3.7-6.8c0-1.6-0.5-3-1.5-4.3
+ c0.4,0.2,1.1,0.3,1.7,0.3C195.8,15.8,196.9,15.4,198.5,14.3z M185,24.8c-3.1,0-4.8-1.7-4.8-4.8c0-3.5,1.6-5.1,4.7-5.1
+ c3.3,0,4.6,1.5,4.6,4.9C189.5,23.1,188,24.8,185,24.8z M168.6,1.3c-1.7,0-3,1.4-3,3.1c0,1.7,1.4,3,3,3c1.7,0,3.1-1.3,3.1-3
+ C171.6,2.7,170.3,1.3,168.6,1.3z M245.7,34.5c-1.1,0-1.4-0.6-1.4-2.5V6.5c0-3.8-0.6-5.9-0.6-5.9l-3.9,0.8c0,0,0.6,1.9,0.6,5.1v26.4
+ c0,1.8,0.4,2.8,1.2,3.5c0.7,0.7,1.7,1,2.9,1c1,0,1.5-0.1,2.5-0.5l-0.8-2.5C246.2,34.4,245.8,34.5,245.7,34.5z M212.7,11.6
+ c-3.2,0-6.1,1.8-8.3,3.9c0,0,0.2-1.8,0.2-3.4V6.3c0-3.8-0.7-5.9-0.7-5.9L200,1.1c0,0,0.7,1.9,0.7,5.1V37h3.9V19.3
+ c2.1-2.7,4.9-4.2,7.2-4.2c1.3,0,2.3,0.4,2.9,1c0.7,0.7,0.9,1.8,0.9,3.7V37h3.8V19.1c0-1.8-0.1-2.6-0.4-3.6
+ C218.4,13.2,215.7,11.6,212.7,11.6z M265.4,12.1l-4.9,16.4c-0.6,2-1.6,5.2-1.6,5.2s-0.7-3.9-1.5-6.2l-5.1-16.2l-3.9,1.3l5.4,15.6
+ c0.8,2.5,2.2,7.4,2.5,9l1.6-0.3c-1.3,5.1-2.5,6.7-5.7,7.6l1.2,2.7c4.4-1,6.4-4.3,8-9.3l8.6-25.8H265.4z M234.9,15l1.2-2.9h-6.2
+ c0-3.3,0.5-7.2,0.5-7.2l-4.1,0.9c0,0-0.4,3.9-0.4,6.3h-3.2V15h3.2v17.1c0,2.5,0.7,4.1,2.4,5c0.9,0.4,1.9,0.7,3.3,0.7
+ c1.8,0,3.1-0.4,4.4-1l-0.6-2.5c-0.7,0.3-1.3,0.5-2.4,0.5c-2.4,0-3.2-0.9-3.2-3.7V15H234.9z M166.5,37h4.1V11.5l-4.1,0.6V37z
+ M156.8,21.3c0,5,0.4,10.5,0.4,10.5s-1.4-3.8-3.2-7.2L142.7,2.7h-4.8V37h4.2l-0.2-19.9c0-4.5-0.4-9.3-0.4-9.3s1.7,4.1,3.9,8.2l11,21
+ h4.3V2.7h-4L156.8,21.3z M128.3,12.9c-0.3-0.1-0.7-0.1-1-0.1v2.3h0.3v-1c0.3,0,0.7,1,0.7,1s0.2,0,0.4,0c-0.2-0.3-0.3-0.7-0.6-1
+ C128.8,14.1,128.9,13.1,128.3,12.9z M127.6,13.8v-0.7c0,0,0.7,0,0.7,0.3C128.3,13.9,127.8,13.9,127.6,13.8z M128,12
+ c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S129.1,12,128,12z M128,15.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5
+ S128.8,15.5,128,15.5z"/>
+</svg>
diff --git a/browser/branding/alpha/content/about.png b/browser/branding/alpha/content/about.png
new file mode 100644
index 000000000000..3b93625ddd70
Binary files /dev/null and b/browser/branding/alpha/content/about.png differ
diff --git a/browser/branding/alpha/content/aboutDialog.css b/browser/branding/alpha/content/aboutDialog.css
new file mode 100644
index 000000000000..293b5f493f3f
--- /dev/null
+++ b/browser/branding/alpha/content/aboutDialog.css
@@ -0,0 +1,49 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#aboutDialogContainer {
+ background-color: #20123a;
+ color: #fff;
+}
+
+#clientBox {
+ padding: 10px 0 15px;
+}
+
+#leftBox {
+ background-image: url("chrome://branding/content/about-logo.png");
+ background-repeat: no-repeat;
+ background-size: 192px auto;
+ background-position: center 20%;
+ /* min-width and min-height create room for the logo */
+ min-width: 210px;
+ min-height: 210px;
+ margin-top: 20px;
+ margin-inline-start: 30px;
+}
+
+@media (min-resolution: 2dppx) {
+ #leftBox {
+ background-image: url("chrome://branding/content/about-logo@2x.png");
+ }
+}
+
+.text-link {
+ color: #fff !important;
+ text-decoration: underline;
+}
+
+.text-link:-moz-focusring {
+ border-color: #fff;
+}
+
+#rightBox {
+ margin-inline: 30px;
+ padding-top: 64px;
+}
+
+#bottomBox {
+ background-color: hsla(235, 43%, 10%, .5);
+ padding: 15px 10px 15px;
+}
diff --git a/browser/branding/alpha/content/aboutlogins.svg b/browser/branding/alpha/content/aboutlogins.svg
new file mode 100644
index 000000000000..f4b6a3fc41b7
--- /dev/null
+++ b/browser/branding/alpha/content/aboutlogins.svg
@@ -0,0 +1,59 @@
+<svg xmlns="http://www.w3.org/2000/svg" height="80" width="460" viewBox="0 0 460 80">
+ <defs>
+ <linearGradient id="a" x1="57.63" y1="9.47" x2="21.37" y2="72.26" gradientUnits="userSpaceOnUse">
+ <stop offset="0" stop-color="#ff980e"/>
+ <stop offset=".11" stop-color="#ff851b"/>
+ <stop offset=".57" stop-color="#ff3750"/>
+ <stop offset=".8" stop-color="#f92261"/>
+ <stop offset="1" stop-color="#f5156c"/>
+ </linearGradient>
+ <linearGradient id="b" x1="57.31" y1="-.8" x2="27.68" y2="69.03" gradientUnits="userSpaceOnUse">
+ <stop offset="0" stop-color="#fff261" stop-opacity=".8"/>
+ <stop offset=".06" stop-color="#fff261" stop-opacity=".68"/>
+ <stop offset=".19" stop-color="#fff261" stop-opacity=".48"/>
+ <stop offset=".31" stop-color="#fff261" stop-opacity=".31"/>
+ <stop offset=".42" stop-color="#fff261" stop-opacity=".17"/>
+ <stop offset=".53" stop-color="#fff261" stop-opacity=".08"/>
+ <stop offset=".63" stop-color="#fff261" stop-opacity=".02"/>
+ <stop offset=".72" stop-color="#fff261" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="c" x1="71.71" y1="75.85" x2="71.71" y2="28.29" gradientUnits="userSpaceOnUse">
+ <stop offset="0" stop-color="#0090ed"/>
+ <stop offset=".5" stop-color="#9059ff"/>
+ <stop offset=".81" stop-color="#b833e1"/>
+ </linearGradient>
+ <linearGradient id="d" x1="17.89" y1="78.48" x2="48.5" y2="26.39" gradientUnits="userSpaceOnUse">
+ <stop offset=".02" stop-color="#0090ed"/>
+ <stop offset=".49" stop-color="#9059ff"/>
+ <stop offset="1" stop-color="#b833e1"/>
+ </linearGradient>
+ <linearGradient id="e" x1="21.87" y1="58.41" x2="4.02" y2="40.56" gradientUnits="userSpaceOnUse">
+ <stop offset=".14" stop-color="#592acb" stop-opacity="0"/>
+ <stop offset=".33" stop-color="#542bc8" stop-opacity=".03"/>
+ <stop offset=".53" stop-color="#462fbf" stop-opacity=".11"/>
+ <stop offset=".74" stop-color="#2f35b1" stop-opacity=".25"/>
+ <stop offset=".95" stop-color="#0f3d9c" stop-opacity=".44"/>
+ <stop offset="1" stop-color="#054096" stop-opacity=".5"/>
+ </linearGradient>
+ <linearGradient id="f" x1="75.86" y1="38.71" x2="66.87" y2="54.27" gradientUnits="userSpaceOnUse">
+ <stop offset="0" stop-color="#722291" stop-opacity=".5"/>
+ <stop offset=".5" stop-color="#b833e1" stop-opacity="0"/>
+ </linearGradient>
+ <linearGradient id="g" x1="56.84" y1="60.96" x2="46.4" y2="72.73" gradientUnits="userSpaceOnUse">
+ <stop offset="0" stop-color="#054096" stop-opacity=".5"/>
+ <stop offset=".03" stop-color="#0f3d9c" stop-opacity=".44"/>
+ <stop offset=".17" stop-color="#2f35b1" stop-opacity=".25"/>
+ <stop offset=".3" stop-color="#462fbf" stop-opacity=".11"/>
+ <stop offset=".43" stop-color="#542bc8" stop-opacity=".03"/>
+ <stop offset=".56" stop-color="#592acb" stop-opacity="0"/>
+ </linearGradient>
+ </defs>
+ <path d="M76.46 30.15A312.48 312.48 0 0 0 49.84 3.53a15.47 15.47 0 0 0-19.69 0A312.48 312.48 0 0 0 3.53 30.16a15.47 15.47 0 0 0 0 19.69 312.48 312.48 0 0 0 26.63 26.62A14.87 14.87 0 0 0 40 80a14.93 14.93 0 0 0 9.88-3.56c4.9-4.42 9.37-8.69 13.68-13.07a4.45 4.45 0 0 0-.34-6.11L50 44.93a15.18 15.18 0 0 0 5.08-12 15.4 15.4 0 0 0-14.4-14.64 15.2 15.2 0 0 0-11.36 4.16 15.28 15.28 0 0 0 .3 22.48l-4.78 4.33A3.86 3.86 0 0 0 30 55l5.29-4.8.14-.13a7.24 7.24 0 0 0 2.11-5.43A7.34 7.34 0 0 0 35 39.35a7.58 7.58 0 1 1 9.77 0 7.39 7.39 0 0 0-2.62 5.32 7.25 7.25 0 0 0 2.11 5.4l.09.09 11.1 10.4c-3.4 3.37-6.94 6.71-10.71 10.13a7.89 7.89 0 0 1-9.46 0 307.34 307.34 0 0 1-26-26 7.91 7.91 0 0 1 0-9.46 304.52 304.52 0 0 1 26-26 7.89 7.89 0 0 1 9.45 0 304.52 304.52 0 0 1 26 26 7.89 7.89 0 0 1 0 9.45c-1.33 1.5-2.66 3-4 4.37a3.85 3.85 0 1 0 5.67 5.22c1.32-1.43 2.68-2.93 4-4.47a15.47 15.47 0 0 0 .06-19.65z" fill="url(#a)"/>
+ <path d="M76.46 30.15A312.48 312.48 0 0 0 49.84 3.53a15.47 15.47 0 0 0-19.69 0A312.48 312.48 0 0 0 3.53 30.16a15.47 15.47 0 0 0 0 19.69 312.48 312.48 0 0 0 26.63 26.62A14.87 14.87 0 0 0 40 80a14.93 14.93 0 0 0 9.88-3.56c4.9-4.42 9.37-8.69 13.68-13.07a4.45 4.45 0 0 0-.34-6.11L50 44.93a15.18 15.18 0 0 0 5.08-12 15.4 15.4 0 0 0-14.4-14.64 15.2 15.2 0 0 0-11.36 4.16 15.28 15.28 0 0 0 .3 22.48l-4.78 4.33A3.86 3.86 0 0 0 30 55l5.29-4.8.14-.13a7.24 7.24 0 0 0 2.11-5.43A7.34 7.34 0 0 0 35 39.35a7.58 7.58 0 1 1 9.77 0 7.39 7.39 0 0 0-2.62 5.32 7.25 7.25 0 0 0 2.11 5.4l.09.09 11.1 10.4c-3.4 3.37-6.94 6.71-10.71 10.13a7.89 7.89 0 0 1-9.46 0 307.34 307.34 0 0 1-26-26 7.91 7.91 0 0 1 0-9.46 304.52 304.52 0 0 1 26-26 7.89 7.89 0 0 1 9.45 0 304.52 304.52 0 0 1 26 26 7.89 7.89 0 0 1 0 9.45c-1.33 1.5-2.66 3-4 4.37a3.85 3.85 0 1 0 5.67 5.22c1.32-1.43 2.68-2.93 4-4.47a15.47 15.47 0 0 0 .06-19.65z" fill="url(#b)"/>
+ <path d="M70.69 35.27a7.89 7.89 0 0 1 0 9.45c-1.33 1.5-2.66 3-4 4.37a3.85 3.85 0 1 0 5.67 5.22c1.32-1.43 2.68-2.93 4-4.47 4.82-5.33-5.67-14.57-5.67-14.57z" fill="url(#c)"/>
+ <path d="M55.45 60.56c-3.4 3.37-6.94 6.71-10.71 10.13a7.89 7.89 0 0 1-9.46 0 307.34 307.34 0 0 1-26-26 7.91 7.91 0 0 1 0-9.46l-1.75 2a12.89 12.89 0 0 0 .21 17.27 309.82 309.82 0 0 0 22.42 21.97A14.87 14.87 0 0 0 40 80a14.93 14.93 0 0 0 9.88-3.56c2.79-2.52 5.89-5.43 8.67-8.11a3.37 3.37 0 0 0 0-4.86z" fill="url(#d)"/>
+ <path d="M7.78 54.53c2.92 3.17 5.83 6.2 8.81 9.16l1.19-1.94c1-1.59 2-3.15 3.07-4.71-3.85-3.91-7.66-7.95-11.54-12.3a7.91 7.91 0 0 1 0-9.46l-1.75 2a12.89 12.89 0 0 0 .18 17.22z" fill="url(#e)" opacity=".9"/>
+ <path d="M70.69 35.27a7.89 7.89 0 0 1 0 9.45c-1.33 1.5-2.66 3-4 4.37a3.85 3.85 0 1 0 5.67 5.22c1.32-1.43 2.68-2.93 4-4.47 4.82-5.33-5.67-14.57-5.67-14.57z" fill="url(#f)"/>
+ <path d="M58.51 63.47l-3.06-2.91c-3.4 3.37-6.94 6.71-10.72 10.13a7.71 7.71 0 0 1-6.07 1.48v7.77c.44 0 .88.06 1.33.06a14.93 14.93 0 0 0 9.88-3.56c2.79-2.52 5.89-5.43 8.67-8.11a3.36 3.36 0 0 0-.03-4.86z" fill="url(#g)" opacity=".9"/>
+ <path d="M97 56.15h6.25v-13h14.44v-5.8h-14.48v-7.41h14.44v-5.89H97zm28.35-34.38a3.79 3.79 0 0 0-3.87 3.95 3.9 3.9 0 0 0 7.79 0 3.77 3.77 0 0 0-3.96-3.95zm-3.08 34.38h6.21V32.41h-6.21zm17-20.09v-3.65h-6v23.74h6V43.62c0-4 2-5.58 5.15-5.58a5.59 5.59 0 0 1 3.17.83l2.2-6a8.78 8.78 0 0 0-4-.92c-3 .05-5.38 1.29-6.52 4.11zm23.42-4.14a12.27 12.27 0 0 0-12.46 12.41c0 6.9 4.93 12.31 12.59 12.31a12.5 12.5 0 0 0 11-5.5l-5-2.9a6.5 6.5 0 0 1-5.9 3.17 6.61 6.61 0 0 1-6.83-5H175V44.1a11.84 11.84 0 0 0-12.31-12.18zm-6.43 9.72a6.61 6.61 0 0 1 6.43-4.57 6 6 0 0 1 6.25 4.57zm24.39-10.07v.84h-3.92v5.45h3.92v18.29h6V37.86h5.72v-5.45h-5.72v-1.15c0-3.6.49-4.22 4.71-4.22h1V21.5h-1.58c-7.71 0-10.13 2.38-10.13 10.07zm25.71.35A12.36 12.36 0 1 0 219 44.28a12.31 12.31 0 0 0-12.64-12.36zm0 19a6.64 6.64 0 1 1 6.52-6.64 6.53 6.53 0 0 1-6.48 6.6zM244 32.41h-7.13l-5 7-5-7h-7.22L228.06 44l-8.89 12.18h7.31l5.33-7.43 5.45 7.43h7.36L235.55 44zm18.89-8.36h-3.7v32.1h20.25v-3.56h-16.55zm31 7.87a12.36 12.36 0 1 0 12.37 12.3
6 12.2 12.2 0 0 0-12.38-12.36zm0 21.29a8.61 8.61 0 0 1-8.67-8.93 8.7 8.7 0 1 1 17.39 0 8.65 8.65 0 0 1-8.73 8.93zm28.35 0a8.88 8.88 0 0 1-8.89-9 8.77 8.77 0 0 1 8.76-9 8.4 8.4 0 0 1 8 5.28l3.3-1.45a12 12 0 0 0-11.23-7.22 12.36 12.36 0 1 0 .05 24.72 11.88 11.88 0 0 0 11.31-7.48l-3.34-1.41a8.5 8.5 0 0 1-7.97 5.6zm37.06-20.8h-4.53l-12.59 13.41V21.5h-3.57v34.65h3.57V50l5.06-5.36 8.27 11.56h4.36l-10-13.8zm30.16 18.69l-7.09-18.69H379l-7.26 18.82-6-18.82H362l7.79 23.74h3.52l7.31-18.82 7.31 18.82h3.25l8.24-23.74h-3.75zm16-28.85a2.86 2.86 0 1 0 2.86 2.86 2.79 2.79 0 0 0-2.88-2.86zm-1.81 33.9h3.66V32.41h-3.66zm19-13.72c-3.7-.74-6.56-1.23-6.56-3.69 0-2.2 1.5-3.78 5.15-3.78a7.65 7.65 0 0 1 6.51 3.16l3-2a11.52 11.52 0 0 0-9.51-4.22c-5.64 0-8.85 3.21-8.85 6.9 0 4.75 4.36 5.85 8.45 6.64 3.48.71 6.74 1.24 6.74 3.87 0 2.38-1.94 4.14-5.64 4.14a8.79 8.79 0 0 1-7.66-3.87l-3.12 2.11c2.11 3 5.5 5 10.7 5 6.2 0 9.37-3.65 9.37-7.39-.04-4.93-4.53-6.07-8.62-6.87zM459.76 44a11.72 11.72 0 0 0-12.1-12.1 12.2 12.
2 0 0 0-12.42 12.45c0 7 4.93 12.27 12.55 12.27a12.21 12.21 0 0 0 11-6l-3.08-1.8a8.5 8.5 0 0 1-8 4.57c-5 0-8.5-3.21-9-7.74h21zm-20.91-1.54a8.84 8.84 0 0 1 8.81-7.35 8 8 0 0 1 8.41 7.35z" fill="#20123a"/>
+</svg>
diff --git a/browser/branding/alpha/content/firefox-wordmark.svg b/browser/branding/alpha/content/firefox-wordmark.svg
new file mode 100644
index 000000000000..65270a3cd9a9
--- /dev/null
+++ b/browser/branding/alpha/content/firefox-wordmark.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="172" height="42"><path fill="context-fill #20123a" d="M.19 2.82h25.72v7H7.57v9.43h18.34v6.9H7.57v15.14H.19zM34.65.13a4.14 4.14 0 0 1 4.27 4.33 4.12 4.12 0 0 1-4.32 4.32 4.09 4.09 0 0 1-4.27-4.22A4.27 4.27 0 0 1 34.65.13zM31 12.83h7.27v28.46H31zm28.35 7.91a5.89 5.89 0 0 0-3.53-1.27c-3 0-4.64 1.9-4.64 6.06v15.76H44V12.83h6.9v4.11a6.79 6.79 0 0 1 6.8-4.37A8.69 8.69 0 0 1 62.53 14zm3 6.48c0-8.17 6.06-15 14.65-15s14.59 6.06 14.59 14.49v3H69.48c.79 3.58 3.58 6 7.85 6a7.62 7.62 0 0 0 7.06-4.21l6.06 3.63c-3 4.43-7.27 6.75-13.33 6.75-9.22-.01-14.75-6.18-14.75-14.66zM69.59 24h15c-.79-3.63-3.74-5.63-7.59-5.63A7.31 7.31 0 0 0 69.59 24zM93.4 12.83h5.11v-1.42c0-7.75 3.27-11 10.44-11h2.53v6.31h-2.06c-3.37 0-4.11 1.16-4.11 4.69v1.42h6.17v6.54h-6v21.92h-7V19.37H93.4zm19.45 14.23a14.56 14.56 0 0 1 14.85-14.81 14.81 14.81 0 1 1 0 29.62c-8.85 0-14.85-6.49-14.85-14.81zm22.65 0a7.8 7.8 0 1 0-15.59 0 7.8 7.8 0 1 0 15.59 0zm16.86-.32l-10.27-13.91h8.53l6.06 8.7
5 6.22-8.75h8.38l-10.43 13.86 11 14.6h-8.49L156.53 32l-6.59 9.28h-8.48z"/></svg>
\ No newline at end of file
diff --git a/browser/branding/alpha/content/horizontal-lockup.svg b/browser/branding/alpha/content/horizontal-lockup.svg
new file mode 100644
index 000000000000..ca00c08f449b
--- /dev/null
+++ b/browser/branding/alpha/content/horizontal-lockup.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1646.4 381.8"><style>.st0{fill:#363959}</style><path class="st0" d="M996 168.9h-21.8L951 209.4l-23.1-40.5h-22.7l34.2 52.2-38.6 58.3h21.8l27.5-46.8 27.1 46.8h23.3l-38.4-59.2 33.9-51.3zM530 279.5h19.3V168.9H530v110.6zm63-87.3l-1.9-23.3h-16.5v110.5H594v-57c0-17.2 12.6-36.3 26.4-36.3 3.3 0 6.5.4 9.7 1.3l3.6-18.9c-3.6-.8-7.2-1.3-10.9-1.3-13.4 0-23.7 8.4-29.6 24.9l-.2.1zm-156.3 87.2h19.9v-63.6h47.2v-15.7h-47.2v-49.3h54.5l2.3-15.9h-76.8l.1 144.5zm102.8-151.6c-8 0-13.4 5.7-13.4 13.2 0 7.3 5.5 13 13.4 13 8.2 0 13.6-5.7 13.6-13 .1-7.5-5.4-13.2-13.6-13.2zm312.7 39.5c-31.5 0-49.5 22.8-49.5 57 0 35 17.8 57.7 49.3 57.7 31.3 0 49.3-23.7 49.3-57.9 0-35.1-17.6-56.9-49.1-56.8zm-.2 99.1c-18.5 0-28.5-13.4-28.5-42.2 0-28.9 10.3-41.5 28.7-41.5 18.2 0 28.3 12.6 28.3 41.3 0 29-10.1 42.4-28.5 42.4zm-78.2-105.2c0-10.7 4.2-18.6 16.4-18.6 6.7 0 13.2 1.5 19.3 4.2l6.1-14c-8.8-3.8-15.9-5.7-26.4-5.7-22.5 0-34.6 14.1-34.6 32.6v9.2h-19.7v14.8h19.7v95.
7h19.3v-95.7h24.8l2.1-14.9H774l-.2-7.6zm-92 6c-28.5 0-45.9 23.7-45.9 58.1 0 35 18 56.6 48.9 56.6 15.3 0 27.7-5.2 38.6-13.8l-8.4-11.5c-9.7 6.7-17.8 9.6-28.7 9.6-15.9 0-27.9-9.9-29.8-35.4H727c.2-2.5.4-6.1.4-9.9-.1-33.7-15.8-53.7-45.6-53.7zm26.5 49.3h-51.9c1.5-24.5 11.1-33.9 25.8-33.9 17.4 0 26 11.1 26 32.7l.1 1.2z"/><g id="Layer_1-2_1_"><g id="Layer_2-2_1_"><g id="Firefox"><linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-15667.935" y1="9459.303" x2="-15565.798" y2="9459.303" gradientTransform="matrix(.76 .03 .05 -1.12 11733.87 11198.95)"><stop offset="0" stop-color="#0083ff"/><stop offset=".1" stop-color="#0092f8"/><stop offset=".31" stop-color="#00abeb"/><stop offset=".52" stop-color="#00bee1"/><stop offset=".75" stop-color="#00c8dc"/><stop offset="1" stop-color="#00ccda"/></linearGradient><path d="M298.8 35.5c-9.3 10.8-13.6 35.2-4.2 59.9s23.9 19.3 32.9 44.5c11.9 33.2 6.4 77.8 6.4 77.8s14.3 41.4 24.2-2.6c22-82.5-59.3-159.2-59.3-179.6z" fill="url(#SVGID_1_)"/><radialG
radient id="_Path__2_" cx="-7705.698" cy="9049.584" r="306.995" gradientTransform="matrix(1.23 0 0 -1.22 9720.16 11130.11)" gradientUnits="userSpaceOnUse"><stop offset=".02" stop-color="#005fe7"/><stop offset=".18" stop-color="#0042b4"/><stop offset=".32" stop-color="#002989"/><stop offset=".4" stop-color="#002079"/><stop offset=".47" stop-color="#131d78"/><stop offset=".66" stop-color="#3b1676"/><stop offset=".75" stop-color="#4a1475"/></radialGradient><path id="_Path__1_" d="M185 377.5c95.2 0 172.2-77.5 172.2-173s-77.1-173-172.1-173S13 108.8 13 204.4c-.2 95.7 77 173.1 172 173.1z" fill="url(#_Path__2_)"/><linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="208.796" y1="783.075" x2="134.518" y2="1026.051" gradientTransform="matrix(1 0 0 -1 1 1066)"><stop offset="0" stop-color="#000f43" stop-opacity=".4"/><stop offset=".48" stop-color="#001962" stop-opacity=".17"/><stop offset="1" stop-color="#002079" stop-opacity="0"/></linearGradient><path d="M314.5 311.8c-3.7 2.6-7.6 5
-11.7 7.1 5.4-7.9 10.3-16 14.9-24.4 3.7-4.1 7-8 9.8-12.3 1.3-2.1 2.8-4.7 4.4-7.7 9.7-17.4 20.3-45.6 20.6-74.6v-2.2c.1-7.3-.7-14.5-2.2-21.6.1.6.1 1.1.2 1.7-.1-.4-.2-.9-.2-1.3.1.8.3 1.6.4 2.3 2 16.8.6 33.1-6.5 45.2-.1.2-.2.3-.3.5 3.7-18.3 4.9-38.6.8-58.8 0 0-1.6-9.8-13.7-39.7-7-17.2-19.3-31.3-30.3-41.6-9.6-11.9-18.3-19.8-23.1-24.9-10-10.5-14.2-18.5-15.9-23.6-1.5-.7-20.6-19.3-22.1-20-8.3 12.9-34.6 53.4-22.1 91.2 5.7 17.1 20 34.9 34.9 44.9.7.8 8.9 9.7 12.8 29.9 4.1 20.9 1.9 37.2-6.4 61.3-9.8 21.1-34.9 42.1-58.5 44.2-50.3 4.6-68.7-25.3-68.7-25.3 18 7.2 37.9 5.7 49.9-1.8 12.2-7.5 19.6-13.1 25.5-10.9 5.9 2.2 10.6-4.2 6.4-10.8-6.7-10.2-18.8-15.5-30.8-13.4-12.2 2-23.4 11.6-39.3 2.3-1-.6-2-1.3-3-2-1.1-.7 3.4 1.1 2.4.3-3.1-1.7-8.6-5.4-10-6.7-.2-.2 2.4.8 2.2.6-14.9-12.3-13.1-20.6-12.6-25.8.4-4.2 3.1-9.5 7.7-11.7 2.2 1.2 3.6 2.1 3.6 2.1s-.9-1.9-1.5-2.9c.2-.1.3-.1.5-.1 1.8.9 5.8 3.1 7.9 4.5 2.7 1.9 3.6 3.7 3.6 3.7s.7-.4.2-2.1c-.2-.7-1-2.9-3.7-5.1h.2c1.6.9 3.2 2 4.6 3.2.8-2.8 2.1-5.7 1.8-10.9-.2-3
.7-.1-4.6-.7-6-.6-1.2.3-1.7 1.3-.4-.2-1-.5-2-.9-2.9v-.1c1.3-4.4 26.5-15.7 28.3-17 3-2.1 5.5-4.9 7.4-8.1 1.4-2.2 2.5-5.4 2.7-10.1.1-3.4-1.5-5.7-27-8.4-7-.7-11.1-5.7-13.4-10.4-.4-1-.9-1.9-1.3-2.8-.4-1.1-.7-2.2-1-3.3 4.2-12 11.2-22.1 21.5-29.8.6-.5-2.2.1-1.7-.4.7-.6 4.9-2.3 5.7-2.7 1-.5-4.2-2.7-8.8-2.1-4.7.5-5.7 1.1-8.2 2.1 1-1 4.3-2.4 3.6-2.4-5 .8-11.3 3.7-16.7 7 0-.6.1-1.2.3-1.7-2.5 1.1-8.6 5.4-10.4 9 .1-.7.1-1.4.1-2.1-1.9 1.6-3.6 3.4-5.1 5.4l-.1.1c-14.5-5.8-27.2-6.2-38-3.6-2.4-2.4-3.5-.6-8.9-12.4-.4-.7.3.7 0 0-.9-2.3.5 3.1 0 0-9 7.1-20.9 15.2-26.6 20.9-.1.2 6.7-1.9 0 0-2.3.7-2.2 2-2.5 14.5-.1.9 0 2-.1 2.9-4.6 5.8-7.7 10.7-8.8 13.3-5.9 10.2-12.4 26-18.7 51 2.8-6.8 6.1-13.3 10-19.5-5.2 13.3-10.3 34.2-11.3 66.3 1.3-6.6 2.9-13.2 4.9-19.7-1.2 26.7 3.4 53.3 13.5 78 3.6 8.9 9.6 22.3 19.8 37 32 33.7 77.2 54.7 127.2 54.7 52.1 0 99-22.8 131.2-59.1z" fill="url(#SVGID_2_)"/><linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="209.796" y1="783.075" x2="135.518" y2="1026.051" gradient
Transform="matrix(1 0 0 -1 0 1066)"><stop offset="0" stop-color="#000f43" stop-opacity=".4"/><stop offset=".48" stop-color="#001962" stop-opacity=".17"/><stop offset="1" stop-color="#002079" stop-opacity="0"/></linearGradient><path d="M314.5 311.8c-3.7 2.6-7.6 5-11.7 7.1 5.4-7.9 10.3-16 14.9-24.4 3.7-4.1 7-8 9.8-12.3 1.3-2.1 2.8-4.7 4.4-7.7 9.7-17.4 20.3-45.6 20.6-74.6v-2.2c.1-7.3-.7-14.5-2.2-21.6.1.6.1 1.1.2 1.7-.1-.4-.2-.9-.2-1.3.1.8.3 1.6.4 2.3 2 16.8.6 33.1-6.5 45.2-.1.2-.2.3-.3.5 3.7-18.3 4.9-38.6.8-58.8 0 0-1.6-9.8-13.7-39.7-7-17.2-19.3-31.3-30.3-41.6-9.6-11.9-18.3-19.8-23.1-24.9-10-10.5-14.2-18.5-15.9-23.6-1.5-.7-20.6-19.3-22.1-20-8.3 12.9-34.6 53.4-22.1 91.2 5.7 17.1 20 34.9 34.9 44.9.7.8 8.9 9.7 12.8 29.9 4.1 20.9 1.9 37.2-6.4 61.3-9.8 21.1-34.9 42.1-58.5 44.2-50.3 4.6-68.7-25.3-68.7-25.3 18 7.2 37.9 5.7 49.9-1.8 12.2-7.5 19.6-13.1 25.5-10.9 5.9 2.2 10.6-4.2 6.4-10.8-6.7-10.2-18.8-15.5-30.8-13.4-12.2 2-23.4 11.6-39.3 2.3-1-.6-2-1.3-3-2-1.1-.7 3.4 1.1 2.4.3-3.1-1.7-8.6-5.4-1
0-6.7-.2-.2 2.4.8 2.2.6-14.9-12.3-13.1-20.6-12.6-25.8.4-4.2 3.1-9.5 7.7-11.7 2.2 1.2 3.6 2.1 3.6 2.1s-.9-1.9-1.5-2.9c.2-.1.3-.1.5-.1 1.8.9 5.8 3.1 7.9 4.5 2.7 1.9 3.6 3.7 3.6 3.7s.7-.4.2-2.1c-.2-.7-1-2.9-3.7-5.1h.2c1.6.9 3.2 2 4.6 3.2.8-2.8 2.1-5.7 1.8-10.9-.2-3.7-.1-4.6-.7-6-.6-1.2.3-1.7 1.3-.4-.2-1-.5-2-.9-2.9v-.1c1.3-4.4 26.5-15.7 28.3-17 3-2.1 5.5-4.9 7.4-8.1 1.4-2.2 2.5-5.4 2.7-10.1.1-3.4-1.5-5.7-27-8.4-7-.7-11.1-5.7-13.4-10.4-.4-1-.9-1.9-1.3-2.8-.4-1.1-.7-2.2-1-3.3 4.2-12 11.2-22.1 21.5-29.8.6-.5-2.2.1-1.7-.4.7-.6 4.9-2.3 5.7-2.7 1-.5-4.2-2.7-8.8-2.1-4.7.5-5.7 1.1-8.2 2.1 1-1 4.3-2.4 3.6-2.4-5 .8-11.3 3.7-16.7 7 0-.6.1-1.2.3-1.7-2.5 1.1-8.6 5.4-10.4 9 .1-.7.1-1.4.1-2.1-1.9 1.6-3.6 3.4-5.1 5.4l-.1.1c-14.5-5.8-27.2-6.2-38-3.6-2.4-2.4-3.5-.6-8.9-12.4-.4-.7.3.7 0 0-.9-2.3.5 3.1 0 0-9 7.1-20.9 15.2-26.6 20.9-.1.2 6.7-1.9 0 0-2.3.7-2.2 2-2.5 14.5-.1.9 0 2-.1 2.9-4.6 5.8-7.7 10.7-8.8 13.3-5.9 10.2-12.4 26-18.7 51 2.8-6.8 6.1-13.3 10-19.5-5.2 13.3-10.3 34.2-11.3 66.3 1.3-6.6 2.9-13.2
4.9-19.7-1.2 26.7 3.4 53.3 13.5 78 3.6 8.9 9.6 22.3 19.8 37 32 33.7 77.2 54.7 127.2 54.7 52.1 0 99-22.8 131.2-59.1z" fill="url(#SVGID_3_)"/><linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="-8672.42" y1="7683.359" x2="-8717.133" y2="7686.809" gradientTransform="matrix(1.22 .12 .12 -1.22 10013.36 10723.12)"><stop offset="0" stop-color="#812cc9"/><stop offset="1" stop-color="#005fe7"/></linearGradient><path d="M275.9 336.3c63.2-7.3 91.2-72.4 55.2-73.7-32.4-1.1-85.1 77.1-55.2 73.7z" fill="url(#SVGID_4_)"/><linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="-8704.525" y1="7740.822" x2="-8662.642" y2="7784.325" gradientTransform="matrix(1.22 .12 .12 -1.22 10013.36 10723.12)"><stop offset=".05" stop-color="#005fe7"/><stop offset=".18" stop-color="#065de6"/><stop offset=".35" stop-color="#1856e1"/><stop offset=".56" stop-color="#354adb"/><stop offset=".78" stop-color="#5d3ad1"/><stop offset=".95" stop-color="#812cc9"/></linearGradient><path d="M335.7 249.3c43.5-
25.3 32.1-80 32.1-80s-16.8 19.5-28.2 50.6c-11.2 30.8-30.1 44.7-3.9 29.4z" fill="url(#SVGID_5_)"/><linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="-8783.499" y1="7643.23" x2="-8693.914" y2="7643.02" gradientTransform="matrix(1.22 .12 .12 -1.22 10013.36 10723.12)"><stop offset="0" stop-color="#002079"/><stop offset=".99" stop-color="#a238ff"/></linearGradient><path d="M197.7 368.6c60.6 19.3 112.7-28.4 80.6-44.4-29.2-14.3-109.4 35.3-80.6 44.4z" fill="url(#SVGID_6_)"/><radialGradient id="SVGID_7_" cx="249.892" cy="916.931" r="308.051" fx="304.575" fy="866.824" gradientTransform="matrix(1 0 0 -1 0 1066)" gradientUnits="userSpaceOnUse"><stop offset=".2" stop-color="#00fdff"/><stop offset=".26" stop-color="#0af1ff"/><stop offset=".37" stop-color="#23d2ff"/><stop offset=".52" stop-color="#4da0ff"/><stop offset=".69" stop-color="#855bff"/><stop offset=".77" stop-color="#a238ff"/><stop offset=".81" stop-color="#a738fd"/><stop offset=".86" stop-color="#b539f9"/><stop offset=".9
" stop-color="#cd39f1"/><stop offset=".96" stop-color="#ee3ae6"/><stop offset=".98" stop-color="#ff3be0"/></radialGradient><path d="M247.7 8.3l.2-.2c0 .1-.1.1-.2.2zm92.5 264.2c1.5-2.1 3.5-8.7 5.2-11.7 10.7-17.3 10.8-31 10.8-31.4 6.5-32.3 5.9-45.5 1.9-69.8-3.2-19.6-17.2-47.8-29.3-61.3-12.5-14-3.7-9.4-15.8-19.6-10.6-11.8-20.9-23.4-26.5-28.1C246 16.8 247 9.6 247.7 8.4c-.1.1-.3.4-.6.6-.5-1.9-.8-3.5-.8-3.5s-22.1 22.1-26.8 59c-3 24.1 6 49.2 19 65.2 6.8 8.3 14.5 15.9 22.9 22.5 9.9 14.2 15.3 31.6 15.3 50.4 0 47-38.2 85.2-85.2 85.2-6.4 0-12.8-.7-19.1-2.1-22.2-4.2-35-15.4-41.4-23.1-3.7-4.4-5.2-7.5-5.2-7.5 19.9 7.1 41.9 5.6 55.3-1.8 13.5-7.5 21.6-13 28.3-10.8 6.5 2.2 11.7-4.1 7.1-10.7-4.6-6.5-16.5-15.9-34.1-13.3-13.5 2-25.9 11.5-43.5 2.3-1.1-.6-2.2-1.2-3.3-1.9-1.2-.7 3.8 1 2.6.3-3.4-1.7-9.5-5.3-11.1-6.6-.3-.2 2.7.8 2.4.6-16.5-12.2-14.5-20.4-14-25.6.4-4.1 3.4-9.4 8.5-11.6 2.4 1.2 4 2.1 4 2.1s-1-1.9-1.6-2.9c.2-.1.4-.1.6-.1 2 .9 6.4 3.1 8.8 4.5 3 1.9 4 3.6 4 3.6s.8-.4.2-2.1c-.2-.7-1.1-2.9-4.1-5.1
h.2c1.8.9 3.5 2 5.1 3.2.8-2.8 2.4-5.6 2-10.8-.2-3.6-.1-4.6-.8-6-.6-1.2.4-1.7 1.5-.4-.2-1-.5-1.9-.9-2.8v-.1c1.4-4.3 29.3-15.6 31.3-16.9 3.3-2.1 6.1-4.8 8.2-8 1.6-2.2 2.7-5.3 3-10 .1-2.1-.6-3.8-8-5.4-4.4-1-11.3-1.9-21.9-2.9-7.7-.7-12.3-5.7-14.8-10.3-.5-1-1-1.9-1.4-2.8-.5-1-.8-2.1-1.1-3.2 4.6-12.1 12.9-22.4 23.8-29.5.6-.5-2.5.1-1.9-.4.7-.6 5.5-2.3 6.4-2.7 1.1-.5-4.7-2.7-9.8-2.1-5.2.5-6.3 1.1-9 2.1 1.2-1 4.8-2.4 3.9-2.4-5.6.8-12.5 3.7-18.5 7 0-.6.1-1.1.4-1.7-2.8 1.1-9.6 5.3-11.5 8.9.1-.7.1-1.4.1-2.1-2.1 1.6-4 3.3-5.7 5.3l-.1.1c-16-5.8-30.1-6.2-42.1-3.6-2.6-2.4-6.8-5.9-12.8-17.6-.4-.7-.6 1.5-.9.8-2.3-5.4-3.7-14.1-3.5-20.2 0 0-4.8 2.2-8.7 11.3-.7 1.6-1.2 2.5-1.7 3.4-.2.3.5-3 .4-2.8-.7 1.2-2.5 2.8-3.2 4.9-.5 1.6-1.3 2.4-1.8 4.4l-.1.2c0-.6.1-2.4 0-2-1.9 3.7-3.5 7.6-4.8 11.5-2.1 7-4.6 16.5-5 28.9-.1.9 0 2-.1 2.8-5 5.8-8.5 10.6-9.8 13.2-6.5 10.1-13.7 25.8-20.7 50.6 3.1-6.8 6.8-13.3 11.1-19.4-6 13-11.6 33.7-12.7 65.6 1.4-6.6 3.2-13.1 5.4-19.5-1 21.3 1.5 47.6 14.9 77.4 8 17.5 26.4 53 71.2 80.7
0 0 15.3 11.4 41.5 19.9 1.9.7 3.9 1.4 5.9 2.1-.6-.3-1.2-.5-1.8-.8 17.5 5.2 35.6 7.9 53.9 7.9 68 .1 88-27.2 88-27.2l-.2.1c1-.9 1.9-1.8 2.8-2.8-10.7 10.1-35.2 10.8-44.3 10.1 15.6-4.6 25.9-8.5 45.8-16.1 2.3-.9 4.7-1.9 7.2-3l.8-.4c.5-.2 1-.4 1.5-.7 9.7-4.6 18.9-10.3 27.3-17.1 20.1-16 24.4-31.6 26.7-41.9-.3 1-1.3 3.3-2 4.8-5.2 11.1-16.6 17.8-29.1 23.7 5.9-7.8 11.4-15.9 16.4-24.2 4-4.1 5.2-10.4 8.3-14.6z" fill="url(#SVGID_7_)"/><linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-7655.339" y1="9137.516" x2="-7683.31" y2="8823.109" gradientTransform="matrix(1.23 0 0 -1.22 9720.16 11130.11)"><stop offset="0" stop-color="#00ec00"/><stop offset=".1" stop-color="#00e244"/><stop offset=".22" stop-color="#00d694"/><stop offset=".31" stop-color="#00cfc7"/><stop offset=".35" stop-color="#00ccda"/><stop offset=".42" stop-color="#0bc2dd" stop-opacity=".92"/><stop offset=".57" stop-color="#29a7e4" stop-opacity=".72"/><stop offset=".77" stop-color="#597df0" stop-opacity=".4"/><stop offset
="1" stop-color="#9448ff" stop-opacity="0"/></linearGradient><path d="M315.8 310.8c8.2-9 15.5-19.3 21.1-31 14.3-30.1 36.5-80.2 19-132.4-13.8-41.3-32.7-63.9-56.7-86-39-35.8-49.9-51.8-49.9-61.4 0 0-45 50.2-25.5 102.6s59.5 50.4 86 105.1c31.1 64.3-25.2 134.5-71.8 154.1 2.9-.6 103.6-23.4 108.9-81-.2 1-2.4 17-31.1 30z" fill="url(#SVGID_8_)"/><linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="-8889.5" y1="7812.05" x2="-8836.55" y2="7812.05" gradientTransform="matrix(1.22 .12 .12 -1.22 10013.36 10723.12)"><stop offset="0" stop-color="#005fe7"/><stop offset=".46" stop-color="#0071f3" stop-opacity=".51"/><stop offset=".83" stop-color="#007efc" stop-opacity=".14"/><stop offset="1" stop-color="#0083ff" stop-opacity="0"/></linearGradient><path d="M185.3 123.9c.2-3.4-1.6-5.7-29.8-8.3-11.6-1.1-16-11.8-17.4-16.3-4.1 10.7-5.8 21.9-4.9 35.5.6 8.9 6.6 18.4 9.5 24.1 0 0 .6-.8.9-1.1 5.4-5.6 27.9-14.1 30-15.3 2.4-1.6 11.3-8.1 11.7-18.6z" fill="url(#SVGID_9_)"/><radialGradient id="SVGID_10_"
cx="-8884.848" cy="7827.773" r="64.396" gradientTransform="matrix(1.22 .12 .12 -1.22 10013.36 10723.12)" gradientUnits="userSpaceOnUse"><stop offset=".63" stop-color="#ffe302" stop-opacity="0"/><stop offset=".67" stop-color="#ffe302" stop-opacity=".05"/><stop offset=".75" stop-color="#ffe302" stop-opacity=".19"/><stop offset=".86" stop-color="#ffe302" stop-opacity=".4"/><stop offset=".99" stop-color="#ffe302" stop-opacity=".7"/></radialGradient><path d="M185.3 123.9c.2-3.4-1.6-5.7-29.8-8.3-11.6-1.1-16-11.8-17.4-16.3-4.1 10.7-5.8 21.9-4.9 35.5.6 8.9 6.6 18.4 9.5 24.1 0 0 .6-.8.9-1.1 5.4-5.6 27.9-14.1 30-15.3 2.4-1.6 11.3-8.1 11.7-18.6z" opacity=".5" fill="url(#SVGID_10_)"/><linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="85.362" y1="2192.822" x2="39.644" y2="2290.535" gradientTransform="matrix(.99 .1 .1 -.99 -239.75 2284.79)"><stop offset=".19" stop-color="#4a1475" stop-opacity=".5"/><stop offset=".62" stop-color="#2277ac" stop-opacity=".23"/><stop offset=".94" stop
-color="#00ccda" stop-opacity="0"/></linearGradient><path d="M61.4 60.7c-.4-.7-.6 1.5-.9.8-2.3-5.4-3.7-14-3.4-20.2 0 0-4.8 2.2-8.7 11.3-.7 1.6-1.2 2.5-1.7 3.4-.2.3.5-3 .4-2.8-.7 1.2-2.5 2.8-3.2 4.8-.6 1.6-1.3 2.5-1.8 4.6-.2.6.2-2.5 0-2.1-9.2 17.8-10.9 44.7-10 43.5 19.6-20.9 42-25.9 42-25.9-2.4-1.7-7.6-6.8-12.7-17.4z" fill="url(#SVGID_11_)"/><linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="-209.367" y1="527.653" x2="-172.852" y2="486.18" gradientTransform="matrix(.99 .1 .1 -.99 239.39 724.37)"><stop offset=".01" stop-color="#002079" stop-opacity=".5"/><stop offset="1" stop-color="#0083ff" stop-opacity="0"/></linearGradient><path d="M135.7 279.4c-27.1-11.6-57.8-27.8-56.6-64.8 1.6-48.7 45.5-39.1 45.5-39.1-1.7.4-6.1 3.6-7.7 6.9-1.7 4.2-4.7 13.7 4.5 23.6 14.4 15.6-29.6 37 38.3 77.4 1.6 1-16-.5-24-4z" fill="url(#SVGID_12_)"/><linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="-139.213" y1="457.058" x2="-139.193" y2="477.788" gradientTransform="matrix(.99 .1
.1 -.99 239.39 724.37)"><stop offset="0" stop-color="#4a1475" stop-opacity=".9"/><stop offset=".18" stop-color="#6720a2" stop-opacity=".6"/><stop offset=".38" stop-color="#812acb" stop-opacity=".34"/><stop offset=".57" stop-color="#9332e8" stop-opacity=".15"/><stop offset=".76" stop-color="#9e36f9" stop-opacity=".04"/><stop offset=".93" stop-color="#a238ff" stop-opacity="0"/></linearGradient><path d="M126.1 255.1c19.2 6.7 41.5 5.5 54.9-1.9 9-5 20.4-13 27.5-11-6.1-2.4-10.8-3.6-16.3-3.8-1 0-2.1 0-3.1-.1-2 0-4.1.1-6.1.3-3.5.3-7.3 2.5-10.8 2.1-.2 0 3.4-1.5 3.1-1.4-1.8.4-3.8.5-6 .7-1.3.2-2.5.3-3.8.4-40 3.4-73.7-21.7-73.7-21.7-2.9 9.8 12.9 29 34.3 36.4z" opacity=".5" fill="url(#SVGID_13_)"/><linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="240.706" y1="1051.958" x2="359.301" y2="786.765" gradientTransform="matrix(1 0 0 -1 0 1066)"><stop offset="0" stop-color="#00ec00" stop-opacity="0"/><stop offset=".28" stop-color="#00dc6d" stop-opacity=".5"/><stop offset=".5" stop-color=
"#00d1bb" stop-opacity=".86"/><stop offset=".6" stop-color="#00ccda"/><stop offset=".68" stop-color="#04c9db"/><stop offset=".75" stop-color="#0fc1df"/><stop offset=".83" stop-color="#23b2e6"/><stop offset=".9" stop-color="#3e9ef0"/><stop offset=".98" stop-color="#6184fc"/><stop offset=".99" stop-color="#6680fe"/></linearGradient><path d="M315.7 311.1c40.4-39.7 60.9-87.9 52.2-142 0 0 3.5 27.7-9.6 56.1 6.3-27.7 7-62.1-9.7-97.8-22.3-47.6-59-72.6-73-83.1-21.2-15.8-30-31.9-30.2-35.3-6.3 13-25.5 57.5-2.1 95.8 22 35.9 56.6 46.6 80.8 79.5 44.7 60.8-8.4 126.8-8.4 126.8z" fill="url(#SVGID_14_)"/><linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="264.16" y1="899.455" x2="207.985" y2="748.621" gradientTransform="matrix(1 0 0 -1 0 1066)"><stop offset="0" stop-color="#0083ff"/><stop offset=".04" stop-color="#0083ff" stop-opacity=".92"/><stop offset=".14" stop-color="#0083ff" stop-opacity=".71"/><stop offset=".26" stop-color="#0083ff" stop-opacity=".52"/><stop offset=".37" stop-col
or="#0083ff" stop-opacity=".36"/><stop offset=".49" stop-color="#0083ff" stop-opacity=".23"/><stop offset=".61" stop-color="#0083ff" stop-opacity=".13"/><stop offset=".73" stop-color="#0083ff" stop-opacity=".06"/><stop offset=".86" stop-color="#0083ff" stop-opacity=".01"/><stop offset="1" stop-color="#0083ff" stop-opacity="0"/></linearGradient><path d="M309.9 207.8c-14.1-29.2-31.7-41.9-48.4-55.7 1.9 2.7 2.4 3.7 3.5 5.4 14.7 15.6 36.3 53.8 20.6 101.7-29.6 90.2-147.9 47.7-160.3 35.8 5 52.2 92.3 77.1 149.2 43.3 32.4-30.6 58.6-82.7 35.4-130.5z" fill="url(#SVGID_15_)"/></g></g></g><path class="st0" d="M1132.9 279.4l-58.5-122.3c1 11.9 2.7 29.5 2.7 56.2v66h-18.6v-144h25.9l59.1 122.5c-.4-3.3-2.7-26.3-2.7-43.9v-78.6h18.6v144h-26.5v.1zM1213 141c0 7.3-5.4 13-13.6 13-7.9 0-13.4-5.6-13.4-13 0-7.5 5.4-13.2 13.4-13.2 8.1 0 13.6 5.7 13.6 13.2zm-23 28.3h19.2v110.1H1190zm105.3 8.4c13 5.9 19.4 15 19.4 27.8 0 21.7-15.7 37.4-42 37.4-5 0-9.4-.6-14-2.1-3.1 2.3-5.4 6.3-5.4 10.2 0 5 3.1 9 14.4 9h17.6c22.6 0
37.6 13 37.6 30.5 0 21.3-17.6 33.4-51.6 33.4-35.9 0-47.2-11.1-47.2-33.4h17.3c0 12.5 5.6 18.4 29.9 18.4 23.8 0 32.2-6.1 32.2-17.1 0-10.5-8.4-15.7-22.2-15.7H1264c-19.6 0-28.4-9.8-28.4-20.9 0-7.1 4.2-14.2 12.1-19.4-12.7-6.7-18.6-16.3-18.6-30.5 0-22.6 18.2-38.5 42.4-38.5 27.4.6 37.4-4 50.4-9.8l5.6 17.3c-9.2 2.9-19.6 3.4-32.2 3.4zm-46.6 27.5c0 14.6 8.2 24.9 23.2 24.9s23.2-9.2 23.2-25.1c0-16.1-7.9-24.5-23.6-24.5-14.8.1-22.8 10.3-22.8 24.7zm172.2-4.8v79h-19.2v-76.3c0-16.5-7.1-21.3-17.6-21.3-11.9 0-20.5 7.7-27.8 19.2v78.4h-19.2V125.2l19.2-2.1v61.4c7.9-10.9 18.8-17.8 32.6-17.8 20.1.1 32 13 32 33.7zm59.4 81.5c-18.6 0-29.7-10.9-29.7-31.3v-66.5h-19.2v-14.8h19.2v-24.9l19.2-2.3v27.2h26.1l-2.1 14.8h-24v65.6c0 11.1 3.6 16.3 13.2 16.3 4.8 0 9.2-1.5 14.6-4.8l7.3 13.2c-7.3 5-15.2 7.5-24.6 7.5zm59.3-15.8c2.7 0 5-.4 7.1-1.3l5 13.4c-5.2 2.5-10.7 3.8-16.3 3.8-14 0-21.9-8.4-21.9-24.2V125l19.2-2.3v134.6c0 5.8 1.9 8.8 6.9 8.8zm18.9 57.9l-2.1-15c22.4-3.8 28.6-12.3 34.9-29.5h-6.5l-37-110.1h20.5l29.5 96.1 28.8
-96.1h19.9l-36.8 110.8c-7.8 23.3-20.7 40.4-51.2 43.8z"/></svg>
\ No newline at end of file
diff --git a/browser/branding/alpha/content/identity-icons-brand.svg b/browser/branding/alpha/content/identity-icons-brand.svg
new file mode 100644
index 000000000000..9bfa43842e2d
--- /dev/null
+++ b/browser/branding/alpha/content/identity-icons-brand.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="-17 -17 546 546" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="3.27248873%" x2="50%" y2="97.1599968%" id="linearGradient-1">
+ <stop stop-color="#00FEFF" offset="0%"></stop>
+ <stop stop-color="#0BE67D" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,25 C152.50841,25 255.874399,127.979815 255.874399,255.011855 C255.874399,382.043895 152.50841,485.02371 25,485.02371 L25,25 Z" id="path-2"></path>
+ <filter x="-20.8%" y="-8.7%" width="134.7%" height="117.4%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.0872579578 0 0 0 0 0.00490370801 0 0 0 0 0.234933036 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Alpha" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g>
+ <circle id="background" fill-opacity="0.9" fill="#030004" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384044,2.842170
94e-14 256,2.84217094e-14 C114.60886,2.84217094e-14 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.437200, 255.011855) scale(-1, 1) translate(-140.437200, -255.011855) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/alpha/content/jar.mn b/browser/branding/alpha/content/jar.mn
new file mode 100644
index 000000000000..de166fe3636f
--- /dev/null
+++ b/browser/branding/alpha/content/jar.mn
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+browser.jar:
+% content branding %content/branding/ contentaccessible=yes
+ content/branding/about.png
+ content/branding/about-logo.png
+ content/branding/about-logo(a)2x.png
+ content/branding/about-wordmark.svg
+ content/branding/firefox-wordmark.svg
+ content/branding/aboutlogins.svg
+ content/branding/icon16.png (../default16.png)
+ content/branding/icon32.png (../default32.png)
+ content/branding/icon48.png (../default48.png)
+ content/branding/icon64.png (../default64.png)
+ content/branding/icon128.png (../default128.png)
+ content/branding/icon256.png (../default256.png)
+ content/branding/icon512.png (../default512.png)
+ content/branding/identity-icons-brand.svg
+ content/branding/aboutDialog.css
+ content/branding/horizontal-lockup.svg
diff --git a/browser/branding/alpha/content/moz.build b/browser/branding/alpha/content/moz.build
new file mode 100644
index 000000000000..eb4454d28f88
--- /dev/null
+++ b/browser/branding/alpha/content/moz.build
@@ -0,0 +1,7 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file
diff --git a/browser/branding/alpha/default128.png b/browser/branding/alpha/default128.png
new file mode 100644
index 000000000000..fbc27b91d118
Binary files /dev/null and b/browser/branding/alpha/default128.png differ
diff --git a/browser/branding/alpha/default16.png b/browser/branding/alpha/default16.png
new file mode 100644
index 000000000000..3a4e1b679b27
Binary files /dev/null and b/browser/branding/alpha/default16.png differ
diff --git a/browser/branding/alpha/default256.png b/browser/branding/alpha/default256.png
new file mode 100644
index 000000000000..844f1a0323ee
Binary files /dev/null and b/browser/branding/alpha/default256.png differ
diff --git a/browser/branding/alpha/default32.png b/browser/branding/alpha/default32.png
new file mode 100644
index 000000000000..679f5f9db43f
Binary files /dev/null and b/browser/branding/alpha/default32.png differ
diff --git a/browser/branding/alpha/default48.png b/browser/branding/alpha/default48.png
new file mode 100644
index 000000000000..85f0253d88ca
Binary files /dev/null and b/browser/branding/alpha/default48.png differ
diff --git a/browser/branding/alpha/default512.png b/browser/branding/alpha/default512.png
new file mode 100644
index 000000000000..b12f58b88bb4
Binary files /dev/null and b/browser/branding/alpha/default512.png differ
diff --git a/browser/branding/alpha/default64.png b/browser/branding/alpha/default64.png
new file mode 100644
index 000000000000..c48f1c5bf4ee
Binary files /dev/null and b/browser/branding/alpha/default64.png differ
diff --git a/browser/branding/alpha/disk.icns b/browser/branding/alpha/disk.icns
new file mode 100644
index 000000000000..866d93a43bc8
Binary files /dev/null and b/browser/branding/alpha/disk.icns differ
diff --git a/browser/branding/alpha/document.icns b/browser/branding/alpha/document.icns
new file mode 100644
index 000000000000..7fbfffe2228e
Binary files /dev/null and b/browser/branding/alpha/document.icns differ
diff --git a/browser/branding/alpha/document.ico b/browser/branding/alpha/document.ico
new file mode 100644
index 000000000000..45aa08bb1658
Binary files /dev/null and b/browser/branding/alpha/document.ico differ
diff --git a/browser/branding/alpha/dsstore b/browser/branding/alpha/dsstore
new file mode 100644
index 000000000000..6b82c923a662
Binary files /dev/null and b/browser/branding/alpha/dsstore differ
diff --git a/browser/branding/alpha/firefox.VisualElementsManifest.xml b/browser/branding/alpha/firefox.VisualElementsManifest.xml
new file mode 100644
index 000000000000..a71938708aff
--- /dev/null
+++ b/browser/branding/alpha/firefox.VisualElementsManifest.xml
@@ -0,0 +1,12 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ - You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
+ <VisualElements
+ ShowNameOnSquare150x150Logo='on'
+ Square150x150Logo='browser\VisualElements\VisualElements_150.png'
+ Square70x70Logo='browser\VisualElements\VisualElements_70.png'
+ ForegroundText='light'
+ BackgroundColor='#1c191d'/>
+</Application>
diff --git a/browser/branding/alpha/firefox.icns b/browser/branding/alpha/firefox.icns
new file mode 100644
index 000000000000..baad294f8497
Binary files /dev/null and b/browser/branding/alpha/firefox.icns differ
diff --git a/browser/branding/alpha/firefox.ico b/browser/branding/alpha/firefox.ico
new file mode 100644
index 000000000000..e25514996d37
Binary files /dev/null and b/browser/branding/alpha/firefox.ico differ
diff --git a/browser/branding/alpha/firefox.svg b/browser/branding/alpha/firefox.svg
new file mode 100644
index 000000000000..250c7adea0d6
--- /dev/null
+++ b/browser/branding/alpha/firefox.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="3.27248873%" x2="50%" y2="97.1599968%" id="linearGradient-1">
+ <stop stop-color="#00FEFF" offset="0%"></stop>
+ <stop stop-color="#0BE67D" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,25 C152.50841,25 255.874399,127.979815 255.874399,255.011855 C255.874399,382.043895 152.50841,485.02371 25,485.02371 L25,25 Z" id="path-2"></path>
+ <filter x="-20.8%" y="-8.7%" width="134.7%" height="117.4%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.0872579578 0 0 0 0 0.00490370801 0 0 0 0 0.234933036 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Alpha" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g>
+ <circle id="background" fill-opacity="0.9" fill="#030004" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384044,2.842170
94e-14 256,2.84217094e-14 C114.60886,2.84217094e-14 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.437200, 255.011855) scale(-1, 1) translate(-140.437200, -255.011855) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/alpha/firefox64.ico b/browser/branding/alpha/firefox64.ico
new file mode 100644
index 000000000000..e25514996d37
Binary files /dev/null and b/browser/branding/alpha/firefox64.ico differ
diff --git a/browser/branding/alpha/locales/en-US/brand.dtd b/browser/branding/alpha/locales/en-US/brand.dtd
new file mode 100644
index 000000000000..0b15c9978e01
--- /dev/null
+++ b/browser/branding/alpha/locales/en-US/brand.dtd
@@ -0,0 +1,11 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY brandShorterName "Tor Browser">
+<!ENTITY brandShortName "Tor Browser">
+<!ENTITY brandFullName "Tor Browser">
+<!-- LOCALIZATION NOTE (brandProductName):
+ This brand name can be used in messages where the product name needs to
+ remain unchanged across different versions (Nightly, Beta, etc.). -->
+<!ENTITY brandProductName "Tor Browser">
diff --git a/browser/branding/alpha/locales/en-US/brand.ftl b/browser/branding/alpha/locales/en-US/brand.ftl
new file mode 100644
index 000000000000..22d5f837b093
--- /dev/null
+++ b/browser/branding/alpha/locales/en-US/brand.ftl
@@ -0,0 +1,22 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+## Firefox Brand
+##
+## Firefox must be treated as a brand, and kept in English.
+## It cannot be:
+## - Declined to adapt to grammatical case.
+## - Transliterated.
+## - Translated.
+##
+## Reference: https://www.mozilla.org/styleguide/communications/translation/
+
+-brand-shorter-name = Nightly
+-brand-short-name = Nightly
+-brand-full-name = Firefox Nightly
+# This brand name can be used in messages where the product name needs to
+# remain unchanged across different versions (Nightly, Beta, etc.).
+-brand-product-name = Firefox
+-vendor-short-name = Mozilla
+trademarkInfo = Firefox and the Firefox logos are trademarks of the Mozilla Foundation.
diff --git a/browser/branding/alpha/locales/en-US/brand.properties b/browser/branding/alpha/locales/en-US/brand.properties
new file mode 100644
index 000000000000..e96b063b9034
--- /dev/null
+++ b/browser/branding/alpha/locales/en-US/brand.properties
@@ -0,0 +1,14 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+brandShorterName=Tor Browser
+brandShortName=Tor Browser
+brandFullName=Tor Browser
+# LOCALIZATION NOTE(brandProductName):
+# This brand name can be used in messages where the product name needs to
+# remain unchanged across different versions (Nightly, Beta, etc.).
+brandProductName=Tor Browser
+vendorShortName=Tor Project
+
+syncBrandShortName=Sync
diff --git a/browser/branding/alpha/locales/jar.mn b/browser/branding/alpha/locales/jar.mn
new file mode 100644
index 000000000000..d13c2110148f
--- /dev/null
+++ b/browser/branding/alpha/locales/jar.mn
@@ -0,0 +1,12 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[localization] @AB_CD@.jar:
+ branding (%*.ftl)
+
+@AB_CD@.jar:
+% locale branding @AB_CD@ %locale/branding/
+ locale/branding/brand.dtd (%brand.dtd)
+ locale/branding/brand.properties (%brand.properties)
diff --git a/browser/branding/alpha/locales/moz.build b/browser/branding/alpha/locales/moz.build
new file mode 100644
index 000000000000..eb4454d28f88
--- /dev/null
+++ b/browser/branding/alpha/locales/moz.build
@@ -0,0 +1,7 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file
diff --git a/browser/branding/alpha/moz.build b/browser/branding/alpha/moz.build
new file mode 100644
index 000000000000..9045cee11bb8
--- /dev/null
+++ b/browser/branding/alpha/moz.build
@@ -0,0 +1,13 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['content', 'locales']
+
+DIST_SUBDIR = 'browser'
+export('DIST_SUBDIR')
+
+include('../branding-common.mozbuild')
+FirefoxBranding()
diff --git a/browser/branding/alpha/newtab.ico b/browser/branding/alpha/newtab.ico
new file mode 100644
index 000000000000..a9b37c08c6e1
Binary files /dev/null and b/browser/branding/alpha/newtab.ico differ
diff --git a/browser/branding/alpha/newwindow.ico b/browser/branding/alpha/newwindow.ico
new file mode 100644
index 000000000000..55372077102c
Binary files /dev/null and b/browser/branding/alpha/newwindow.ico differ
diff --git a/browser/branding/alpha/pbmode.ico b/browser/branding/alpha/pbmode.ico
new file mode 100644
index 000000000000..47677c13fba6
Binary files /dev/null and b/browser/branding/alpha/pbmode.ico differ
diff --git a/browser/branding/alpha/pref/firefox-branding.js b/browser/branding/alpha/pref/firefox-branding.js
new file mode 100644
index 000000000000..792134ab45d7
--- /dev/null
+++ b/browser/branding/alpha/pref/firefox-branding.js
@@ -0,0 +1,34 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// This file contains branding-specific prefs.
+
+pref("startup.homepage_override_url", "https://www.mozilla.org/projects/firefox/%VERSION%/whatsnew/?oldversion=%OL…");
+pref("startup.homepage_welcome_url", "https://www.mozilla.org/projects/firefox/%VERSION%/firstrun/");
+pref("startup.homepage_welcome_url.additional", "");
+// The time interval between checks for a new version (in seconds)
+pref("app.update.interval", 7200); // 2 hours
+// Give the user x seconds to react before showing the big UI. default=12 hours
+pref("app.update.promptWaitTime", 43200);
+// URL user can browse to manually if for some reason all update installation
+// attempts fail.
+pref("app.update.url.manual", "https://www.mozilla.org/%LOCALE%/firefox/nightly/");
+// A default value for the "More information about this update" link
+// supplied in the "An update is available" page of the update wizard.
+pref("app.update.url.details", "https://www.mozilla.org/%LOCALE%/firefox/nightly/notes/");
+
+pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/releasenotes/?utm_source…");
+
+// The number of days a binary is permitted to be old
+// without checking for an update. This assumes that
+// app.update.checkInstallTime is true.
+pref("app.update.checkInstallTime.days", 2);
+
+// Give the user x seconds to reboot before showing a badge on the hamburger
+// button. default=immediately
+pref("app.update.badgeWaitTime", 0);
+
+// Number of usages of the web console.
+// If this is less than 5, then pasting code into the web console is disabled
+pref("devtools.selfxss.count", 5);
diff --git a/browser/branding/alpha/stubinstaller/bgstub.jpg b/browser/branding/alpha/stubinstaller/bgstub.jpg
new file mode 100644
index 000000000000..891036a4fe35
Binary files /dev/null and b/browser/branding/alpha/stubinstaller/bgstub.jpg differ
diff --git a/browser/branding/alpha/stubinstaller/installing_page.css b/browser/branding/alpha/stubinstaller/installing_page.css
new file mode 100644
index 000000000000..8044838c79f5
--- /dev/null
+++ b/browser/branding/alpha/stubinstaller/installing_page.css
@@ -0,0 +1,61 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+body {
+ color: white;
+}
+
+#label,
+#progress_background,
+#blurb {
+ text-align: center;
+ margin: 20px 30px;
+}
+
+#label {
+ font-size: 40px;
+ margin-top: 100px;
+ margin-bottom: 20px;
+}
+
+#progress_background {
+ margin: 0 auto;
+ width: 60%;
+ height: 24px;
+ background-color: white;
+}
+
+body.high-contrast #progress_background {
+ outline: solid;
+}
+
+#progress_bar {
+ margin: 0;
+ width: 0%;
+ height: 100%;
+ background-color: #00AAFF;
+}
+
+/* In high contrast mode, fill the entire progress bar with its border. */
+body.high-contrast #progress_bar {
+ /* This border should be the height of progress_background. */
+ border-top: 24px solid;
+ box-sizing: border-box;
+}
+
+/* This layout doesn't want the header or content text. */
+#header, #content {
+ display: none;
+}
+
+#blurb {
+ font-size: 20px;
+}
+
+/* The footer goes in the bottom right corner. */
+#footer {
+ position: fixed;
+ right: 50px;
+ bottom: 59px;
+}
diff --git a/browser/branding/alpha/stubinstaller/profile_cleanup_page.css b/browser/branding/alpha/stubinstaller/profile_cleanup_page.css
new file mode 100644
index 000000000000..2d9c3ad1891e
--- /dev/null
+++ b/browser/branding/alpha/stubinstaller/profile_cleanup_page.css
@@ -0,0 +1,42 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+body {
+ color: white;
+}
+
+#header,
+#refreshCheckboxContainer,
+#refreshButtonContainer {
+ text-align: center;
+ margin-left: 40px;
+ margin-right: 40px;
+ margin-bottom: 30px;
+}
+
+#header {
+ font-size: 35px;
+ font-weight: normal;
+ margin-top: 45px;
+}
+
+#refreshCheckbox {
+ vertical-align: middle;
+}
+
+#checkboxLabel {
+ font-size: 13px;
+}
+
+#refreshButton {
+ padding: 8px 40px;
+ font-size: 15px;
+}
+
+/* The footer goes in the bottom right corner. */
+#footer {
+ position: fixed;
+ right: 50px;
+ bottom: 59px;
+}
diff --git a/browser/branding/alpha/wizHeader.bmp b/browser/branding/alpha/wizHeader.bmp
new file mode 100644
index 000000000000..a754d2db1e11
Binary files /dev/null and b/browser/branding/alpha/wizHeader.bmp differ
diff --git a/browser/branding/alpha/wizHeaderRTL.bmp b/browser/branding/alpha/wizHeaderRTL.bmp
new file mode 100644
index 000000000000..c944205be23f
Binary files /dev/null and b/browser/branding/alpha/wizHeaderRTL.bmp differ
diff --git a/browser/branding/alpha/wizWatermark.bmp b/browser/branding/alpha/wizWatermark.bmp
new file mode 100644
index 000000000000..9e523b5fa196
Binary files /dev/null and b/browser/branding/alpha/wizWatermark.bmp differ
diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild
index 908553b8b95c..95cebf735920 100644
--- a/browser/branding/branding-common.mozbuild
+++ b/browser/branding/branding-common.mozbuild
@@ -27,7 +27,9 @@ def FirefoxBranding():
FINAL_TARGET_FILES.chrome.icons.default += [
'default128.png',
'default16.png',
+ 'default256.png',
'default32.png',
'default48.png',
+ 'default512.png',
'default64.png',
]
diff --git a/browser/branding/nightly/VisualElements_150.png b/browser/branding/nightly/VisualElements_150.png
index fa2191146174..a29d863d1766 100644
Binary files a/browser/branding/nightly/VisualElements_150.png and b/browser/branding/nightly/VisualElements_150.png differ
diff --git a/browser/branding/nightly/VisualElements_70.png b/browser/branding/nightly/VisualElements_70.png
index cefb95b1c3d2..ccd90b8cf748 100644
Binary files a/browser/branding/nightly/VisualElements_70.png and b/browser/branding/nightly/VisualElements_70.png differ
diff --git a/browser/branding/nightly/configure.sh b/browser/branding/nightly/configure.sh
index 7c7f2cf8c820..243091484f75 100644
--- a/browser/branding/nightly/configure.sh
+++ b/browser/branding/nightly/configure.sh
@@ -2,5 +2,4 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-MOZ_APP_DISPLAYNAME="Firefox Nightly"
-MOZ_MACBUNDLE_ID=nightly
+MOZ_APP_DISPLAYNAME="Tor Browser"
diff --git a/browser/branding/nightly/content/identity-icons-brand.svg b/browser/branding/nightly/content/identity-icons-brand.svg
index fc8b1a356768..fc1d9c997aeb 100644
--- a/browser/branding/nightly/content/identity-icons-brand.svg
+++ b/browser/branding/nightly/content/identity-icons-brand.svg
@@ -1,3 +1,29 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path fill="context-fill" fill-opacity="context-fill-opacity" d="M15.424 5.366A4.384 4.384 0 0 0 13.817 3.4a7.893 7.893 0 0 1 .811 2.353v.017c-.9-2.185-2.441-3.066-3.7-4.984l-.189-.3c-.035-.059-.063-.112-.088-.161a1.341 1.341 0 0 1-.119-.306.022.022 0 0 0-.013-.019.026.026 0 0 0-.019 0h-.006a5.629 5.629 0 0 0-2.755 4.308c.094-.006.187-.014.282-.014a4.069 4.069 0 0 1 3.51 1.983A2.838 2.838 0 0 0 9.6 5.824a3.2 3.2 0 0 1-1.885 6.013 3.651 3.651 0 0 1-1.042-.2c-.078-.028-.157-.059-.235-.093-.046-.02-.091-.04-.135-.062A3.282 3.282 0 0 1 4.415 8.95s.369-1.334 2.647-1.334a1.91 1.91 0 0 0 .964-.857 12.756 12.756 0 0 1-1.941-1.118c-.29-.277-.428-.411-.551-.511-.066-.054-.128-.1-.207-.152a3.481 3.481 0 0 1-.022-1.894 5.915 5.915 0 0 0-1.929 1.442A4.108 4.108 0 0 1 3.1 2.584a1.561 1.561 0 0 0-.267.138 5.767 5.767 0 0 0-.783.649 6.9 6.9 0 0 0-.748.868 6.446 6.446 0 0 0-1.08 2.348c0 .009-.076.325-.131.715l-.025.182c-.019.117-.033.245-.048.444v.023c-.005.076-.011.16-.016.258v.04A7.884 7.884 0 0
0 8.011 16a7.941 7.941 0 0 0 7.9-6.44l.036-.3a7.724 7.724 0 0 0-.523-3.894z" />
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="-17 -17 546 546" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="25.1281738%" y1="5.44281006%" x2="54.3792725%" y2="100%" id="linearGradient-1">
+ <stop stop-color="#00E1E8" offset="0%"></stop>
+ <stop stop-color="#3500FF" offset="100%"></stop>
+ </linearGradient>
+ <linearGradient x1="25.1281738%" y1="5.44281006%" x2="54.3792725%" y2="100%" id="linearGradient-2">
+ <stop stop-color="#00E1E8" offset="0%"></stop>
+ <stop stop-color="#3500FF" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,25 C152.50841,25 255.874399,127.979815 255.874399,255.011855 C255.874399,382.043895 152.50841,485.02371 25,485.02371 L25,25 Z" id="path-3"></path>
+ <filter x="-20.8%" y="-8.7%" width="134.7%" height="117.4%" filterUnits="objectBoundingBox" id="filter-4">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.0872579578 0 0 0 0 0.00490370801 0 0 0 0 0.234933036 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Nightly" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g>
+ <circle id="background" fill-opacity="0.9" fill="#030004" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384044,2.842170
94e-14 256,2.84217094e-14 C114.60886,2.84217094e-14 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.437200, 255.011855) scale(-1, 1) translate(-140.437200, -255.011855) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
+ <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-3"></use>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/nightly/content/jar.mn b/browser/branding/nightly/content/jar.mn
index 68b2bfd8e571..de166fe3636f 100644
--- a/browser/branding/nightly/content/jar.mn
+++ b/browser/branding/nightly/content/jar.mn
@@ -15,6 +15,8 @@ browser.jar:
content/branding/icon48.png (../default48.png)
content/branding/icon64.png (../default64.png)
content/branding/icon128.png (../default128.png)
+ content/branding/icon256.png (../default256.png)
+ content/branding/icon512.png (../default512.png)
content/branding/identity-icons-brand.svg
content/branding/aboutDialog.css
content/branding/horizontal-lockup.svg
diff --git a/browser/branding/nightly/default128.png b/browser/branding/nightly/default128.png
index 8fe085c56ffc..12998ed018a7 100644
Binary files a/browser/branding/nightly/default128.png and b/browser/branding/nightly/default128.png differ
diff --git a/browser/branding/nightly/default16.png b/browser/branding/nightly/default16.png
index e01114ba2bb5..737ade977a6b 100644
Binary files a/browser/branding/nightly/default16.png and b/browser/branding/nightly/default16.png differ
diff --git a/browser/branding/nightly/default22.png b/browser/branding/nightly/default22.png
deleted file mode 100644
index 0527dfd563cb..000000000000
Binary files a/browser/branding/nightly/default22.png and /dev/null differ
diff --git a/browser/branding/nightly/default24.png b/browser/branding/nightly/default24.png
deleted file mode 100644
index 019d020fde05..000000000000
Binary files a/browser/branding/nightly/default24.png and /dev/null differ
diff --git a/browser/branding/nightly/default256.png b/browser/branding/nightly/default256.png
index d0d8bd01cc1a..f619aecbc6e3 100644
Binary files a/browser/branding/nightly/default256.png and b/browser/branding/nightly/default256.png differ
diff --git a/browser/branding/nightly/default32.png b/browser/branding/nightly/default32.png
index c0986eae9367..499bc8ff7fc9 100644
Binary files a/browser/branding/nightly/default32.png and b/browser/branding/nightly/default32.png differ
diff --git a/browser/branding/nightly/default48.png b/browser/branding/nightly/default48.png
index 1980ffb35c80..fc99e3829d5f 100644
Binary files a/browser/branding/nightly/default48.png and b/browser/branding/nightly/default48.png differ
diff --git a/browser/branding/nightly/default512.png b/browser/branding/nightly/default512.png
new file mode 100644
index 000000000000..4ff5f7fa3495
Binary files /dev/null and b/browser/branding/nightly/default512.png differ
diff --git a/browser/branding/nightly/default64.png b/browser/branding/nightly/default64.png
index 551c98d44431..5a84a5384942 100644
Binary files a/browser/branding/nightly/default64.png and b/browser/branding/nightly/default64.png differ
diff --git a/browser/branding/nightly/document.icns b/browser/branding/nightly/document.icns
index 8cb0f7f9dc32..4acf7a5d1a4b 100644
Binary files a/browser/branding/nightly/document.icns and b/browser/branding/nightly/document.icns differ
diff --git a/browser/branding/nightly/document.ico b/browser/branding/nightly/document.ico
index e5d0d840a7b4..ecb8e3dc6c73 100644
Binary files a/browser/branding/nightly/document.ico and b/browser/branding/nightly/document.ico differ
diff --git a/browser/branding/nightly/firefox.VisualElementsManifest.xml b/browser/branding/nightly/firefox.VisualElementsManifest.xml
index 85e09dd7a910..a71938708aff 100644
--- a/browser/branding/nightly/firefox.VisualElementsManifest.xml
+++ b/browser/branding/nightly/firefox.VisualElementsManifest.xml
@@ -8,5 +8,5 @@
Square150x150Logo='browser\VisualElements\VisualElements_150.png'
Square70x70Logo='browser\VisualElements\VisualElements_70.png'
ForegroundText='light'
- BackgroundColor='#20123a'/>
+ BackgroundColor='#1c191d'/>
</Application>
diff --git a/browser/branding/nightly/firefox.icns b/browser/branding/nightly/firefox.icns
index 643ddd4f5812..4b0adc0f5af7 100644
Binary files a/browser/branding/nightly/firefox.icns and b/browser/branding/nightly/firefox.icns differ
diff --git a/browser/branding/nightly/firefox.ico b/browser/branding/nightly/firefox.ico
index 240b64298f76..eb28c93ab25f 100644
Binary files a/browser/branding/nightly/firefox.ico and b/browser/branding/nightly/firefox.ico differ
diff --git a/browser/branding/nightly/firefox.svg b/browser/branding/nightly/firefox.svg
new file mode 100644
index 000000000000..c11b568b8553
--- /dev/null
+++ b/browser/branding/nightly/firefox.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="25.1281738%" y1="5.44281006%" x2="54.3792725%" y2="100%" id="linearGradient-1">
+ <stop stop-color="#00E1E8" offset="0%"></stop>
+ <stop stop-color="#3500FF" offset="100%"></stop>
+ </linearGradient>
+ <linearGradient x1="25.1281738%" y1="5.44281006%" x2="54.3792725%" y2="100%" id="linearGradient-2">
+ <stop stop-color="#00E1E8" offset="0%"></stop>
+ <stop stop-color="#3500FF" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,25 C152.50841,25 255.874399,127.979815 255.874399,255.011855 C255.874399,382.043895 152.50841,485.02371 25,485.02371 L25,25 Z" id="path-3"></path>
+ <filter x="-20.8%" y="-8.7%" width="134.7%" height="117.4%" filterUnits="objectBoundingBox" id="filter-4">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.0872579578 0 0 0 0 0.00490370801 0 0 0 0 0.234933036 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Nightly" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g>
+ <circle id="background" fill-opacity="0.9" fill="#030004" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384044,2.842170
94e-14 256,2.84217094e-14 C114.60886,2.84217094e-14 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.437200, 255.011855) scale(-1, 1) translate(-140.437200, -255.011855) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
+ <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-3"></use>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/nightly/firefox64.ico b/browser/branding/nightly/firefox64.ico
index 1f50606af6a1..eb28c93ab25f 100644
Binary files a/browser/branding/nightly/firefox64.ico and b/browser/branding/nightly/firefox64.ico differ
diff --git a/browser/branding/nightly/locales/en-US/brand.dtd b/browser/branding/nightly/locales/en-US/brand.dtd
index c56df31338b9..0b15c9978e01 100644
--- a/browser/branding/nightly/locales/en-US/brand.dtd
+++ b/browser/branding/nightly/locales/en-US/brand.dtd
@@ -2,10 +2,10 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShorterName "Nightly">
-<!ENTITY brandShortName "Nightly">
-<!ENTITY brandFullName "Firefox Nightly">
+<!ENTITY brandShorterName "Tor Browser">
+<!ENTITY brandShortName "Tor Browser">
+<!ENTITY brandFullName "Tor Browser">
<!-- LOCALIZATION NOTE (brandProductName):
This brand name can be used in messages where the product name needs to
remain unchanged across different versions (Nightly, Beta, etc.). -->
-<!ENTITY brandProductName "Firefox">
+<!ENTITY brandProductName "Tor Browser">
diff --git a/browser/branding/nightly/locales/en-US/brand.ftl b/browser/branding/nightly/locales/en-US/brand.ftl
index 5610fc32f559..22d5f837b093 100644
--- a/browser/branding/nightly/locales/en-US/brand.ftl
+++ b/browser/branding/nightly/locales/en-US/brand.ftl
@@ -19,4 +19,4 @@
# remain unchanged across different versions (Nightly, Beta, etc.).
-brand-product-name = Firefox
-vendor-short-name = Mozilla
-trademarkInfo = { " " }
+trademarkInfo = Firefox and the Firefox logos are trademarks of the Mozilla Foundation.
diff --git a/browser/branding/nightly/locales/en-US/brand.properties b/browser/branding/nightly/locales/en-US/brand.properties
index d93d128b7514..e96b063b9034 100644
--- a/browser/branding/nightly/locales/en-US/brand.properties
+++ b/browser/branding/nightly/locales/en-US/brand.properties
@@ -2,13 +2,13 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShorterName=Nightly
-brandShortName=Nightly
-brandFullName=Firefox Nightly
+brandShorterName=Tor Browser
+brandShortName=Tor Browser
+brandFullName=Tor Browser
# LOCALIZATION NOTE(brandProductName):
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
-brandProductName=Firefox
-vendorShortName=Mozilla
+brandProductName=Tor Browser
+vendorShortName=Tor Project
syncBrandShortName=Sync
diff --git a/browser/branding/nightly/locales/jar.mn b/browser/branding/nightly/locales/jar.mn
index c04a7a1cf0f0..d13c2110148f 100644
--- a/browser/branding/nightly/locales/jar.mn
+++ b/browser/branding/nightly/locales/jar.mn
@@ -4,10 +4,9 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
[localization] @AB_CD@.jar:
- branding (en-US/**/*.ftl)
+ branding (%*.ftl)
@AB_CD@.jar:
% locale branding @AB_CD@ %locale/branding/
-# Nightly branding only exists in en-US
- locale/branding/brand.dtd (en-US/brand.dtd)
- locale/branding/brand.properties (en-US/brand.properties)
+ locale/branding/brand.dtd (%brand.dtd)
+ locale/branding/brand.properties (%brand.properties)
diff --git a/browser/branding/nightly/locales/moz.build b/browser/branding/nightly/locales/moz.build
index 8bad13124d5a..eb4454d28f88 100644
--- a/browser/branding/nightly/locales/moz.build
+++ b/browser/branding/nightly/locales/moz.build
@@ -4,6 +4,4 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-DEFINES['MOZ_DISTRIBUTION_ID_UNQUOTED'] = CONFIG['MOZ_DISTRIBUTION_ID']
-
JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file
diff --git a/browser/branding/nightly/wizHeader.bmp b/browser/branding/nightly/wizHeader.bmp
index 89eaf901254c..a754d2db1e11 100644
Binary files a/browser/branding/nightly/wizHeader.bmp and b/browser/branding/nightly/wizHeader.bmp differ
diff --git a/browser/branding/nightly/wizHeaderRTL.bmp b/browser/branding/nightly/wizHeaderRTL.bmp
index 451d87c70ef0..c944205be23f 100644
Binary files a/browser/branding/nightly/wizHeaderRTL.bmp and b/browser/branding/nightly/wizHeaderRTL.bmp differ
diff --git a/browser/branding/nightly/wizWatermark.bmp b/browser/branding/nightly/wizWatermark.bmp
index f9d6a870e952..9e523b5fa196 100644
Binary files a/browser/branding/nightly/wizWatermark.bmp and b/browser/branding/nightly/wizWatermark.bmp differ
diff --git a/browser/branding/official/VisualElements_150.png b/browser/branding/official/VisualElements_150.png
index f764a48966ca..acc02c97d827 100644
Binary files a/browser/branding/official/VisualElements_150.png and b/browser/branding/official/VisualElements_150.png differ
diff --git a/browser/branding/official/VisualElements_70.png b/browser/branding/official/VisualElements_70.png
index 197a645b4236..890a227e251a 100644
Binary files a/browser/branding/official/VisualElements_70.png and b/browser/branding/official/VisualElements_70.png differ
diff --git a/browser/branding/official/configure.sh b/browser/branding/official/configure.sh
index 92ef14e03f40..243091484f75 100644
--- a/browser/branding/official/configure.sh
+++ b/browser/branding/official/configure.sh
@@ -2,4 +2,4 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-MOZ_APP_DISPLAYNAME=Firefox
+MOZ_APP_DISPLAYNAME="Tor Browser"
diff --git a/browser/branding/official/content/identity-icons-brand.svg b/browser/branding/official/content/identity-icons-brand.svg
index fc8b1a356768..62472ad1826e 100644
--- a/browser/branding/official/content/identity-icons-brand.svg
+++ b/browser/branding/official/content/identity-icons-brand.svg
@@ -1,3 +1,31 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16">
- <path fill="context-fill" fill-opacity="context-fill-opacity" d="M15.424 5.366A4.384 4.384 0 0 0 13.817 3.4a7.893 7.893 0 0 1 .811 2.353v.017c-.9-2.185-2.441-3.066-3.7-4.984l-.189-.3c-.035-.059-.063-.112-.088-.161a1.341 1.341 0 0 1-.119-.306.022.022 0 0 0-.013-.019.026.026 0 0 0-.019 0h-.006a5.629 5.629 0 0 0-2.755 4.308c.094-.006.187-.014.282-.014a4.069 4.069 0 0 1 3.51 1.983A2.838 2.838 0 0 0 9.6 5.824a3.2 3.2 0 0 1-1.885 6.013 3.651 3.651 0 0 1-1.042-.2c-.078-.028-.157-.059-.235-.093-.046-.02-.091-.04-.135-.062A3.282 3.282 0 0 1 4.415 8.95s.369-1.334 2.647-1.334a1.91 1.91 0 0 0 .964-.857 12.756 12.756 0 0 1-1.941-1.118c-.29-.277-.428-.411-.551-.511-.066-.054-.128-.1-.207-.152a3.481 3.481 0 0 1-.022-1.894 5.915 5.915 0 0 0-1.929 1.442A4.108 4.108 0 0 1 3.1 2.584a1.561 1.561 0 0 0-.267.138 5.767 5.767 0 0 0-.783.649 6.9 6.9 0 0 0-.748.868 6.446 6.446 0 0 0-1.08 2.348c0 .009-.076.325-.131.715l-.025.182c-.019.117-.033.245-.048.444v.023c-.005.076-.011.16-.016.258v.04A7.884 7.884 0 0
0 8.011 16a7.941 7.941 0 0 0 7.9-6.44l.036-.3a7.724 7.724 0 0 0-.523-3.894z" />
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="-17 -17 546 546" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="100%" x2="50%" y2="0%" id="linearGradient-1">
+ <stop stop-color="#420C5D" offset="0%"></stop>
+ <stop stop-color="#951AD1" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,29 C152.577777,29 256,131.974508 256,259 C256,386.025492 152.577777,489 25,489 L25,29 Z" id="path-2"></path>
+ <filter x="-18.2%" y="-7.4%" width="129.4%" height="114.8%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Assets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="icon_512x512">
+ <g id="Group">
+ <g id="tb_icon/Stable">
+ <g id="Stable">
+ <circle id="background" fill="#F2E4FF" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384
044,0 256,0 C114.60886,0 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.500000, 259.000000) scale(-1, 1) translate(-140.500000, -259.000000) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/official/content/jar.mn b/browser/branding/official/content/jar.mn
index 68b2bfd8e571..de166fe3636f 100644
--- a/browser/branding/official/content/jar.mn
+++ b/browser/branding/official/content/jar.mn
@@ -15,6 +15,8 @@ browser.jar:
content/branding/icon48.png (../default48.png)
content/branding/icon64.png (../default64.png)
content/branding/icon128.png (../default128.png)
+ content/branding/icon256.png (../default256.png)
+ content/branding/icon512.png (../default512.png)
content/branding/identity-icons-brand.svg
content/branding/aboutDialog.css
content/branding/horizontal-lockup.svg
diff --git a/browser/branding/official/default128.png b/browser/branding/official/default128.png
index b92d78ca6d09..18f3572d0d79 100644
Binary files a/browser/branding/official/default128.png and b/browser/branding/official/default128.png differ
diff --git a/browser/branding/official/default16.png b/browser/branding/official/default16.png
index fe860e46b1e7..904b84e49871 100644
Binary files a/browser/branding/official/default16.png and b/browser/branding/official/default16.png differ
diff --git a/browser/branding/official/default22.png b/browser/branding/official/default22.png
deleted file mode 100644
index 3aff987a8476..000000000000
Binary files a/browser/branding/official/default22.png and /dev/null differ
diff --git a/browser/branding/official/default24.png b/browser/branding/official/default24.png
deleted file mode 100644
index cfce6e7d64fd..000000000000
Binary files a/browser/branding/official/default24.png and /dev/null differ
diff --git a/browser/branding/official/default256.png b/browser/branding/official/default256.png
index ddc9d4db1f14..809dbad4ab16 100644
Binary files a/browser/branding/official/default256.png and b/browser/branding/official/default256.png differ
diff --git a/browser/branding/official/default32.png b/browser/branding/official/default32.png
index 67042dbb2b4a..e8e68eb4492c 100644
Binary files a/browser/branding/official/default32.png and b/browser/branding/official/default32.png differ
diff --git a/browser/branding/official/default48.png b/browser/branding/official/default48.png
index 765ea42459d3..e839211d260b 100644
Binary files a/browser/branding/official/default48.png and b/browser/branding/official/default48.png differ
diff --git a/browser/branding/official/default512.png b/browser/branding/official/default512.png
new file mode 100644
index 000000000000..23942859673d
Binary files /dev/null and b/browser/branding/official/default512.png differ
diff --git a/browser/branding/official/default64.png b/browser/branding/official/default64.png
index 39e77389022c..147a229fab8b 100644
Binary files a/browser/branding/official/default64.png and b/browser/branding/official/default64.png differ
diff --git a/browser/branding/official/disk.icns b/browser/branding/official/disk.icns
index 4353ef0965f3..3e2c44f187ce 100644
Binary files a/browser/branding/official/disk.icns and b/browser/branding/official/disk.icns differ
diff --git a/browser/branding/official/document.icns b/browser/branding/official/document.icns
index 50d9701405a5..27a776a12557 100644
Binary files a/browser/branding/official/document.icns and b/browser/branding/official/document.icns differ
diff --git a/browser/branding/official/document.ico b/browser/branding/official/document.ico
index fcec7dc15646..3e5d99012f89 100644
Binary files a/browser/branding/official/document.ico and b/browser/branding/official/document.ico differ
diff --git a/browser/branding/official/firefox.VisualElementsManifest.xml b/browser/branding/official/firefox.VisualElementsManifest.xml
index 85e09dd7a910..3b2f265df644 100644
--- a/browser/branding/official/firefox.VisualElementsManifest.xml
+++ b/browser/branding/official/firefox.VisualElementsManifest.xml
@@ -8,5 +8,5 @@
Square150x150Logo='browser\VisualElements\VisualElements_150.png'
Square70x70Logo='browser\VisualElements\VisualElements_70.png'
ForegroundText='light'
- BackgroundColor='#20123a'/>
+ BackgroundColor='#420c5e'/>
</Application>
diff --git a/browser/branding/official/firefox.icns b/browser/branding/official/firefox.icns
index 3cc884734c9d..b9874461e519 100644
Binary files a/browser/branding/official/firefox.icns and b/browser/branding/official/firefox.icns differ
diff --git a/browser/branding/official/firefox.ico b/browser/branding/official/firefox.ico
index d8ba663ba76e..db0a9af865b6 100644
Binary files a/browser/branding/official/firefox.ico and b/browser/branding/official/firefox.ico differ
diff --git a/browser/branding/official/firefox.svg b/browser/branding/official/firefox.svg
new file mode 100644
index 000000000000..9240dc6e84ca
--- /dev/null
+++ b/browser/branding/official/firefox.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="100%" x2="50%" y2="0%" id="linearGradient-1">
+ <stop stop-color="#420C5D" offset="0%"></stop>
+ <stop stop-color="#951AD1" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,29 C152.577777,29 256,131.974508 256,259 C256,386.025492 152.577777,489 25,489 L25,29 Z" id="path-2"></path>
+ <filter x="-18.2%" y="-7.4%" width="129.4%" height="114.8%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Assets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="icon_512x512">
+ <g id="Group">
+ <g id="tb_icon/Stable">
+ <g id="Stable">
+ <circle id="background" fill="#F2E4FF" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384
044,0 256,0 C114.60886,0 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.500000, 259.000000) scale(-1, 1) translate(-140.500000, -259.000000) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/official/firefox64.ico b/browser/branding/official/firefox64.ico
index c3a32449d27a..db0a9af865b6 100644
Binary files a/browser/branding/official/firefox64.ico and b/browser/branding/official/firefox64.ico differ
diff --git a/browser/branding/official/locales/en-US/brand.dtd b/browser/branding/official/locales/en-US/brand.dtd
index d094ad0f8d01..0b15c9978e01 100644
--- a/browser/branding/official/locales/en-US/brand.dtd
+++ b/browser/branding/official/locales/en-US/brand.dtd
@@ -2,10 +2,10 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShorterName "Firefox">
-<!ENTITY brandShortName "Firefox">
-<!ENTITY brandFullName "Mozilla Firefox">
+<!ENTITY brandShorterName "Tor Browser">
+<!ENTITY brandShortName "Tor Browser">
+<!ENTITY brandFullName "Tor Browser">
<!-- LOCALIZATION NOTE (brandProductName):
This brand name can be used in messages where the product name needs to
remain unchanged across different versions (Nightly, Beta, etc.). -->
-<!ENTITY brandProductName "Firefox">
+<!ENTITY brandProductName "Tor Browser">
diff --git a/browser/branding/official/locales/en-US/brand.properties b/browser/branding/official/locales/en-US/brand.properties
index 568f227d4cee..e96b063b9034 100644
--- a/browser/branding/official/locales/en-US/brand.properties
+++ b/browser/branding/official/locales/en-US/brand.properties
@@ -2,13 +2,13 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShorterName=Firefox
-brandShortName=Firefox
-brandFullName=Mozilla Firefox
+brandShorterName=Tor Browser
+brandShortName=Tor Browser
+brandFullName=Tor Browser
# LOCALIZATION NOTE(brandProductName):
# This brand name can be used in messages where the product name needs to
# remain unchanged across different versions (Nightly, Beta, etc.).
-brandProductName=Firefox
-vendorShortName=Mozilla
+brandProductName=Tor Browser
+vendorShortName=Tor Project
syncBrandShortName=Sync
diff --git a/browser/branding/official/wizHeader.bmp b/browser/branding/official/wizHeader.bmp
index 420824226dfe..a754d2db1e11 100644
Binary files a/browser/branding/official/wizHeader.bmp and b/browser/branding/official/wizHeader.bmp differ
diff --git a/browser/branding/official/wizHeaderRTL.bmp b/browser/branding/official/wizHeaderRTL.bmp
index 7f74929910bd..c944205be23f 100644
Binary files a/browser/branding/official/wizHeaderRTL.bmp and b/browser/branding/official/wizHeaderRTL.bmp differ
diff --git a/browser/branding/official/wizWatermark.bmp b/browser/branding/official/wizWatermark.bmp
index b3b3c91d327c..9e523b5fa196 100644
Binary files a/browser/branding/official/wizWatermark.bmp and b/browser/branding/official/wizWatermark.bmp differ
diff --git a/browser/components/aboutconfig/content/aboutconfig.html b/browser/components/aboutconfig/content/aboutconfig.html
index ce7f258f8db6..5c9dfd830a02 100644
--- a/browser/components/aboutconfig/content/aboutconfig.html
+++ b/browser/components/aboutconfig/content/aboutconfig.html
@@ -13,7 +13,7 @@
href="chrome://global/skin/in-content/info-pages.css" title="infop">
<link rel="stylesheet" type="text/css"
href="chrome://browser/content/aboutconfig/aboutconfig.css">
- <link rel="localization" href="branding/brand.ftl">
+ <link rel="localization" href="branding/tor-browser-brand.ftl">
<link rel="localization" href="browser/aboutConfig.ftl">
<script src="chrome://browser/content/aboutconfig/aboutconfig.js"></script>
<title data-l10n-id="about-config-page-title"></title>
diff --git a/browser/components/aboutlogins/AboutLoginsParent.jsm b/browser/components/aboutlogins/AboutLoginsParent.jsm
index 015ce5f29332..a3b47f8f8527 100644
--- a/browser/components/aboutlogins/AboutLoginsParent.jsm
+++ b/browser/components/aboutlogins/AboutLoginsParent.jsm
@@ -52,7 +52,7 @@ XPCOMUtils.defineLazyPreferenceGetter(
false
);
XPCOMUtils.defineLazyGetter(this, "AboutLoginsL10n", () => {
- return new Localization(["branding/brand.ftl", "browser/aboutLogins.ftl"]);
+ return new Localization(["branding/tor-browser-brand.ftl", "browser/aboutLogins.ftl"]);
});
const ABOUT_LOGINS_ORIGIN = "about:logins";
@@ -714,7 +714,7 @@ var AboutLogins = {
);
},
],
- extraFtl: ["branding/brand.ftl", "browser/branding/sync-brand.ftl"],
+ extraFtl: ["branding/tor-browser-brand.ftl", "browser/branding/sync-brand.ftl"],
});
},
diff --git a/browser/components/aboutlogins/content/aboutLogins.html b/browser/components/aboutlogins/content/aboutLogins.html
index 3b4f100d4b27..209681adcd39 100644
--- a/browser/components/aboutlogins/content/aboutLogins.html
+++ b/browser/components/aboutlogins/content/aboutLogins.html
@@ -8,7 +8,7 @@
<meta charset="utf-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; img-src data: blob: https://firefoxusercontent.com;"/>
<title data-l10n-id="about-logins-page-title"></title>
- <link rel="localization" href="branding/brand.ftl">
+ <link rel="localization" href="branding/tor-browser-brand.ftl">
<link rel="localization" href="browser/branding/sync-brand.ftl">
<link rel="localization" href="browser/branding/brandings.ftl">
<link rel="localization" href="browser/aboutLogins.ftl">
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index a81be30f3ec7..aa5cc7021f8e 100644
--- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js
@@ -876,7 +876,7 @@ const PanelUI = {
let anchor = this._getPanelAnchor(this.menuButton);
// Insert Fluent files when needed before notification is opened
- MozXULElement.insertFTLIfNeeded("branding/brand.ftl");
+ MozXULElement.insertFTLIfNeeded("branding/tor-browser-brand.ftl");
MozXULElement.insertFTLIfNeeded("browser/appMenuNotifications.ftl");
// After Fluent files are loaded into document replace data-lazy-l10n-ids with actual ones
diff --git a/browser/components/enterprisepolicies/content/aboutPolicies.html b/browser/components/enterprisepolicies/content/aboutPolicies.html
index e1da06927128..3deb79c0f989 100644
--- a/browser/components/enterprisepolicies/content/aboutPolicies.html
+++ b/browser/components/enterprisepolicies/content/aboutPolicies.html
@@ -10,7 +10,7 @@
<meta http-equiv="Content-Security-Policy" content="default-src chrome:; object-src 'none'">
<title data-l10n-id="about-policies-title"></title>
<link rel="stylesheet" href="chrome://browser/content/policies/aboutPolicies.css">
- <link rel="localization" href="branding/brand.ftl">
+ <link rel="localization" href="branding/tor-browser-brand.ftl">
<link rel="localization" href="browser/branding/sync-brand.ftl">
<link rel="localization" href="browser/aboutPolicies.ftl">
<link rel="localization" href="browser/policies/policies-descriptions.ftl">
diff --git a/browser/components/migration/content/aboutWelcomeBack.xhtml b/browser/components/migration/content/aboutWelcomeBack.xhtml
index e4c02d23d3c1..3958822f560f 100644
--- a/browser/components/migration/content/aboutWelcomeBack.xhtml
+++ b/browser/components/migration/content/aboutWelcomeBack.xhtml
@@ -17,7 +17,7 @@
<link rel="stylesheet" href="chrome://browser/skin/aboutWelcomeBack.css" type="text/css" media="all"/>
<link rel="icon" type="image/png" href="chrome://browser/skin/info.svg"/>
<link rel="localization" href="browser/aboutSessionRestore.ftl"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<script src="chrome://browser/content/aboutSessionRestore.js"/>
</head>
diff --git a/browser/components/newtab/aboutwelcome/content/aboutwelcome.html b/browser/components/newtab/aboutwelcome/content/aboutwelcome.html
index 76d9d6be499e..a2e7dbdc3342 100644
--- a/browser/components/newtab/aboutwelcome/content/aboutwelcome.html
+++ b/browser/components/newtab/aboutwelcome/content/aboutwelcome.html
@@ -10,7 +10,7 @@
<title data-l10n-id="onboarding-welcome-header"></title>
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png">
<link rel="stylesheet" href="resource://activity-stream/aboutwelcome/aboutwelcome.css">
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/branding/sync-brand.ftl"/>
<link rel="localization" href="browser/branding/brandings.ftl"/>
<link rel="localization" href="browser/newtab/onboarding.ftl"/>
diff --git a/browser/components/newtab/bin/render-activity-stream-html.js b/browser/components/newtab/bin/render-activity-stream-html.js
index 4c2bb95cb16b..22745cf4ea60 100644
--- a/browser/components/newtab/bin/render-activity-stream-html.js
+++ b/browser/components/newtab/bin/render-activity-stream-html.js
@@ -58,7 +58,7 @@ function templateHTML(options) {
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
<title data-l10n-id="newtab-page-title"></title>
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
- <link rel="localization" href="branding/brand.ftl" />
+ <link rel="localization" href="branding/tor-browser-brand.ftl" />
<link rel="localization" href="browser/branding/brandings.ftl" />
<link rel="localization" href="browser/newtab/newtab.ftl" />
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
diff --git a/browser/components/newtab/content-src/asrouter/templates/FirstRun/FirstRun.jsx b/browser/components/newtab/content-src/asrouter/templates/FirstRun/FirstRun.jsx
index 209ffff0c1f7..428c388038dc 100644
--- a/browser/components/newtab/content-src/asrouter/templates/FirstRun/FirstRun.jsx
+++ b/browser/components/newtab/content-src/asrouter/templates/FirstRun/FirstRun.jsx
@@ -11,7 +11,7 @@ import { BASE_PARAMS } from "./addUtmParams";
const TRANSITION_LENGTH = 500;
export const FLUENT_FILES = [
- "branding/brand.ftl",
+ "branding/tor-browser-brand.ftl",
"browser/branding/brandings.ftl",
"browser/branding/sync-brand.ftl",
"browser/newtab/onboarding.ftl",
diff --git a/browser/components/newtab/data/content/abouthomecache/page.html.template b/browser/components/newtab/data/content/abouthomecache/page.html.template
index f55893077c0e..cf25f51146ff 100644
--- a/browser/components/newtab/data/content/abouthomecache/page.html.template
+++ b/browser/components/newtab/data/content/abouthomecache/page.html.template
@@ -25,7 +25,7 @@
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
<title data-l10n-id="newtab-page-title"></title>
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
- <link rel="localization" href="branding/brand.ftl" />
+ <link rel="localization" href="branding/tor-browser-brand.ftl" />
<link rel="localization" href="browser/branding/brandings.ftl" />
<link rel="localization" href="browser/newtab/newtab.ftl" />
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
diff --git a/browser/components/newtab/data/content/activity-stream.bundle.js b/browser/components/newtab/data/content/activity-stream.bundle.js
index c8fb360a6724..6d2b809735eb 100644
--- a/browser/components/newtab/data/content/activity-stream.bundle.js
+++ b/browser/components/newtab/data/content/activity-stream.bundle.js
@@ -15890,7 +15890,7 @@ var addUtmParams = __webpack_require__(18);
// Note: should match the transition time on .trailheadCards in _Trailhead.scss
const TRANSITION_LENGTH = 500;
-const FLUENT_FILES = ["branding/brand.ftl", "browser/branding/brandings.ftl", "browser/branding/sync-brand.ftl", "browser/newtab/onboarding.ftl"];
+const FLUENT_FILES = ["branding/tor-browser-brand.ftl", "browser/branding/brandings.ftl", "browser/branding/sync-brand.ftl", "browser/newtab/onboarding.ftl"];
const helpers = {
addFluent(document) {
FLUENT_FILES.forEach(file => {
@@ -16597,4 +16597,4 @@ class OnboardingMessage_OnboardingCard extends external_React_default.a.PureComp
}
/***/ })
-/******/ ]);
\ No newline at end of file
+/******/ ]);
diff --git a/browser/components/newtab/lib/OnboardingMessageProvider.jsm b/browser/components/newtab/lib/OnboardingMessageProvider.jsm
index 99c958eab29e..cc2dd91afa01 100644
--- a/browser/components/newtab/lib/OnboardingMessageProvider.jsm
+++ b/browser/components/newtab/lib/OnboardingMessageProvider.jsm
@@ -19,7 +19,7 @@ const { FX_MONITOR_OAUTH_CLIENT_ID } = ChromeUtils.import(
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const L10N = new Localization([
- "branding/brand.ftl",
+ "branding/tor-browser-brand.ftl",
"browser/branding/brandings.ftl",
"browser/branding/sync-brand.ftl",
"browser/newtab/onboarding.ftl",
diff --git a/browser/components/newtab/lib/RemoteL10n.jsm b/browser/components/newtab/lib/RemoteL10n.jsm
index 72dcf915d81f..90c587cc560b 100644
--- a/browser/components/newtab/lib/RemoteL10n.jsm
+++ b/browser/components/newtab/lib/RemoteL10n.jsm
@@ -67,7 +67,7 @@ class _RemoteL10n {
"browser/newtab/asrouter.ftl",
"browser/branding/brandings.ftl",
"browser/branding/sync-brand.ftl",
- "branding/brand.ftl",
+ "branding/tor-browser-brand.ftl",
],
false,
Services.prefs.getBoolPref(USE_REMOTE_L10N_PREF, true)
diff --git a/browser/components/newtab/prerendered/activity-stream-debug.html b/browser/components/newtab/prerendered/activity-stream-debug.html
index 72c2d8f6d3ac..c410f5a474bf 100644
--- a/browser/components/newtab/prerendered/activity-stream-debug.html
+++ b/browser/components/newtab/prerendered/activity-stream-debug.html
@@ -9,7 +9,7 @@
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
<title data-l10n-id="newtab-page-title"></title>
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
- <link rel="localization" href="branding/brand.ftl" />
+ <link rel="localization" href="branding/tor-browser-brand.ftl" />
<link rel="localization" href="browser/branding/brandings.ftl" />
<link rel="localization" href="browser/newtab/newtab.ftl" />
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
diff --git a/browser/components/newtab/prerendered/activity-stream-noscripts.html b/browser/components/newtab/prerendered/activity-stream-noscripts.html
index c7ceabc82fd3..c9d0eb026294 100644
--- a/browser/components/newtab/prerendered/activity-stream-noscripts.html
+++ b/browser/components/newtab/prerendered/activity-stream-noscripts.html
@@ -9,7 +9,7 @@
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
<title data-l10n-id="newtab-page-title"></title>
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
- <link rel="localization" href="branding/brand.ftl" />
+ <link rel="localization" href="branding/tor-browser-brand.ftl" />
<link rel="localization" href="browser/branding/brandings.ftl" />
<link rel="localization" href="browser/newtab/newtab.ftl" />
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
diff --git a/browser/components/newtab/prerendered/activity-stream.html b/browser/components/newtab/prerendered/activity-stream.html
index af52351782c1..809e29c65529 100644
--- a/browser/components/newtab/prerendered/activity-stream.html
+++ b/browser/components/newtab/prerendered/activity-stream.html
@@ -9,7 +9,7 @@
<meta http-equiv="Content-Security-Policy" content="default-src 'none'; object-src 'none'; script-src resource: chrome:; connect-src https:; img-src https: data: blob:; style-src 'unsafe-inline';">
<title data-l10n-id="newtab-page-title"></title>
<link rel="icon" type="image/png" href="chrome://branding/content/icon32.png"/>
- <link rel="localization" href="branding/brand.ftl" />
+ <link rel="localization" href="branding/tor-browser-brand.ftl" />
<link rel="localization" href="browser/branding/brandings.ftl" />
<link rel="localization" href="browser/newtab/newtab.ftl" />
<link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" />
diff --git a/browser/components/newtab/test/unit/asrouter/RemoteL10n.test.js b/browser/components/newtab/test/unit/asrouter/RemoteL10n.test.js
index 7552b5236469..a57565e29a7d 100644
--- a/browser/components/newtab/test/unit/asrouter/RemoteL10n.test.js
+++ b/browser/components/newtab/test/unit/asrouter/RemoteL10n.test.js
@@ -63,7 +63,7 @@ describe("RemoteL10n", () => {
"browser/newtab/asrouter.ftl",
"browser/branding/brandings.ftl",
"browser/branding/sync-brand.ftl",
- "branding/brand.ftl",
+ "branding/tor-browser-brand.ftl",
]);
assert.isFalse(args[1]);
assert.isFunction(args[2].generateBundles);
@@ -81,7 +81,7 @@ describe("RemoteL10n", () => {
"browser/newtab/asrouter.ftl",
"browser/branding/brandings.ftl",
"browser/branding/sync-brand.ftl",
- "branding/brand.ftl",
+ "branding/tor-browser-brand.ftl",
]);
assert.isFalse(args[1]);
assert.isEmpty(args[2]);
diff --git a/browser/components/pioneer/content/pioneer.html b/browser/components/pioneer/content/pioneer.html
index dc5dc6031e0b..897e1c84444b 100644
--- a/browser/components/pioneer/content/pioneer.html
+++ b/browser/components/pioneer/content/pioneer.html
@@ -8,7 +8,7 @@
<meta charset="utf-8">
<meta http-equiv="Content-Security-Policy" content="default-src chrome: blob:; img-src https:; object-src 'none'">
<link rel="localization" href="browser/branding/brandings.ftl">
- <link rel="localization" href="branding/brand.ftl">
+ <link rel="localization" href="branding/tor-browser-brand.ftl">
<!-- Temporary "en-US"-only l10n strings -->
<link rel="localization" href="preview/pioneer.ftl">
<link rel="stylesheet" href="chrome://global/skin/in-content/common.css">
diff --git a/browser/components/preferences/dialogs/blocklists.xhtml b/browser/components/preferences/dialogs/blocklists.xhtml
index 3cccc1952c9a..c7141bd86d31 100644
--- a/browser/components/preferences/dialogs/blocklists.xhtml
+++ b/browser/components/preferences/dialogs/blocklists.xhtml
@@ -19,7 +19,7 @@
onkeypress="gBlocklistManager.onWindowKeyPress(event);">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="browser/preferences/blocklists.ftl"/>
</linkset>
diff --git a/browser/components/preferences/dialogs/browserLanguages.xhtml b/browser/components/preferences/dialogs/browserLanguages.xhtml
index 2e6065870481..e691773b45b9 100644
--- a/browser/components/preferences/dialogs/browserLanguages.xhtml
+++ b/browser/components/preferences/dialogs/browserLanguages.xhtml
@@ -19,7 +19,7 @@
helpTopic="change-language">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="browser/preferences/languages.ftl"/>
</linkset>
diff --git a/browser/components/preferences/dialogs/clearSiteData.xhtml b/browser/components/preferences/dialogs/clearSiteData.xhtml
index fb289f2d27be..5c3714fb391c 100644
--- a/browser/components/preferences/dialogs/clearSiteData.xhtml
+++ b/browser/components/preferences/dialogs/clearSiteData.xhtml
@@ -17,7 +17,7 @@
persist="screenX screenY width height">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="browser/preferences/clearSiteData.ftl"/>
</linkset>
<script src="chrome://browser/content/preferences/dialogs/clearSiteData.js"/>
diff --git a/browser/components/preferences/dialogs/connection.xhtml b/browser/components/preferences/dialogs/connection.xhtml
index ab7c107992bc..c7fffda08294 100644
--- a/browser/components/preferences/dialogs/connection.xhtml
+++ b/browser/components/preferences/dialogs/connection.xhtml
@@ -22,7 +22,7 @@
<linkset>
<html:link rel="localization" href="browser/preferences/connection.ftl"/>
<html:link rel="localization" href="browser/preferences/preferences.ftl"/>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
</linkset>
<script src="chrome://browser/content/utilityOverlay.js"/>
diff --git a/browser/components/preferences/dialogs/sanitize.xhtml b/browser/components/preferences/dialogs/sanitize.xhtml
index 73e7d8acce07..ae97656a4f69 100644
--- a/browser/components/preferences/dialogs/sanitize.xhtml
+++ b/browser/components/preferences/dialogs/sanitize.xhtml
@@ -23,7 +23,7 @@
<linkset>
<html:link rel="localization" href="browser/sanitize.ftl"/>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
</linkset>
<script src="chrome://browser/content/utilityOverlay.js"/>
diff --git a/browser/components/preferences/dialogs/siteDataSettings.xhtml b/browser/components/preferences/dialogs/siteDataSettings.xhtml
index 6e184c2bd83c..834f0d9bb924 100644
--- a/browser/components/preferences/dialogs/siteDataSettings.xhtml
+++ b/browser/components/preferences/dialogs/siteDataSettings.xhtml
@@ -20,7 +20,7 @@
persist="screenX screenY width height">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="browser/preferences/siteDataSettings.ftl"/>
</linkset>
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index 9f36871d6303..e2b0cf84f560 100644
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
@@ -249,7 +249,7 @@ function getBundleForLocales(newLocales) {
return L10nRegistry.generateBundles(locales, resourceIds);
}
return new Localization(
- ["browser/preferences/preferences.ftl", "branding/brand.ftl"],
+ ["browser/preferences/preferences.ftl", "branding/tor-browser-brand.ftl"],
false,
{ generateBundles }
);
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index c8adb60653b7..e8a91cdd821d 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -29,7 +29,7 @@
<title data-l10n-id="pref-page-title"></title>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/branding/brandings.ftl"/>
<link rel="localization" href="browser/branding/sync-brand.ftl"/>
<link rel="localization" href="browser/preferences/preferences.ftl"/>
diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js
index 2cff75726546..e044d2d0f999 100644
--- a/browser/components/preferences/privacy.js
+++ b/browser/components/preferences/privacy.js
@@ -31,7 +31,7 @@ ChromeUtils.defineModuleGetter(
);
XPCOMUtils.defineLazyGetter(this, "L10n", () => {
return new Localization([
- "branding/brand.ftl",
+ "branding/tor-browser-brand.ftl",
"browser/preferences/preferences.ftl",
]);
});
diff --git a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
index 8611936b0083..98e596a5b81c 100644
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.html
@@ -11,7 +11,7 @@
<link rel="icon" href="chrome://browser/skin/privatebrowsing/favicon.svg"/>
<link rel="stylesheet" href="chrome://browser/content/aboutPrivateBrowsing.css" media="all"/>
<link rel="stylesheet" href="chrome://browser/skin/privatebrowsing/aboutPrivateBrowsing.css" media="all"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/aboutPrivateBrowsing.ftl"/>
<script src="chrome://browser/content/aboutPrivateBrowsing.js"></script>
<script src="chrome://browser/content/contentSearchHandoffUI.js"></script>
diff --git a/browser/components/protections/content/protections.html b/browser/components/protections/content/protections.html
index e7aac37ed6ea..bed9dbd4e145 100644
--- a/browser/components/protections/content/protections.html
+++ b/browser/components/protections/content/protections.html
@@ -8,7 +8,7 @@
<meta charset="utf-8">
<meta http-equiv="Content-Security-Policy" content="default-src chrome: blob:; object-src 'none'">
<link rel="localization" href="browser/branding/brandings.ftl"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="browser/branding/sync-brand.ftl">
<link rel="localization" href="browser/protections.ftl">
<!-- Temporary "en-US"-only l10n strings -->
diff --git a/browser/components/sessionstore/content/aboutSessionRestore.xhtml b/browser/components/sessionstore/content/aboutSessionRestore.xhtml
index 05c0e4f732ee..41dbe15f76bf 100644
--- a/browser/components/sessionstore/content/aboutSessionRestore.xhtml
+++ b/browser/components/sessionstore/content/aboutSessionRestore.xhtml
@@ -17,7 +17,7 @@
<link rel="stylesheet" href="chrome://browser/skin/aboutSessionRestore.css" type="text/css" media="all"/>
<link rel="icon" href="chrome://global/skin/icons/warning.svg"/>
<link rel="localization" href="browser/aboutSessionRestore.ftl"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<script src="chrome://browser/content/aboutSessionRestore.js"/>
</head>
diff --git a/browser/extensions/onboarding/content/img/tor-watermark.png b/browser/extensions/onboarding/content/img/tor-watermark.png
new file mode 100644
index 000000000000..4c7885e0235b
Binary files /dev/null and b/browser/extensions/onboarding/content/img/tor-watermark.png differ
diff --git a/browser/themes/shared/identity-block/identity-block.inc.css b/browser/themes/shared/identity-block/identity-block.inc.css
index e358a3e23f82..27a990e08bc8 100644
--- a/browser/themes/shared/identity-block/identity-block.inc.css
+++ b/browser/themes/shared/identity-block/identity-block.inc.css
@@ -61,6 +61,16 @@
-moz-outline-radius: var(--toolbarbutton-border-radius);
}
+%ifdef MOZ_OFFICIAL_BRANDING
+#identity-box[pageproxystate="valid"].chromeUI > #identity-icon-label {
+ color: #420C5D;
+}
+
+toolbar[brighttext] #identity-box[pageproxystate="valid"].chromeUI > #identity-icon-label {
+ color: #CC80FF;
+}
+%endif
+
#identity-box[pageproxystate="valid"].chromeUI > #identity-icon-label,
.urlbar-label {
opacity: .6;
diff --git a/config/version.mk b/config/version.mk
index 883eafed48d3..20569b72d0fe 100644
--- a/config/version.mk
+++ b/config/version.mk
@@ -15,7 +15,7 @@ ifeq ($(MOZ_WIDGET_TOOLKIT),windows)
ifndef RESFILE
RCFILE=./module.rc
RESFILE=./module.res
-_RC_STRING = -QUIET 1 -DEPTH $(DEPTH) -TOPSRCDIR $(MOZILLA_DIR) -OBJDIR . -SRCDIR $(srcdir) -DISPNAME "$(MOZ_APP_DISPLAYNAME)" -APPVERSION $(MOZ_APP_VERSION)
+_RC_STRING = -QUIET 1 -DEPTH $(DEPTH) -TOPSRCDIR $(MOZILLA_DIR) -OBJDIR . -SRCDIR $(srcdir) -DISPNAME "$(MOZ_APP_DISPLAYNAME)" -APPVERSION "$(MOZ_APP_VERSION)"
ifdef MOZILLA_OFFICIAL
_RC_STRING += -OFFICIAL 1
endif
diff --git a/devtools/client/aboutdebugging/aboutdebugging.js b/devtools/client/aboutdebugging/aboutdebugging.js
index bbe97b7170d5..8a6795de2246 100644
--- a/devtools/client/aboutdebugging/aboutdebugging.js
+++ b/devtools/client/aboutdebugging/aboutdebugging.js
@@ -89,7 +89,7 @@ const AboutDebugging = {
this.actions.recordTelemetryEvent("open_adbg", { width });
await l10n.init([
- "branding/brand.ftl",
+ "branding/tor-browser-brand.ftl",
"devtools/client/aboutdebugging.ftl",
]);
diff --git a/devtools/client/themes/images/aboutdebugging-firefox-aurora.svg b/devtools/client/themes/images/aboutdebugging-firefox-aurora.svg
index d4c0cdace9fe..9240dc6e84ca 100644
--- a/devtools/client/themes/images/aboutdebugging-firefox-aurora.svg
+++ b/devtools/client/themes/images/aboutdebugging-firefox-aurora.svg
@@ -1,4 +1,31 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><linearGradient x1="42%" y1="-10%" x2="61%" y2="114%" id="f"><stop stop-color="#AAF2FF" offset="0%"/><stop stop-color="#0DF" offset="29%"/><stop stop-color="#0090ED" offset="61%"/><stop stop-color="#0250BB" offset="89%"/></linearGradient><linearGradient x1="38%" y1="0%" x2="63%" y2="124%" id="g"><stop stop-color="#AAF2FF" offset="0%"/><stop stop-color="#0DF" offset="29%"/><stop stop-color="#0090ED" offset="74%"/><stop stop-color="#0250BB" offset="100%"/></linearGradient><linearGradient x1="86%" y1="15%" x2="20%" y2="84%" id="k"><stop stop-color="#80EBFF" stop-opacity=".5" offset="24%"/><stop stop-color="#0DF" stop-opacity="0" offset="70%"/></linearGradient><linearGradient x1="61%" y1="-10%" x2="20%" y2="149%" id="l"><stop stop-color="#BFF3FF" stop-opacity=".9" offset="0%"/><stop stop-color="#80EBFF" stop-opacity=".5" offset="100%"/></linearGradient><linearGradient x1="51%" y1="-2%" x2="48%" y2="139%" id="m"><stop st
op-color="#BFF3FF" offset="0%"/><stop stop-color="#0DF" stop-opacity="0" offset="100%"/></linearGradient><linearGradient x1="52%" y1="-4%" x2="47%" y2="143%" id="n"><stop stop-color="#BFF3FF" offset="0%"/><stop stop-color="#AAF2FF" stop-opacity=".5" offset="100%"/></linearGradient><linearGradient x1="53%" y1="-2%" x2="47%" y2="142%" id="o"><stop stop-color="#BFF3FF" offset="0%"/><stop stop-color="#0DF" stop-opacity="0" offset="100%"/></linearGradient><linearGradient x1="49%" y1="-2%" x2="57%" y2="123%" id="p"><stop stop-color="#BFF3FF" stop-opacity=".8" offset="0%"/><stop stop-color="#80EBFF" stop-opacity=".2" offset="100%"/></linearGradient><linearGradient x1="117%" y1="-23%" x2="24%" y2="128%" id="q"><stop stop-color="#BFF3FF" stop-opacity=".8" offset="0%"/><stop stop-color="#80EBFF" stop-opacity=".2" offset="100%"/></linearGradient><linearGradient x1="52%" y1="-1%" x2="47%" y2="137%" id="r"><stop stop-color="#0DF" stop-opacity=".4" offset="0%"/><stop stop-color="#0DF" stop-opacit
y="0" offset="100%"/></linearGradient><linearGradient x1="50%" y1="-12%" x2="50%" y2="99%" id="s"><stop stop-color="#BFF3FF" offset="0%"/><stop stop-color="#0DF" stop-opacity="0" offset="100%"/></linearGradient><linearGradient x1="53%" y1="-3%" x2="47%" y2="142%" id="t"><stop stop-color="#BFF3FF" stop-opacity=".8" offset="0%"/><stop stop-color="#0DF" stop-opacity="0" offset="100%"/></linearGradient><radialGradient cx="55%" cy="25%" r="60%" id="a"><stop stop-color="#0DF" stop-opacity=".4" offset="10%"/><stop stop-color="#7542E5" stop-opacity=".25" offset="90%"/></radialGradient><radialGradient cx="49.238%" cy="52.7%" fx="49%" fy="52.7%" r="51%" id="b"><stop stop-color="#7542E5" stop-opacity="0" offset="91%"/><stop stop-color="#0DF" stop-opacity=".4" offset="100%"/></radialGradient><radialGradient cx="86%" cy="-13%" fx="86%" fy="-13%" r="128%" gradientTransform="matrix(.81263 0 0 1 .16 0)" id="c"><stop stop-color="#80EBFF" offset="0%"/><stop stop-color="#0DF" offset="26%"/><stop stop-
color="#0090ED" offset="53%"/><stop stop-color="#0060DF" offset="86%"/></radialGradient><radialGradient cx="47.729%" cy="40%" fx="48%" fy="40%" r="128%" gradientTransform="matrix(.81263 0 0 1 .09 0)" id="d"><stop stop-color="#321C64" stop-opacity=".8" offset="30%"/><stop stop-color="#212F83" stop-opacity=".5" offset="37%"/><stop stop-color="#0A47AC" stop-opacity=".14" offset="48%"/><stop stop-color="#0250BB" stop-opacity="0" offset="53%"/></radialGradient><radialGradient cx="90%" cy="-50%" r="210%" gradientTransform="matrix(.83857 0 0 1 .128 0)" id="e"><stop stop-color="#80EBFF" offset="0%"/><stop stop-color="#00B3F4" offset="47%"/><stop stop-color="#0060DF" offset="84%"/><stop stop-color="#592ACB" offset="100%"/></radialGradient><radialGradient cx="208%" cy="-104%" fx="208%" fy="-104%" r="300%" gradientTransform="matrix(1 0 0 .99746 0 -.003)" id="h"><stop stop-color="#0DF" offset="0%"/><stop stop-color="#0090ED" offset="82%"/></radialGradient><radialGradient cx="155%" cy="-45%" fx=
"155%" fy="-45%" r="313%" gradientTransform="matrix(.8937 0 0 1 .165 0)" id="i"><stop stop-color="#80EBFF" offset="29%"/><stop stop-color="#00B3F4" offset="100%"/></radialGradient><radialGradient cx="15%" cy="-43%" fx="15%" fy="-43%" r="230%" gradientTransform="matrix(.9814 0 0 1 .003 0)" id="j"><stop stop-color="#AAF2FF" offset="18%"/><stop stop-color="#0DF" offset="43%"/><stop stop-color="#0060DF" offset="69%"/></radialGradient></defs><path fill="#09204d" d="M146.622 289.098l15.141 41.978 22.752 30.697 53.417 10.188 25.555 2.174 43.626-10.899 18.794-18.015-179.285-56.123z"/><path fill="#09204d" d="M372.686 227.178l-5.348-17.744-15.292-28.856-17.493-18.437-18.57-13.258-16.124-6.329-19.347-6.882-31.855-2.027-20.087 3.625-16.39 5.038-29.082 17.02-18.176 20.277-16.76 27.22-6.593 23.164-1.232 35.146 6.285 23.963 13.863 27.282 9.778 13.177 13.52 12.395 16.886 11.423 20.822 9.056 34.846 4.09 18.195.507 26.929-7.585 24.07-13.21 15.486-13.211 12.008-14.326 16.977-33.232 3.748-22.733-1.064-
35.553z"/><path fill="#0e56d7" d="M249.24 149.615l-14.266 14.154 23.271 9.433 17.311-21.467-26.316-2.12z"/><path fill="#1053d1" d="M258.245 173.202l45.053-1.367-27.742-20.1-17.311 21.467z"/><path fill="#0b4fbf" d="M299.951 151.584l-24.395.151 27.742 20.1 25.654-1.675-29.001-18.576z"/><path fill="#0b48b0" d="M328.952 170.16l-14.584-20.11 20.185 12.091-5.601 8.019z"/><path fill="#0c45a7" d="M348.265 182.475l-19.313-12.315 5.601-8.019 13.712 20.334z"/><path fill="#0f46af" d="M328.952 170.16l-3.231 13.777 17.664 7.06-14.433-20.837z"/><path fill="#0c47ad" d="M328.952 170.16l19.313 12.315-4.88 8.522-14.433-20.837z"/><path fill="#0e4fc3" d="M303.298 171.835l25.654-1.675-3.231 13.777-22.423-12.102z"/><path fill="#174dca" d="M303.298 171.835l-20.269 18.347 26.087 12.775-5.818-31.122z"/><path fill="#1650d4" d="M258.245 173.202l45.053-1.367-20.269 18.347-24.784-16.98z"/><path fill="#1246b2" d="M325.721 183.937l12.268 23.791 5.396-16.731-17.664-7.06z"/><path fill="#133ea1" d="M337.989 207.728l5
.396-16.731 12.853 30.569-18.249-13.838z"/><path fill="#103d98" d="M343.385 190.997l19.589 14.346-6.736 16.223-12.853-30.569z"/><path fill="#0b3785" d="M348.265 182.475l3.781-1.897 10.928 24.765-14.709-22.868z"/><path fill="#0b3685" d="M362.974 205.343l4.364 4.091-15.292-28.856 10.928 24.765z"/><path d="M362.974 205.342l-14.709-22.867-4.88 8.525zm-28.421-43.2l13.712 20.334 3.781-1.9z" fill="#0c3b91"/><path fill="#0b3279" d="M371.703 241.042l-4.365-31.608 5.348 17.744-1.054 13.864h.071z"/><path fill="#0f388d" d="M362.974 205.343l8.729 35.699-4.365-31.608-4.364-4.091z"/><path fill="#0d3481" d="M356.238 221.566l15.465 19.476-8.729-35.699-6.736 16.223z"/><path fill="#0b2e71" d="M371.632 241.042l1.054-13.864 1.064 35.553-2.047-21.689h-.071z"/><path fill="#0e2f77" d="M369.111 269.139l4.639-6.408-2.047-21.689-2.592 28.097z"/><path fill="#0e2969" d="M370.002 285.464l-3.709 1.787 7.457-24.52-3.748 22.733z"/><path fill="#0c2a69" d="M366.293 287.251l7.457-24.52-4.639 6.408-2.818 18.112z"/><pat
h fill="#123180" d="M369.111 269.139l2.592-28.097-7.945 9.372 5.353 18.725z"/><path fill="#112b70" d="M366.293 287.251l2.818-18.112-15.324 25.753 12.506-7.641z"/><path fill="#12378c" d="M356.238 221.566l15.465 19.476-7.945 9.372-7.52-28.848z"/><path fill="#122e7b" d="M369.111 269.139l-5.353-18.725-8.079 23.064 13.432-4.339z"/><path fill="#11296c" d="M353.025 318.696l13.268-31.445-12.413 22.923-.855 8.522z"/><path fill="#142a72" d="M353.88 310.174l12.413-22.923-12.506 7.641.093 15.282z"/><path d="M366.293 287.251L353.025 318.7 370 285.464zm-25.276 45.771l12.008-14.322.855-8.522zm-15.486 13.211l15.486-13.211-16.366 7.527z" fill="#112768"/><path fill="#1c226a" d="M235.149 355.435l-15.646 3.827.477-10.919 15.169 7.092z"/><path fill="#182b7a" d="M148.162 206.825l4.313-1.598-10.906 24.762 6.593-23.164z"/><path fill="#1f308d" d="M141.569 229.989l8.257-1.536 2.649-23.226-10.906 24.762z"/><path fill="#1e2b7f" d="M142.062 259.728l-.493-29.739 8.257-1.536-7.764 31.275z"/><path d="M325.721 183.
937l-16.605 19.02 28.873 4.771zm-144.9-19.509l21.2-14.5-18.916 9.4z" fill="#1346b5"/><path fill="#1244ac" d="M183.098 159.328l29.082-17.02-10.166 7.619-18.916 9.401"/><path fill="#0e4ab6" d="M202.014 149.927l26.556-12.657-16.39 5.038-10.166 7.619z"/><path d="M303.3 171.835l5.818 31.122 16.605-19.02zm-85.11-23.382l24.738-9.893-14.356-1.29z" fill="#0e4bba"/><path fill="#0a4ebc" d="M248.657 133.645l-20.087 3.625 14.356 1.29 5.731-4.915z"/><path fill="#0c54cc" d="M267.655 138.314l-24.729.246 5.731-4.915"/><path d="M314.368 150.05l-14.417 1.534 29 18.576zm-46.713-11.736l32.2 4.24-19.347-6.882z" fill="#0b4bb4"/><path fill="#0c3889" d="M314.368 150.05l-14.509-7.496 16.124 6.329-1.615 1.167z"/><path d="M146.622 289.1l9.52 7.834-14.079-37.2zm131.394 73.985l8.369-19.7-30.5 8.194zm8.369-19.7l25.5 7.075 1.547-19.716z" fill="#202575"/><path fill="#1b2773" d="M324.651 340.549l-11.222-9.81 27.114-18.018-15.892 27.828z"/><path fill="#15276d" d="M340.544 312.721l-15.893 27.828 16.366-7.527 12.863-22
.848-13.336 2.547z"/><path d="M315.983 148.883l-1.615 1.167 20.185 12.091zm-16.032 2.7l14.417-1.534-14.509-7.5z" fill="#0c409d"/><path d="M248.657 133.645l19 4.669 12.857-2.642zm51.2 8.909l-32.2-4.24 32.3 13.27z" fill="#0b4cb7"/><path fill="#0b55ce" d="M267.655 138.314l7.901 13.421 24.395-.151-32.296-13.27z"/><path fill="#0a52c5" d="M267.655 138.314l7.901 13.421-26.316-2.119 18.415-11.302z"/><path fill="#0951c4" d="M242.926 138.56l6.314 11.056 18.415-11.302-24.729.246z"/><path fill="#0b50c4" d="M218.188 148.453l24.738-9.893 6.314 11.056-31.052-1.163z"/><path d="M202.014 149.927l16.174-1.474 10.382-11.183zm16.174-1.474l16.786 15.316 14.266-14.154z" fill="#0f4dbf"/><path fill="#1546b6" d="M218.188 148.453l-27.326 25.622 11.152-24.148 16.174-1.474z"/><path fill="#1549bd" d="M190.862 174.075l17.437 2.9 9.889-28.522-27.326 25.622z"/><path fill="#144bc3" d="M208.299 176.975l9.889-28.522 16.787 15.316-26.676 13.206z"/><path fill="#173794" d="M164.922 179.605l1.062 10.307 14.834-25.484-15.8
96 15.177z"/><path fill="#192f84" d="M152.475 205.227l12.447-25.622 1.062 10.307-13.509 15.315z"/><path fill="#1a389b" d="M165.984 189.912l14.834-25.484 10.044 9.647-24.878 15.837z"/><path fill="#1d3089" d="M165.086 212.006l.898-22.094-13.509 15.315 12.611 6.779z"/><path fill="#1e389f" d="M165.086 212.006l.898-22.094 17.53 14.231-18.428 7.863z"/><path fill="#1c40af" d="M183.514 204.143l7.348-30.068-24.878 15.837 17.53 14.231z"/><path fill="#1e41b7" d="M183.514 204.143l7.348-30.068 17.437 2.9-24.785 27.168z"/><path fill="#192c7d" d="M149.826 228.453l2.649-23.226 12.611 6.779-15.26 16.447z"/><path d="M278.016 363.083l23.445-3.64 10.42-8.989zm-137.679-97.948l1.726-5.407-.494-29.739zm9.489-36.682l-7.763 31.275 14.079 37.2-6.871-43.1z" fill="#162467"/><path fill="#1a236a" d="M156.141 296.933l11.615 1.628-8.133-18.986-3.482 17.358z"/><path d="M324.651 340.549l-12.77 9.905-10.42 8.989 24.07-13.21zm-68.314 25.972l18.195.507 26.929-7.585-23.445 3.64zm-89.358-48l12.207 2.348-11.43-22.3z" fill
="#132668"/><path d="M219.98 348.343l-20.668-15.908-8.59 8.259 28.778 18.568zM146.622 289.1l13.863 27.282-4.343-19.448zm-6.285-23.963l6.285 23.963-4.559-29.37zm115.547 86.438l-35.9-3.23 15.169 7.093-15.653 3.824-18.834-5.887 20.822 9.056 34.846 4.09 21.679-3.438zm-88.128-53.012l-11.614-1.629 10.837 21.585zm-18.485-44.733l6.871 43.1 3.481-17.358zm29.915 67.035l-12.207-2.348-6.494-2.137 9.778 13.177 13.52 12.395 16.886 11.423-9.947-12.681z" fill="#1b2268"/><path fill="#212a81" d="M149.826 228.453l16.39 25.352-1.13-41.799-15.26 16.447z"/><path fill="#21267a" d="M149.271 253.829l10.352 25.746 6.593-25.77-16.945.024z"/><path fill="#262781" d="M159.623 279.575l6.593-25.77 8.194 20.362-14.787 5.408z"/><path fill="#272379" d="M167.756 298.561l31.424 19.472-24.77-43.866-6.654 24.394z"/><path d="M160.485 316.38l6.494 2.137-10.837-21.585zm69.413 11.2l-9.918 20.759 35.9 3.23zm-62.142-29.023l11.43 22.3 11.536 19.829 8.59-8.259-.132-14.4z" fill="#1e226d"/><path d="M313.428 330.738l-1.547 19.716 1
2.77-9.905zm-54.935-2.829l-2.609 23.664 30.5-8.194-1.086-26.6z" fill="#222475"/><path d="M149.271 253.83l16.944-.025-16.389-25.352zM285.3 316.777l1.086 26.6 27.043-12.641z" fill="#23277d"/><path fill="#1e2776" d="M285.299 316.777l17.405-15.76 10.725 29.722-28.13-13.962z"/><path fill="#222b86" d="M313.429 330.739l13.156-39.844-23.881 10.122 10.725 29.722z"/><path fill="#192974" d="M340.543 312.721l-27.114 18.018 13.156-39.844 13.958 21.826z"/><path fill="#172a75" d="M353.787 294.892l-27.202-3.998 13.959 21.827 13.336-2.547-.093-15.282z"/><path fill="#172d7d" d="M355.679 273.478l-29.094 17.416 27.202 3.998 15.324-25.753-13.432 4.339z"/><path d="M152.475 205.227l12.447-25.622-16.76 27.22zm192.352 31.713l10.852 36.538 8.079-23.064z" fill="#18338a"/><path fill="#153791" d="M363.758 250.414l-7.52-28.848-11.411 15.373 18.931 13.475z"/><path fill="#1b318b" d="M326.585 290.895l29.094-17.417-28.198-12.552-.896 29.969z"/><path fill="#242d8d" d="M326.585 290.895l-26.367-26.642 2.486 36.764 23.8
81-10.122z"/><path fill="#2a2b8f" d="M285.299 316.777l-20.243-17.923 37.648 2.163-17.405 15.76z"/><path d="M167.756 298.561l6.654-24.393-14.787 5.406zm97.3.293l-6.563 29.055 26.807-11.132z" fill="#27267f"/><path fill="#2d2381" d="M223.15 304.797l-19.487-9.905-4.483 23.141 30.718 9.551 28.595.325-35.343-23.112z"/><path fill="#2f2485" d="M258.492 327.909l6.564-29.055-41.906 5.943 35.342 23.112z"/><path fill="#233196" d="M166.216 253.805l8.406-26.833-9.536-14.966 1.13 41.799z"/><path fill="#293cb7" d="M183.514 204.143l36.893-10.754-19.487 39.809-17.406-29.055z"/><path fill="#25339c" d="M326.585 290.895l-26.367-26.642 27.263-3.327-.896 29.969z"/><path fill="#19348f" d="M355.679 273.478l-10.852-36.539-17.346 23.987 28.198 12.552z"/><path fill="#2a309a" d="M302.704 301.017l-30.153-29.154 27.667-7.61 2.486 36.764z"/><path fill="#302b96" d="M265.056 298.854l37.648 2.163-30.153-29.154-7.495 26.991z"/><path fill="#3630a7" d="M265.056 298.854l-20.622-16.791 28.117-10.2-7.495 26.991z"/><path d=
"M180.818 164.428l2.28-5.1-18.176 20.277zm157.171 43.3l6.838 29.212 11.411-15.374z" fill="#173da2"/><path fill="#2a36a8" d="M183.514 204.143l17.406 29.055-26.298-6.226 8.892-22.829z"/><path fill="#312e9f" d="M174.622 226.972l26.298 6.226-17.784 28.011-8.514-34.237z"/><path fill="#184dcd" d="M220.407 193.389l14.568-29.62-26.676 13.206 12.108 16.414z"/><path fill="#272986" d="M166.216 253.805l16.92 7.404-8.726 12.958-8.194-20.362z"/><path fill="#2c2584" d="M183.136 261.209l-8.726 12.959 24.77 43.865 4.483-23.141-20.527-33.683z"/><path fill="#32268b" d="M203.663 294.892l2.744-40.752-23.271 7.069 20.527 33.683z"/><path fill="#372999" d="M203.663 294.892l40.771-12.829-38.027-27.923-2.744 40.752z"/><path fill="#392da5" d="M244.434 282.063l-3.973-31.508-34.054 3.585 38.027 27.923z"/><path fill="#3338bc" d="M240.461 250.555l28.757-10.754 3.333 32.062-32.09-21.308z"/><path fill="#362896" d="M223.15 304.797l41.906-5.943-20.622-16.791-21.284 22.734z"/><path fill="#35268f" d="M223.15 304.797l-1
9.487-9.905 40.771-12.829-21.284 22.734z"/><path fill="#2648d3" d="M220.407 193.389l24.973 2.642-10.405-32.262-14.568 29.62z"/><path fill="#1057dc" d="M258.245 173.202l-23.27-9.433 10.405 32.262 12.865-22.829z"/><path fill="#1653da" d="M258.245 173.202l24.784 16.98-37.649 5.849 12.865-22.829z"/><path fill="#2b46d5" d="M245.38 196.031l36.93 19.583-13.092 24.187-23.838-43.77z"/><path fill="#244ad7" d="M282.31 215.614l.719-25.432-37.649 5.849 36.93 19.583z"/><path fill="#2547cf" d="M282.31 215.614l.719-25.432 26.087 12.775-26.806 12.657z"/><path fill="#333cc5" d="M245.38 196.031l23.838 43.77-41.811-20.942 17.973-22.828z"/><path fill="#3833b6" d="M240.461 250.555l28.757-10.754-41.811-20.942 13.054 31.696z"/><path fill="#2a41c6" d="M269.218 239.801l36.876-6.735-23.784-17.452-13.092 24.187z"/><path fill="#2045c1" d="M309.116 202.957l-3.022 30.109-23.784-17.452 26.806-12.657z"/><path fill="#1b43b7" d="M309.116 202.957l17.406 23.638-20.428 6.471 3.022-30.109z"/><path fill="#1742af" d="M337.
989 207.728l-28.873-4.771 17.406 23.638 11.467-18.867z"/><path d="M190.862 174.075l11.152-24.148-21.2 14.5zm147.127 33.653L326.522 226.6l18.305 10.345z" fill="#1740a9"/><path fill="#1b3ca4" d="M327.481 260.926l17.346-23.987-18.305-10.344.959 34.331z"/><path fill="#1f3dad" d="M327.481 260.926l-.959-34.331-20.428 6.471 21.387 27.86z"/><path d="M183.515 204.143l36.892-10.754-12.107-16.414zm85.7 35.658l31 24.452 5.876-31.187z" fill="#2543c3"/><path fill="#2e37b2" d="M272.551 271.863l27.667-7.61-31-24.452 3.333 32.062z"/><path fill="#2d40c7" d="M220.407 193.389l7 25.47 17.973-22.828-24.973-2.642z"/><path fill="#3537b8" d="M220.407 193.389l-19.487 39.809 26.487-14.339-7-25.47z"/><path fill="#3931b0" d="M227.407 218.859l-21 35.281 34.054-3.585-13.054-31.696z"/><path d="M240.461 250.555l3.973 31.508 28.117-10.2zm-34.054 3.585l21-35.28-26.487 14.34z" fill="#3735b8"/><path fill="#342892" d="M183.136 261.209l17.784-28.011 5.487 20.942-23.271 7.069z"/><path d="M200.669 353.375l18.834 5.887-28.7
81-18.568zm-1.357-20.94l20.668 15.908 9.918-20.759-30.718-9.551zm56.572 19.138l2.609-23.664-28.595-.325zm30.5-8.194l-8.369 19.7 33.865-12.629z" fill="#232372"/><path fill="#2a2f96" d="M166.216 253.805l8.406-26.833 8.514 34.237-16.92-7.404z"/><path d="M174.622 226.972l8.893-22.829-18.429 7.863zm131.472 6.094l-5.876 31.187 27.263-3.327z" fill="#2636a5"/><path d="M374.274 262.764v-.055l-1.064-35.547v-.04c0-.013 0-.025-.006-.037s-.006-.032-.01-.047v-.011l-5.345-17.738v-.011l-.011-.029c0-.013-.01-.026-.016-.038l-.007-.016-15.293-28.856-.009-.014-.019-.03-.017-.025-.011-.015-.016-.018-.011-.014-17.503-18.443-.008-.007-.012-.012c-.01-.01-.022-.018-.033-.027l-.023-.02-18.565-13.253h-.009l-.017-.012a.36.36 0 00-.039-.02.3.3 0 00-.04-.02h-.008l-16.113-6.324h-.025l-19.343-6.88h-.018l-.037-.01-.034-.007h-.054l-31.855-2.027h-.055a.455.455 0 00-.052 0h-.02l-20.087 3.625h-.043l-.036.01-16.372 5.033-.036.014c-.014.006-.029.012-.042.019l-.021.01h-.007l-29.082 17.021h-.006l-.024.016-.023.015-.019.017
-.018.014-.02.022-.016.014-.007.008-18.169 20.268-.007.01-.013.015-.012.017-.016.023-.008.01-.006.01-16.772 27.198-.008.016-.016.028-.014.033c0 .013-.01.025-.014.038l-.006.016-6.593 23.165v.076a.26.26 0 00-.005.039v.01l-1.232 35.146v.087a.3.3 0 00.008.043v.036l6.281 23.948v.01l.006.018a.521.521 0 00.02.05c0 .008.006.017.01.025l13.86 27.274.009.013a.492.492 0 00.028.045l.007.013 9.772 13.169.012.015c.009.011.02.02.029.03a.25.25 0 00.022.024l13.52 12.4c.011.01.022.017.034.026l.027.022 16.885 11.422.012.006.04.024.022.01h.007l20.822 9.056.021.007a.353.353 0 00.046.015l.024.007.037.007h.021l34.846 4.091h.047l18.195.506h.019a.569.569 0 00.1-.01l.022-.007h.015l26.929-7.585.016-.006.023-.006.021-.01.015-.007.032-.014.011-.006 24.056-13.2h.007l.01-.006a.348.348 0 00.039-.028l.032-.022 15.486-13.21.016-.017.02-.018.02-.022h.006l12.006-14.323.005-.007a.531.531 0 00.042-.063l.015-.022v-.006l17.012-33.221c0-.007.006-.016.01-.024l.017-.039v-.019a.3.3 0 00.011-.043c0-.009.006-.018.008-.028l3.747-
22.727v-.039zM184.111 341.54l-3.5-3.212 7.877 6.171zm51.108 13.348l-12.307-5.754 29.13 2.62zm4.488-104.781l-32.312 3.4 19.926-33.476zm-11.278-30.148l39.477 19.772-27.152 10.154zM240 251.131l3.756 29.784-35.947-26.4zm3.285 30.742L204.24 294.16l2.627-39.03zm-2.161-30.245l30.265 20.1-26.518 9.62zm.482-.941l27.156-10.155 3.147 30.275zm41.723-34.975l25.171-11.883-2.838 28.271zm21.471 17.056l-34.6 6.32 12.286-22.688zm-35.583 5.932l-22.539-41.385L281.6 215.83zm-1.263-.118l-39.735-19.9 17.081-21.699zM206.6 252.791l-5.063-19.328 24.445-13.233zm-3.35 40.409l-19.312-31.688 21.892-6.65zm39.432-10.038l-19.646 20.985-17.987-9.142zm29.089-10.46l-7.007 25.234-19.279-15.7zm-1.9-31.718l29.206 23.037-26.067 7.169zm.586-.877l34.978-6.389-5.573 29.582zm36.241-7.785l2.802-27.952 16.159 21.946zm19.317-5.018l.894 32.012-19.941-25.976zm-43.154-12.532l.671-23.76 24.368 11.937zm-1.053-.021l-34.786-18.446 35.463-5.509zm-54.17 2.962l-6.519-23.722 23.259 2.46zm-.849.882l-24.674 13.357 18.153-37.084zm-21.02 35.18
8l-21.429 6.509 16.377-25.792zm-3.881 39.205l-26.755-18.954 7.981-11.852zm2.16 2.687l17.98 9.139-22.117 12.216zm40.435-12.9l19.309 15.725-39.239 5.564zm28.339-9.924l28.5 27.556-35.584-2.045zm.756-.731l26.158-7.195 2.35 34.759zm32.816-37.805l20.109 26.2-25.634 3.129zm20.68-6.81l16.983 9.6-16.094 22.253zm.179-1.106l10.517-17.3 6.272 26.791zm-.773-.753l-16.174-21.965 26.83 4.433zm-42.523-35.6l19-17.195 5.454 29.168zm-37.587 5.3l12.052-21.386 23.217 15.907zm-25.159-2.4l13.662-27.779 9.758 30.256zM200.873 232.1l-16.558-27.64 35.1-10.23zm-17.522 27.79l-8.009-32.208 24.739 5.857zm-8.823 13.161l-7.344-18.251 15.164 6.635zm28.554 22.073l-4.147 21.4-22.911-40.574zm19.749 10.449l6.283 21.217-28.6-8.892zm41.544-6.092l-6.229 27.573-33.54-21.933zm37.046 1.988l-16.125 14.6-18.757-16.607zm-.582-35.841l24.827 25.086-22.487 9.531zm.507-.983l25.59-3.124-.841 28.131zm43.281-26.531l10.222 34.42-26.563-11.824zm-5.793-29.086l16.672 12.642-10.425 14.045zm-28.7-6.435l15.475-17.727 11.434 22.173zm-.7-.8l-5.4
16-28.972 20.874 11.266zm-26.45-12.279l-23.114-15.836 42.017-1.275zm-37.472 5.211l-9.691-30.046 21.673 8.785zm-25.2-2.344l-11.222-15.213 24.724-12.24zm-.779.715l-34.373 10.02 23.095-25.316zm-19.708 39.3l-24.5-5.8 8.283-21.265zm-17.462 27.9l-15.508-6.786 7.7-24.594zm-8.647 13.562l-13.34 4.878 5.947-23.247zm23.993 42.645l-29.346-18.185 6.214-22.78zm29.881 10.911l-27.761 4.4-.12-13.071zm-3.533-21.4l32.643 21.349-26.4-.3zm41.312-6.184l18.949 16.777-25.088 10.426zm37.1 2.1l10.014 27.752-26.259-13.032zm.893-.628l22.354-9.475-12.316 37.3zm24.615-39.581l26.558 11.822-27.4 16.4zm17.784-23.472l17.364 12.359-7.411 21.156zm-.2-1.43l10.437-14.061 6.878 26.384zm-6.964-29.288l4.846-15.025 11.542 27.452zm-.728-1.173l-11.043-21.415 15.9 6.355zm-32.714-34.118l23.122-1.51-2.911 12.418zm-45.783.4l16.28-20.189 26.09 18.9zm-.962-.484l-8.382-21.953 24.5 1.973zm-1.087.1l-21.413-8.68 13.126-13.023zm-48.106 3.674l9.207-26.556 15.628 14.26zm-24.7 26.331l6.742-27.593 16 2.662zm-10.006 23.548l-8.646-13.568 16.7
07-7.128zm-.462 1.234l-7.39 23.589-.993-36.745zm-8.509 27.283l-6.027 23.556-9.462-23.533zm-15.73-1.026l.5-23.126 14.936 23.1zm23.825 21.706l-5.99 21.956-7.32-17.089zm24.036 42.707l-18.187 2.576L169.087 300zm.988.921l.118 12.883-18-10.35zm30.333 9.621l-9.207 19.271-19.185-14.764zm1.073.195l24.328 22.457-33.612-3.023zm1.193-.33l26.648.3-2.431 22.053zm53.542-10.568l1.017 24.914-26.117-14.489zm1.058.091l26.356 13.081-25.34 11.845zm40.876-25.533l13.084 20.459-25.416 16.889zm.911-.528l25.192 3.7-12.261 16.518zm.469-.993l26.946-16.13-1.753 19.832zm35.589-38.438l4.758 16.645-11.94 3.857zm-6.331-28.306l13.647 17.186-7.011 8.27zm-12.77-31.3l17.724 12.98-6.091 14.675zm-18.269-8.925l2.857-12.184 12.765 18.428zm-22.6-12.337l-3.076-18.616 26.658 17.076zm-1.17-.621l-25.4-18.412 22.342-.138zm-51.684-21.438l16.587-10.179 7.116 12.089zm-15.927 13.822L219.6 149.031l28.41 1.069zm-27.013 13.342L192 173.731l24.995-23.436zM183.2 203.211l-16.318-13.247 23.158-14.743zm-.693.791l-16.861 7.198.822-20.214zm-16
.868 47.942l-15.149-23.433 14.1-15.2zm-6.563 27.681L156.2 293.96l-5.674-35.6zm.73 1.714l7.1 16.572-10.138-1.421zm18.42 38.807l-10.7-2.059.681-17.5zm20.217 12.395l-7.6 7.31L180.63 322.3zm.907.586l18.258 14.053-25.846-6.757zm59.579-4.375L285 343.209l-28.5 7.657zm53.9 2.845l-1.427 18.18-23.502-6.524zm26.153-17.21l-14.469 25.343-10.221-8.93zm14.288-17.917l.08 13.271-11.58 2.211zm2.9-22.6l11.774-3.8-13.433 22.574zm8.168-23.331l6.685-7.885-2.181 23.639zm-7.5-29.057l6-14.454 7.777 31.805zm-12.763-30.632l4.216-7.362L361 203.245zm-.732-.838l-12.472-18 16.689 10.641zm-41.849-38.064l12.626-1.348 12.773 17.613zm-25.638-.74l-6.956-11.814 28.43 11.681zm-26.428-2.324l-5.6-9.808 21.937-.218zm-1.114.172l-27.631-1.035 22.013-8.8zm-55.843 22.789l9.894-21.422 14.349-1.309zm-1.778 1.339l-9.044-8.687 19.088-13.059zm-.678.807l-22.487 14.316 13.409-23.036zm-25.421 37.155l-11.286-6.068 12.09-13.706zm-.356 1l-13.707 14.774 2.38-20.862zm-15.488 41.43l-5.795 4.742 6.241-25.143zm.145 1.239l5.916 37.113-12.123-3
2.028zm18.317 44.2l-.679 17.44-9.472-18.863zm11.639 22.32l9.621 16.538-19.8-18.5zm40.585 27.409l-.419 9.58-25.251-16.292zm1.036.409l13.1 6.127-13.516 3.306zm34.9 3.048l.407 13.437-19.045-9.965zm30.1-8.035l-7.725 18.189-20.43-10.625zm1.21-.157l23.492 6.518-31.2 11.637zm27.182-12.185l9.954 8.7-11.318 8.785zm27.01-18.633L352.355 311l-25.148 26.135zm13.513-5.071l-.079-12.935 10.585-6.468zm.93-14.783l12.849-21.592-2.356 15.185zm16.385-46.629l1.5 15.876-3.395 4.69zm-7.8-39.771l2.936 2.753 2.937 21.265zm-14.882-24.255l2.763-1.386 7.987 18.1zm-19.32-12.67l4.849-6.942 11.869 17.6zm-.753-.759L316.3 151.821l17.5 10.479zM300.472 151l-.078-7.579 12.177 6.291zm-1.055-.205l-27.832-11.435 27.752 3.654zm-55.054-12.775l4.431-3.8 14.693 3.612zm-24.2 9.076l8.616-9.281 11.914 1.071zm-2.226.851l-13.047 1.19 21.422-10.211zm-35.88 14.994l1.443-3.228 11.974-5.951zM166.34 188.25l-.87-8.444 13.03-12.434zm-.905 1.487l-10.8 12.244 9.951-20.485zm-16.09 38.27l-6.9 1.283 9.107-20.678zm-.229 1.111l-6.6 26.572-.419-
25.267zm5.832 66.152l-7.839-6.451-3.754-24.183zm10.991 22.352l-5.007-1.649-3.349-14.994zm21.4 20.632l-16.633-9.054-2.67-8.975zm3.034 2.848l7.2 9.181-22.015-17.245zm2.694 1.73l22.9 14.774-14.985-4.684zm42.013 13.16l17.8 9.311-30.938-6.1zm21.356-3.54l19.923 10.361-19.515 3.095zm52.882-.483l-8.088 6.977-18.2 2.826zm14.949-10.458l.673 4.353-10.454 3.236zm27.127-28l-10.754 19.1-13.682 6.293zm3-3.184l7.2-13.3-7.7 18.243zm15.219-40.987l2.719-3.755-4.371 14.37zm2.615-28.34v-.032l-.039-.279.271-3.56.276 9.219zm-.723-5.242l-2.72-19.7 3.368 11.179zm-8.092-30.726l-4.965-11.251 6.948 13.109zm-14.97-23.232l-9.915-14.7 12.649 13.332zm-33.121-31.789l.663-.479 7.622 5.442zm-1-.574l-5.154-2.663 5.727 2.248zM270.816 138.2l9.658-1.985 14.533 5.17zm-3.151-.425l-13.151-3.232 22.051 1.4zm-24.913.241l-10.258-.922 14.352-2.59zm-36.2 9.164l5.869-4.4 9.461-2.908zm-4.817 2.3l-5.091 2.53 7.827-4.58zm-21.356 14.64l-6.039 5.766 6.905-7.7zm-28.285 40.688l-2.685 1 10.431-16.942zm-3.5 2.416l2.9-1.073-7.327 16.636zm-
7.215 43.167l.154 9.26-.533 1.683zm.5 11.626l2.642 17.019-3.642-13.886zm13.782 35.206l3.393 15.19-10.823-21.313zm10.886 21.707l2.355 7.919-7.002-9.449zm52.607 40.775l.983 1.567-10.288-4.472zm2.643 2.234l-1.208-1.926 22.392 4.412zm54.851 1.892L274.3 366.5l-12.292-.342zm1.631-.258l14.653-2.275-16.831 4.74zm33.857-12.65l8.593-2.658-15.153 8.317zm13.765-5.7l-.675-4.361 12.557-5.775zm27.2-32.6l-.588 5.86-8.258 9.852zm13.6-24.986l2.122-1.022-9.712 19.012zm2.826-2.527l-2.382 1.147 4.788-15.743z" fill="url(#a)"/><path d="M374.274 262.764v-.055l-1.064-35.547v-.04c0-.013 0-.025-.006-.037s-.006-.032-.01-.047v-.011l-5.345-17.738v-.011l-.011-.029c0-.013-.01-.026-.016-.038l-.007-.016-15.293-28.856-.009-.014-.019-.03-.017-.025-.011-.015-.016-.018-.011-.014-17.503-18.443-.008-.007-.012-.012c-.01-.01-.022-.018-.033-.027l-.023-.02-18.565-13.253h-.009l-.017-.012a.36.36 0 00-.039-.02.3.3 0 00-.04-.02h-.008l-16.113-6.324h-.025l-19.343-6.88h-.018l-.037-.01-.034-.007h-.054l-31.855-2.027h-.055a.455.455 0 0
0-.052 0h-.02l-20.087 3.625h-.043l-.036.01-16.372 5.033-.036.014c-.014.006-.029.012-.042.019l-.021.01h-.007l-29.082 17.021h-.006l-.024.016-.023.015-.019.017-.018.014-.02.022-.016.014-.007.008-18.169 20.268-.007.01-.013.015-.012.017-.016.023-.008.01-.006.01-16.772 27.198-.008.016-.016.028-.014.033c0 .013-.01.025-.014.038l-.006.016-6.593 23.165v.076a.26.26 0 00-.005.039v.01l-1.232 35.146v.087a.3.3 0 00.008.043v.036l6.281 23.948v.01l.006.018a.521.521 0 00.02.05c0 .008.006.017.01.025l13.86 27.274.009.013a.492.492 0 00.028.045l.007.013 9.772 13.169.012.015c.009.011.02.02.029.03a.25.25 0 00.022.024l13.52 12.4c.011.01.022.017.034.026l.027.022 16.885 11.422.012.006.04.024.022.01h.007l20.822 9.056.021.007a.353.353 0 00.046.015l.024.007.037.007h.021l34.846 4.091h.047l18.195.506h.019a.569.569 0 00.1-.01l.022-.007h.015l26.929-7.585.016-.006.023-.006.021-.01.015-.007.032-.014.011-.006 24.056-13.2h.007l.01-.006a.348.348 0 00.039-.028l.032-.022 15.486-13.21.016-.017.02-.018.02-.022h.006l12.006-14.
323.005-.007a.531.531 0 00.042-.063l.015-.022v-.006l17.012-33.221c0-.007.006-.016.01-.024l.017-.039v-.019a.3.3 0 00.011-.043c0-.009.006-.018.008-.028l3.747-22.727v-.039zM184.111 341.54l-3.5-3.212 7.877 6.171zm51.108 13.348l-12.307-5.754 29.13 2.62zm4.488-104.781l-32.312 3.4 19.926-33.476zm-11.278-30.148l39.477 19.772-27.152 10.154zM240 251.131l3.756 29.784-35.947-26.4zm3.285 30.742L204.24 294.16l2.627-39.03zm-2.161-30.245l30.265 20.1-26.518 9.62zm.482-.941l27.156-10.155 3.147 30.275zm41.723-34.975l25.171-11.883-2.838 28.271zm21.471 17.056l-34.6 6.32 12.286-22.688zm-35.583 5.932l-22.539-41.385L281.6 215.83zm-1.263-.118l-39.735-19.9 17.081-21.699zM206.6 252.791l-5.063-19.328 24.445-13.233zm-3.35 40.409l-19.312-31.688 21.892-6.65zm39.432-10.038l-19.646 20.985-17.987-9.142zm29.089-10.46l-7.007 25.234-19.279-15.7zm-1.9-31.718l29.206 23.037-26.067 7.169zm.586-.877l34.978-6.389-5.573 29.582zm36.241-7.785l2.802-27.952 16.159 21.946zm19.317-5.018l.894 32.012-19.941-25.976zm-43.154-12.532l.67
1-23.76 24.368 11.937zm-1.053-.021l-34.786-18.446 35.463-5.509zm-54.17 2.962l-6.519-23.722 23.259 2.46zm-.849.882l-24.674 13.357 18.153-37.084zm-21.02 35.188l-21.429 6.509 16.377-25.792zm-3.881 39.205l-26.755-18.954 7.981-11.852zm2.16 2.687l17.98 9.139-22.117 12.216zm40.435-12.9l19.309 15.725-39.239 5.564zm28.339-9.924l28.5 27.556-35.584-2.045zm.756-.731l26.158-7.195 2.35 34.759zm32.816-37.805l20.109 26.2-25.634 3.129zm20.68-6.81l16.983 9.6-16.094 22.253zm.179-1.106l10.517-17.3 6.272 26.791zm-.773-.753l-16.174-21.965 26.83 4.433zm-42.523-35.6l19-17.195 5.454 29.168zm-37.587 5.3l12.052-21.386 23.217 15.907zm-25.159-2.4l13.662-27.779 9.758 30.256zM200.873 232.1l-16.558-27.64 35.1-10.23zm-17.522 27.79l-8.009-32.208 24.739 5.857zm-8.823 13.161l-7.344-18.251 15.164 6.635zm28.554 22.073l-4.147 21.4-22.911-40.574zm19.749 10.449l6.283 21.217-28.6-8.892zm41.544-6.092l-6.229 27.573-33.54-21.933zm37.046 1.988l-16.125 14.6-18.757-16.607zm-.582-35.841l24.827 25.086-22.487 9.531zm.507-.983l25.59-
3.124-.841 28.131zm43.281-26.531l10.222 34.42-26.563-11.824zm-5.793-29.086l16.672 12.642-10.425 14.045zm-28.7-6.435l15.475-17.727 11.434 22.173zm-.7-.8l-5.416-28.972 20.874 11.266zm-26.45-12.279l-23.114-15.836 42.017-1.275zm-37.472 5.211l-9.691-30.046 21.673 8.785zm-25.2-2.344l-11.222-15.213 24.724-12.24zm-.779.715l-34.373 10.02 23.095-25.316zm-19.708 39.3l-24.5-5.8 8.283-21.265zm-17.462 27.9l-15.508-6.786 7.7-24.594zm-8.647 13.562l-13.34 4.878 5.947-23.247zm23.993 42.645l-29.346-18.185 6.214-22.78zm29.881 10.911l-27.761 4.4-.12-13.071zm-3.533-21.4l32.643 21.349-26.4-.3zm41.312-6.184l18.949 16.777-25.088 10.426zm37.1 2.1l10.014 27.752-26.259-13.032zm.893-.628l22.354-9.475-12.316 37.3zm24.615-39.581l26.558 11.822-27.4 16.4zm17.784-23.472l17.364 12.359-7.411 21.156zm-.2-1.43l10.437-14.061 6.878 26.384zm-6.964-29.288l4.846-15.025 11.542 27.452zm-.728-1.173l-11.043-21.415 15.9 6.355zm-32.714-34.118l23.122-1.51-2.911 12.418zm-45.783.4l16.28-20.189 26.09 18.9zm-.962-.484l-8.382-21.953 24.
5 1.973zm-1.087.1l-21.413-8.68 13.126-13.023zm-48.106 3.674l9.207-26.556 15.628 14.26zm-24.7 26.331l6.742-27.593 16 2.662zm-10.006 23.548l-8.646-13.568 16.707-7.128zm-.462 1.234l-7.39 23.589-.993-36.745zm-8.509 27.283l-6.027 23.556-9.462-23.533zm-15.73-1.026l.5-23.126 14.936 23.1zm23.825 21.706l-5.99 21.956-7.32-17.089zm24.036 42.707l-18.187 2.576L169.087 300zm.988.921l.118 12.883-18-10.35zm30.333 9.621l-9.207 19.271-19.185-14.764zm1.073.195l24.328 22.457-33.612-3.023zm1.193-.33l26.648.3-2.431 22.053zm53.542-10.568l1.017 24.914-26.117-14.489zm1.058.091l26.356 13.081-25.34 11.845zm40.876-25.533l13.084 20.459-25.416 16.889zm.911-.528l25.192 3.7-12.261 16.518zm.469-.993l26.946-16.13-1.753 19.832zm35.589-38.438l4.758 16.645-11.94 3.857zm-6.331-28.306l13.647 17.186-7.011 8.27zm-12.77-31.3l17.724 12.98-6.091 14.675zm-18.269-8.925l2.857-12.184 12.765 18.428zm-22.6-12.337l-3.076-18.616 26.658 17.076zm-1.17-.621l-25.4-18.412 22.342-.138zm-51.684-21.438l16.587-10.179 7.116 12.089zm-15.927 13.
822L219.6 149.031l28.41 1.069zm-27.013 13.342L192 173.731l24.995-23.436zM183.2 203.211l-16.318-13.247 23.158-14.743zm-.693.791l-16.861 7.198.822-20.214zm-16.868 47.942l-15.149-23.433 14.1-15.2zm-6.563 27.681L156.2 293.96l-5.674-35.6zm.73 1.714l7.1 16.572-10.138-1.421zm18.42 38.807l-10.7-2.059.681-17.5zm20.217 12.395l-7.6 7.31L180.63 322.3zm.907.586l18.258 14.053-25.846-6.757zm59.579-4.375L285 343.209l-28.5 7.657zm53.9 2.845l-1.427 18.18-23.502-6.524zm26.153-17.21l-14.469 25.343-10.221-8.93zm14.288-17.917l.08 13.271-11.58 2.211zm2.9-22.6l11.774-3.8-13.433 22.574zm8.168-23.331l6.685-7.885-2.181 23.639zm-7.5-29.057l6-14.454 7.777 31.805zm-12.763-30.632l4.216-7.362L361 203.245zm-.732-.838l-12.472-18 16.689 10.641zm-41.849-38.064l12.626-1.348 12.773 17.613zm-25.638-.74l-6.956-11.814 28.43 11.681zm-26.428-2.324l-5.6-9.808 21.937-.218zm-1.114.172l-27.631-1.035 22.013-8.8zm-55.843 22.789l9.894-21.422 14.349-1.309zm-1.778 1.339l-9.044-8.687 19.088-13.059zm-.678.807l-22.487 14.316 13.409-23.0
36zm-25.421 37.155l-11.286-6.068 12.09-13.706zm-.356 1l-13.707 14.774 2.38-20.862zm-15.488 41.43l-5.795 4.742 6.241-25.143zm.145 1.239l5.916 37.113-12.123-32.028zm18.317 44.2l-.679 17.44-9.472-18.863zm11.639 22.32l9.621 16.538-19.8-18.5zm40.585 27.409l-.419 9.58-25.251-16.292zm1.036.409l13.1 6.127-13.516 3.306zm34.9 3.048l.407 13.437-19.045-9.965zm30.1-8.035l-7.725 18.189-20.43-10.625zm1.21-.157l23.492 6.518-31.2 11.637zm27.182-12.185l9.954 8.7-11.318 8.785zm27.01-18.633L352.355 311l-25.148 26.135zm13.513-5.071l-.079-12.935 10.585-6.468zm.93-14.783l12.849-21.592-2.356 15.185zm16.385-46.629l1.5 15.876-3.395 4.69zm-7.8-39.771l2.936 2.753 2.937 21.265zm-14.882-24.255l2.763-1.386 7.987 18.1zm-19.32-12.67l4.849-6.942 11.869 17.6zm-.753-.759L316.3 151.821l17.5 10.479zM300.472 151l-.078-7.579 12.177 6.291zm-1.055-.205l-27.832-11.435 27.752 3.654zm-55.054-12.775l4.431-3.8 14.693 3.612zm-24.2 9.076l8.616-9.281 11.914 1.071zm-2.226.851l-13.047 1.19 21.422-10.211zm-35.88 14.994l1.443-3.228 11.
974-5.951zM166.34 188.25l-.87-8.444 13.03-12.434zm-.905 1.487l-10.8 12.244 9.951-20.485zm-16.09 38.27l-6.9 1.283 9.107-20.678zm-.229 1.111l-6.6 26.572-.419-25.267zm5.832 66.152l-7.839-6.451-3.754-24.183zm10.991 22.352l-5.007-1.649-3.349-14.994zm21.4 20.632l-16.633-9.054-2.67-8.975zm3.034 2.848l7.2 9.181-22.015-17.245zm2.694 1.73l22.9 14.774-14.985-4.684zm42.013 13.16l17.8 9.311-30.938-6.1zm21.356-3.54l19.923 10.361-19.515 3.095zm52.882-.483l-8.088 6.977-18.2 2.826zm14.949-10.458l.673 4.353-10.454 3.236zm27.127-28l-10.754 19.1-13.682 6.293zm3-3.184l7.2-13.3-7.7 18.243zm15.219-40.987l2.719-3.755-4.371 14.37zm2.615-28.34v-.032l-.039-.279.271-3.56.276 9.219zm-.723-5.242l-2.72-19.7 3.368 11.179zm-8.092-30.726l-4.965-11.251 6.948 13.109zm-14.97-23.232l-9.915-14.7 12.649 13.332zm-33.121-31.789l.663-.479 7.622 5.442zm-1-.574l-5.154-2.663 5.727 2.248zM270.816 138.2l9.658-1.985 14.533 5.17zm-3.151-.425l-13.151-3.232 22.051 1.4zm-24.913.241l-10.258-.922 14.352-2.59zm-36.2 9.164l5.869-4.4 9.461
-2.908zm-4.817 2.3l-5.091 2.53 7.827-4.58zm-21.356 14.64l-6.039 5.766 6.905-7.7zm-28.285 40.688l-2.685 1 10.431-16.942zm-3.5 2.416l2.9-1.073-7.327 16.636zm-7.215 43.167l.154 9.26-.533 1.683zm.5 11.626l2.642 17.019-3.642-13.886zm13.782 35.206l3.393 15.19-10.823-21.313zm10.886 21.707l2.355 7.919-7.002-9.449zm52.607 40.775l.983 1.567-10.288-4.472zm2.643 2.234l-1.208-1.926 22.392 4.412zm54.851 1.892L274.3 366.5l-12.292-.342zm1.631-.258l14.653-2.275-16.831 4.74zm33.857-12.65l8.593-2.658-15.153 8.317zm13.765-5.7l-.675-4.361 12.557-5.775zm27.2-32.6l-.588 5.86-8.258 9.852zm13.6-24.986l2.122-1.022-9.712 19.012zm2.826-2.527l-2.382 1.147 4.788-15.743z" fill="url(#b)"/><path d="M478.979 166.36c-10.457-25.124-31.636-52.248-48.267-60.82 13.536 26.5 21.369 53.092 24.363 72.934 0-.057.011.049.036.226.012.086.027.174.04.26 22.7 61.468 10.334 123.975-7.487 162.171-27.572 59.1-94.325 119.668-198.808 116.713-112.89-3.192-212.335-86.853-230.9-196.43-3.382-17.279 0-26.053 1.7-40.083-2.074 10.816-2.863 13
.94-3.9 33.157 0 .41-.025.816-.025 1.227C15.732 388.421 123.453 496 256.335 496a240.565 240.565 0 00237.156-199.626c.408-3.076.734-6.168 1.094-9.27 4.783-41.21-.531-84.524-15.606-120.744z" fill="url(#c)"/><path d="M478.979 166.36c-10.457-25.124-31.636-52.248-48.267-60.82 13.536 26.5 21.369 53.092 24.363 72.934 0-.057.011.049.036.226.012.086.027.174.04.26 22.7 61.468 10.334 123.975-7.487 162.171-27.572 59.1-94.325 119.668-198.808 116.713-112.89-3.192-212.335-86.853-230.9-196.43-3.382-17.279 0-26.053 1.7-40.083-2.074 10.816-2.863 13.94-3.9 33.157 0 .41-.025.816-.025 1.227C15.732 388.421 123.453 496 256.335 496a240.565 240.565 0 00237.156-199.626c.408-3.076.734-6.168 1.094-9.27 4.783-41.21-.531-84.524-15.606-120.744z" fill="url(#d)"/><path d="M17.957 261.414c18.564 109.577 118.009 193.238 230.9 196.43 104.483 2.955 171.236-57.618 198.808-116.713 17.821-38.2 30.188-100.7 7.487-162.171l-.008-.026-.032-.234c-.025-.177-.041-.283-.036-.226 0 .04.015.136.047.4 8.533 55.66-19.813 109.581-64.1
26 146.04-.079.189-.133.313-.133.313-86.345 70.222-168.97 42.368-185.7 30.966a137.192 137.192 0 01-3.5-1.743c-50.34-24.029-71.137-69.837-66.678-109.122-42.506 0-57-35.808-57-35.808s38.163-27.179 88.461-3.541c46.583 21.893 90.332 3.543 90.337 3.541-.09-1.952-41.965-18.589-58.291-34.655-8.723-8.585-12.865-12.723-16.533-15.828a71.492 71.492 0 00-6.232-4.7 281.912 281.912 0 00-4.987-3.3c-17.548-11.392-52.448-10.764-53.6-10.735h-.112c-9.538-12.066-8.865-51.871-8.321-60.182-.115-.516-7.116 3.63-8.033 4.254A175.239 175.239 0 0077.156 104.5a210.379 210.379 0 00-22.469 26.912c0 .012-.007.025-.011.037 0-.012.007-.025.011-.038a202.707 202.707 0 00-32.284 72.8c-.116.527-8.661 37.847-4.446 57.203z" fill="url(#e)"/><path d="M341.214 166.593a130.73 130.73 0 0122.336 29.112c1.325.994 2.561 1.985 3.612 2.952 54.545 50.2 25.967 121.2 23.834 126.257 44.313-36.459 72.659-90.38 64.126-146.04-27.207-67.731-73.339-95.043-111.015-154.509-1.905-3.007-3.809-6.022-5.667-9.2a73.154 73.154 0 01-2.649-4.971A43.7
4 43.74 0 01332.2.688a.627.627 0 00-.546-.645.822.822 0 00-.452 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1-9.306 4.428-64.484 91.692 10.308 166.385z" fill="url(#f)"/><path d="M248.657 133.645l31.855 2.027 19.347 6.882 16.124 6.329 18.57 13.258 17.493 18.437 6.077 11.467c.816.5 2.5 1.586 3.932 2.558.525.368 1 .735 1.5 1.1a130.73 130.73 0 00-22.336-29.112C266.422 91.9 321.6 4.636 330.908.2c.027-.036.083-.117.1-.136-60.44 35.356-80.944 100.759-82.828 133.482l-.009.183z" fill="url(#g)"/><path d="M170.74 151.043a243.329 243.329 0 014.987 3.3 111.208 111.208 0 01-.675-58.731c-24.716 11.241-43.941 29.01-57.916 44.7 1.156-.033 36.056-.661 53.604 10.731z" fill="url(#h)"/><path d="M148.32 277.45s11.11-41.34 79.53-41.34c7.4 0 28.54-20.61 28.93-26.59 0 0-43.75 18.35-90.33-3.54-50.3-23.64-88.45 3.54-88.45 3.54s14.5 35.81 57 35.81c-4.45 39.28 16.34 85.09 66.68 109.12 1.13.54 2.19 1.12 3.34 1.64-29.4-15.17-53.66-43.83-56.7-78.64z" fill="url(#i)"/><path d="M367.162 198.657c-1.051-.967-2.2
87-1.958-3.612-2.952-.49-.367-.97-.734-1.5-1.1-12.847-9.014-35.851-17.917-58.014-14.067 86.541 43.213 63.308 192.023-56.611 186.4a106.974 106.974 0 01-31.307-6.03 133.003 133.003 0 01-7.067-2.886c-1.358-.619-2.714-1.243-4.055-1.936.048.034.114.071.163.1 16.729 11.4 99.354 39.256 185.7-30.966 0 0 .054-.124.133-.313 2.137-5.048 30.715-76.05-23.83-126.25z" fill="url(#j)"/><path d="M478.959 166.35c-10.457-25.124-31.637-52.248-48.268-60.82 13.536 26.5 21.37 53.092 24.364 72.934 0 .04.015.136.047.4-27.202-67.731-73.34-95.043-111.015-154.509-1.9-3.008-3.809-6.022-5.668-9.2a73.11 73.11 0 01-2.648-4.971 43.755 43.755 0 01-3.589-9.5.626.626 0 00-.547-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1.026-.036.083-.117.1-.136-60.44 35.356-80.933 100.952-82.817 133.675l.488-.088 31.855 2.027 17.928 6.377 17.543 6.834 18.57 13.258 17.472 18.427s6.014 11.287 6.1 11.477c-13.944-8.293-34.208-14.975-54.1-11.519 86.541 43.213 63.308 192.023-56.611 186.4A106.936 106.936 0 0121
6.1 360.9a131.807 131.807 0 01-7.067-2.885c-1.358-.619-2.714-1.244-4.055-1.936.048.034.114.071.163.105a137.192 137.192 0 01-3.5-1.743c1.125.537 2.183 1.123 3.338 1.638-29.384-15.167-53.646-43.832-56.677-78.641 0 0 11.106-41.334 79.524-41.334 7.4 0 28.542-20.614 28.935-26.593-.09-1.952-41.966-18.589-58.291-34.655-8.723-8.585-12.865-12.723-16.533-15.828a71.492 71.492 0 00-6.232-4.7 111.208 111.208 0 01-.675-58.731c-24.716 11.241-43.941 29.01-57.917 44.7h-.111c-9.538-12.066-8.865-51.871-8.322-60.182-.114-.516-7.115 3.63-8.033 4.254a175.3 175.3 0 00-23.513 20.12A210.463 210.463 0 0054.666 131.4a.259.259 0 01-.011.037.272.272 0 00.011-.038 202.724 202.724 0 00-32.284 72.8c-.115.521-.212 1.061-.325 1.586-.452 2.116-2.488 12.852-2.772 15.156-.022.176.021-.177 0 0a279.127 279.127 0 00-3.548 33.529c0 .41-.026.816-.026 1.227 0 132.705 107.722 240.285 240.6 240.285a240.568 240.568 0 00237.16-199.618c.408-3.076.734-6.168 1.094-9.27 4.782-41.21-.531-84.524-15.606-120.744zm-23.868 12.34c.012.086.
027.174.04.26l-.009-.026c-.011-.083-.022-.157-.031-.234z" fill="url(#k)"/><path d="M256.78 209.522s-1.02.427-2.9 1.071c-4.7 7.943-21.409 23.1-27.8 23.075-68.418-.3-79.7 40.587-79.7 40.587a87.34 87.34 0 0013.4 39.263 88.025 88.025 0 01-11.456-36.069s11.106-41.334 79.525-41.334c7.4 0 28.541-20.614 28.935-26.593z" fill="url(#l)"/><path d="M455.152 178.958l-.009-.024c-.012-.082-.021-.157-.033-.233a2.116 2.116 0 00-.033-.227 5.804 5.804 0 00.045.4 239.04 239.04 0 00-5.168-11.9c-.612-1.314-1.269-2.543-1.9-3.826-1.2-2.465-2.4-4.935-3.657-7.293-.775-1.456-1.59-2.837-2.383-4.254-1.163-2.076-2.316-4.165-3.515-6.166-.879-1.463-1.787-2.864-2.68-4.29-1.169-1.862-2.334-3.73-3.533-5.534-.948-1.429-1.92-2.813-2.886-4.208-1.193-1.723-2.386-3.448-3.6-5.128-1.008-1.387-2.032-2.743-3.052-4.1a349.149 349.149 0 00-3.673-4.825q-1.589-2.034-3.2-4.033a486.632 486.632 0 00-3.751-4.619q-1.644-1.989-3.307-3.963c-.6-.714-1.2-1.447-1.8-2.159.26.309.511.63.769.942-20.846-24.591-43.47-47.254-63.674-79.15-1.908-3.0
06-3.812-6.021-5.668-9.2a72.064 72.064 0 01-2.649-4.971 49.1 49.1 0 01-3.31-8.434c-.042-.155-.118-.391-.145-.509-.082-.318-.133-.56-.133-.56a.63.63 0 00-.548-.645.847.847 0 00-.451 0c-.034.012-.085.052-.122.067s-.118.067-.175.094a7.406 7.406 0 00-1.46 1.072 17.267 17.267 0 00-.348.311A25.044 25.044 0 00327.2 3.6c-.024.027-.043.042-.067.069.006-.006.012-.006.018-.012-14.415 16.944-51.226 90.584 8.1 156.635-55.543-65.345-20.542-135.964-5.33-154.464a53.657 53.657 0 002.964 7.268 74.305 74.305 0 002.649 4.971c1.856 3.182 3.761 6.2 5.668 9.2 37.675 59.466 83.806 86.779 111.013 154.51a9.121 9.121 0 01-.045-.4 1.707 1.707 0 01.033.227c.012.076.021.152.033.233l.01.025c22.7 61.47 10.333 123.975-7.488 162.171a199.358 199.358 0 01-38.217 54.8 199.8 199.8 0 0041.124-57.7c17.821-38.199 30.186-100.704 7.487-162.175z" fill="url(#m)"/><path d="M330.908.2c.027-.036.083-.117.1-.136-54.445 31.849-76.48 88.075-81.693 122.836 5.988-32.116 26.574-81.173 72.71-112.144 3.797-5.996 7.143-9.723 8.883-10.556z
" fill="url(#n)"/><path d="M390.863 325.227s.054-.124.133-.313c2.133-5.055 30.711-76.057-23.834-126.257-1.051-.967-2.287-1.958-3.612-2.952-.49-.367-.97-.734-1.5-1.1-12.415-8.711-34.316-17.316-55.776-14.41l-.052.006q-1.093.15-2.186.337c85.565 42.726 63.813 188.673-52.595 186.529.316.015.633.04.948.053 118.009 4.618 141.259-140.089 59.271-185.457 17.768-.174 34.954 6.314 45.567 13.158.539.347 1.034.694 1.537 1.042 1.363.941 2.637 1.883 3.725 2.809 56.473 48.028 30.696 120.09 28.763 125.228a72.283 72.283 0 01-.12.318" fill="url(#o)"/><path d="M167.09 208.38c39.38 17.06 75.93 6.22 87 2.14-10.2 3.52-47.89 14.14-87.64-4.54-45.22-21.25-80.62-1.44-87.32 2.78l-.32.2-.26.17-.2.13-.13.08-.09.06.12.26.14.31v.06l.21.45c.34.72.86 1.75 1.58 3 5.34 9.45 21.43 31.63 54.89 31.63-4.32 38.11 15.12 82.35 62.24 106.9-45-26-64-73-58.7-110.49-34.76-.92-50.31-21.76-54.75-30.59 12.64-6.7 44.73-19.23 83.23-2.55z" fill="url(#p)"/><path d="M175.69 154.205q-.568-.333-1.176-.684.628.42 1.213.818c-.013-.045-.027-.
089-.037-.134zm-.247-.882a111.35 111.35 0 01-.391-57.715c-23.43 10.656-41.917 27.176-55.684 42.233 13.11-12.77 30.093-26.473 50.778-35.862-1.28 9.821-2.383 29.926 5.297 51.344z" fill="url(#q)"/><path d="M23.758 286.6c-.067-.229-.126-.459-.191-.689a220.739 220.739 0 01-5.61-24.5c-1.836-8.43-1.25-20.266 0-30.987-.929 5.565-1.511 11.221-2.2 24.061 0 .41-.025.816-.025 1.227C15.732 360.731 83.2 450 177.2 482.683 95.716 451.478 35.35 376.8 23.758 286.6z" fill="url(#r)"/><path d="M21.832 262.383c-4.214-19.356 4.331-56.676 4.446-57.2a202.7 202.7 0 0132.284-72.8l-.011.038c0-.012.007-.025.011-.037a210.463 210.463 0 0122.47-26.912 175.229 175.229 0 0123.513-20.12 29.207 29.207 0 011.015-.634c-.083 18.28.954 49.124 9.423 59.237h.111c1.16-.06 36.177-1.605 54.092 9.322a273.279 273.279 0 015.092 3.164 71.848 71.848 0 016.378 4.532c3.764 3.008 8.03 7.036 17.012 15.389 13 12.091 41.356 24.121 53.6 29.852-11.929-6.009-40.077-18.848-52.774-31.343-8.723-8.585-12.865-12.723-16.533-15.828a71.492 71.492 0
00-6.232-4.7 281.912 281.912 0 00-4.987-3.3c-17.548-11.392-52.448-10.765-53.6-10.735h-.112c-8.718-11.028-8.905-45.214-8.458-57.362.018-.468.036-.9.054-1.3l.021-.429a119.792 119.792 0 01.018-.356c.015-.262.029-.515.044-.734-.007-.031-.042-.043-.095-.042-.018 0-.048.009-.071.012a1.022 1.022 0 00-.151.034c-.039.011-.087.03-.132.046a4.265 4.265 0 00-.39.157l-.234.106a16.595 16.595 0 00-.495.24l-.3.151-.245.128-.359.188-.2.109c-2.121 1.141-4.813 2.754-5.358 3.125A175.239 175.239 0 0077.156 104.5a210.379 210.379 0 00-22.469 26.912c0 .012-.007.025-.011.037 0-.012.007-.025.011-.038a202.707 202.707 0 00-32.284 72.8c-.116.521-8.661 37.841-4.446 57.2 15.8 93.251 90.176 167.72 181.563 189.812-89.608-23.234-162.113-96.911-177.688-188.84z" fill="url(#s)"/><path d="M478.979 166.36c-9.226-22.167-26.8-45.883-42.231-57.048l-.425-.3q-.717-.508-1.428-.982-.27-.18-.54-.356-.675-.435-1.341-.834c-.172-.1-.345-.212-.517-.312a42.518 42.518 0 00-1.786-.986c.65 1.272 1.275 2.544 1.9 3.816a394.886 394.886 0 0
11.148 2.373c11.668 24.415 18.557 48.448 21.317 66.745 0 .04.015.136.047.4 8.533 55.66-19.813 109.581-64.126 146.04-.079.189-.133.313-.133.313-55.08 44.8-108.642 49.678-144.555 44.383 35.786 6.684 92.233 3.866 150.369-43.414l.133-.313c44.312-36.459 72.659-90.381 64.126-146.04a12.553 12.553 0 01-.047-.4c-2.451-16.242-8.159-37.005-17.57-58.54a159 159 0 0126.316 37.486c17.047 34.76 24.739 77.04 22.235 117.816-.188 3.07-.343 6.128-.58 9.174-13.068 112.5-106.967 202.843-225.783 209.5a245.659 245.659 0 01-47.5-1.93A242.635 242.635 0 00256.335 496c119 0 217.812-86.287 237.156-199.626.408-3.076.734-6.168 1.094-9.27 4.783-41.21-.531-84.524-15.606-120.744zm-23.828 12.6l-.008-.026-.032-.234c.012.086.027.174.04.26z" fill="url(#t)"/></svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="100%" x2="50%" y2="0%" id="linearGradient-1">
+ <stop stop-color="#420C5D" offset="0%"></stop>
+ <stop stop-color="#951AD1" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,29 C152.577777,29 256,131.974508 256,259 C256,386.025492 152.577777,489 25,489 L25,29 Z" id="path-2"></path>
+ <filter x="-18.2%" y="-7.4%" width="129.4%" height="114.8%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Assets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="icon_512x512">
+ <g id="Group">
+ <g id="tb_icon/Stable">
+ <g id="Stable">
+ <circle id="background" fill="#F2E4FF" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384
044,0 256,0 C114.60886,0 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.500000, 259.000000) scale(-1, 1) translate(-140.500000, -259.000000) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/devtools/client/themes/images/aboutdebugging-firefox-beta.svg b/devtools/client/themes/images/aboutdebugging-firefox-beta.svg
index 8ece78c5c1cd..9240dc6e84ca 100644
--- a/devtools/client/themes/images/aboutdebugging-firefox-beta.svg
+++ b/devtools/client/themes/images/aboutdebugging-firefox-beta.svg
@@ -1,4 +1,31 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512"><defs><radialGradient id="c" cx="87.4%" cy="-12.9%" r="128%" gradientTransform="matrix(.8 0 0 1 .178 .129)"><stop offset=".13" stop-color="#ffbd4f"/><stop offset=".28" stop-color="#ff980e"/><stop offset=".47" stop-color="#ff3750"/><stop offset=".78" stop-color="#eb0878"/><stop offset=".86" stop-color="#e50080"/></radialGradient><radialGradient id="d" cx="49%" cy="40%" r="128%" gradientTransform="matrix(.82 0 0 1 .088 0)"><stop offset=".3" stop-color="#960e18"/><stop offset=".35" stop-color="#b11927" stop-opacity=".74"/><stop offset=".43" stop-color="#db293d" stop-opacity=".34"/><stop offset=".5" stop-color="#f5334b" stop-opacity=".09"/><stop offset=".53" stop-color="#ff3750" stop-opacity="0"/></radialGradient><radialGradient id="e" cx="48%" cy="-12%" r="140%"><stop offset=".13" stop-color="#fff44f"/><stop offset=".53" stop-color="#ff980e"/></radialGradient><radialGradient id="f" cx="22.76%" cy="110.11%" r="100%"><stop
offset=".35" stop-color="#3a8ee6"/><stop offset=".67" stop-color="#9059ff"/><stop offset="1" stop-color="#c139e6"/></radialGradient><radialGradient id="g" cx="52%" cy="33%" r="59%" gradientTransform="scale(.9 1)"><stop offset=".21" stop-color="#9059ff" stop-opacity="0"/><stop offset=".97" stop-color="#6e008b" stop-opacity=".6"/></radialGradient><radialGradient id="h" cx="210%" cy="-100%" r="290%"><stop offset=".1" stop-color="#ffe226"/><stop offset=".79" stop-color="#ff7139"/></radialGradient><radialGradient id="i" cx="84%" cy="-41%" r="180%"><stop offset=".11" stop-color="#fff44f"/><stop offset=".46" stop-color="#ff980e"/><stop offset=".72" stop-color="#ff3647"/><stop offset=".9" stop-color="#e31587"/></radialGradient><radialGradient id="j" cx="16.1%" cy="-18.6%" r="348.8%" gradientTransform="matrix(.10453 .46743 -.99452 .04913 -.046 -.255)"><stop offset="0" stop-color="#fff44f"/><stop offset=".3" stop-color="#ff980e"/><stop offset=".57" stop-color="#ff3647"/><stop offset=".74" sto
p-color="#e31587"/></radialGradient><radialGradient id="k" cx="18.9%" cy="-42.5%" r="238.4%"><stop offset=".14" stop-color="#fff44f"/><stop offset=".48" stop-color="#ff980e"/><stop offset=".66" stop-color="#ff3647"/><stop offset=".9" stop-color="#e31587"/></radialGradient><radialGradient id="l" cx="159.3%" cy="-44.72%" r="313.1%"><stop offset=".09" stop-color="#fff44f"/><stop offset=".63" stop-color="#ff980e"/></radialGradient><linearGradient id="b" x1="87.25%" y1="15.5%" x2="9.4%" y2="93.1%"><stop offset=".05" stop-color="#fff44f"/><stop offset=".37" stop-color="#ff980e"/><stop offset=".53" stop-color="#ff3647"/><stop offset=".7" stop-color="#e31587"/></linearGradient><linearGradient id="m" x1="80%" y1="14%" x2="18%" y2="84%"><stop offset=".17" stop-color="#fff44f" stop-opacity=".8"/><stop offset=".6" stop-color="#fff44f" stop-opacity="0"/></linearGradient><linearGradient id="a" x1="446.053" y1="434.456" x2="385.267" y2="376.907" gradientUnits="userSpaceOnUse"><stop offset="0" stop
-color="#054096" stop-opacity=".5"/><stop offset=".054" stop-color="#0f3d9c" stop-opacity=".441"/><stop offset=".261" stop-color="#2f35b1" stop-opacity=".249"/><stop offset=".466" stop-color="#462fbf" stop-opacity=".111"/><stop offset=".669" stop-color="#542bc8" stop-opacity=".028"/><stop offset=".864" stop-color="#592acb" stop-opacity="0"/></linearGradient><linearGradient id="n" x1="280.371" y1="377.927" x2="499.809" y2="470.777" gradientUnits="userSpaceOnUse"><stop offset=".001" stop-color="#54ffbd"/><stop offset="1" stop-color="#0df"/></linearGradient><filter id="o" x="-1" y="-1" width="300%" height="300%"><feOffset result="offOut" in="SourceGraphic" dx="-4" dy="-4"/><feColorMatrix result="matrixOut" in="offOut" values=".01 0 0 0 0 0 0 0 0 0 0 .2 0 0 0 0 0 0 .2 0"/><feGaussianBlur result="blurOut" in="matrixOut" stdDeviation="8"/><feBlend in="SourceGraphic" in2="blurOut"/></filter></defs><path d="M450.683 326.634h-175.61a9.366 9.366 0 00-9.366 9.366v28.1a74.926 74.926 0 0074.927
74.926h97.171A56.2 56.2 0 00494 382.829v-24.585c0-14.044-14.049-31.61-43.317-31.61z" fill="#008787"/><path d="M450.683 326.634h-175.61a9.366 9.366 0 00-9.366 9.366v28.1a74.926 74.926 0 0074.927 74.926h97.171A56.2 56.2 0 00494 382.829v-24.585c0-14.044-14.049-31.61-43.317-31.61z" fill="url(#a)" opacity=".9"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0 .039.015.136.047.4C427.706 111.135 381.627 83.823 344 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.546-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484a120.249 120.249 0 00-66.142 25.488 71.355 71.355 0 00-6.225-4.7 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89 29.01-57.85 44.7h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0 00-23.486 20.12 210.478 210.478 0 00
-22.442 26.913c0 .012-.007.026-.011.038 0-.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-.212 1.061-.324 1.586-.452 2.116-2.08 12.7-2.365 15-.022.177-.032.347-.053.524a229.066 229.066 0 00-3.9 33.157c0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746zM201.716 354.447c1.124.537 2.18 1.124 3.334 1.639.048.033.114.07.163.1a126.191 126.191 0 01-3.497-1.739zm55.053-144.93zm198.131-30.59l-.032-.233c.012.085.027.174.04.259z" fill="url(#b)"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0-.058.011.048.036.226.012.085.027.174.04.259 22.675 61.47 10.322 123.978-7.479 162.175-27.539 59.1-94.215 119.67-198.576 116.716C136.1 454.651 36.766 370.988 18.223 261.41c-3.379-17.28 0-26.054 1.7-40.084-2.071 10.816-2.86 13.94-3.9 33.157 0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217
.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746z" fill="url(#c)"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0-.058.011.048.036.226.012.085.027.174.04.259 22.675 61.47 10.322 123.978-7.479 162.175-27.539 59.1-94.215 119.67-198.576 116.716C136.1 454.651 36.766 370.988 18.223 261.41c-3.379-17.28 0-26.054 1.7-40.084-2.071 10.816-2.86 13.94-3.9 33.157 0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746z" fill="url(#d)"/><path d="M361.922 194.6c.524.368 1 .734 1.493 1.1a130.706 130.706 0 00-22.31-29.112C266.4 91.892 321.516 4.626 330.811.194c.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484 2.8-.194 5.592-.429 8.442-.429 45.051 0 84.289 24.77 105.301 61.487z" fill="url(#e)"/><path d="M256.772 209.514c-.393 5.978-21.514 26.593-28.9 26.593-68.339
0-79.432 41.335-79.432 41.335 3.027 34.81 27.261 63.475 56.611 78.643 1.339.692 2.694 1.317 4.05 1.935a132.768 132.768 0 007.059 2.886 106.743 106.743 0 0031.271 6.031c119.78 5.618 142.986-143.194 56.545-186.408 22.137-3.85 45.115 5.053 57.947 14.067-21.012-36.714-60.25-61.484-105.3-61.484-2.85 0-5.641.235-8.442.429a120.249 120.249 0 00-66.142 25.488c3.664 3.1 7.8 7.244 16.514 15.828 16.302 16.067 58.13 32.705 58.219 34.657z" fill="url(#f)"/><path d="M256.772 209.514c-.393 5.978-21.514 26.593-28.9 26.593-68.339 0-79.432 41.335-79.432 41.335 3.027 34.81 27.261 63.475 56.611 78.643 1.339.692 2.694 1.317 4.05 1.935a132.768 132.768 0 007.059 2.886 106.743 106.743 0 0031.271 6.031c119.78 5.618 142.986-143.194 56.545-186.408 22.137-3.85 45.115 5.053 57.947 14.067-21.012-36.714-60.25-61.484-105.3-61.484-2.85 0-5.641.235-8.442.429a120.249 120.249 0 00-66.142 25.488c3.664 3.1 7.8 7.244 16.514 15.828 16.302 16.067 58.13 32.705 58.219 34.657z" fill="url(#g)"/><path d="M170.829 151.036a244.042
244.042 0 014.981 3.3 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89 29.01-57.85 44.7 1.155-.033 36.014-.66 53.543 10.732z" fill="url(#h)"/><path d="M18.223 261.41C36.766 370.988 136.1 454.651 248.855 457.844c104.361 2.954 171.037-57.62 198.576-116.716 17.8-38.2 30.154-100.7 7.479-162.175l-.008-.026-.032-.233c-.025-.178-.04-.284-.036-.226 0 .039.015.136.047.4 8.524 55.661-19.79 109.584-64.051 146.044l-.133.313c-86.245 70.223-168.774 42.368-185.484 30.966a144.108 144.108 0 01-3.5-1.743c-50.282-24.029-71.054-69.838-66.6-109.124-42.457 0-56.934-35.809-56.934-35.809s38.119-27.179 88.358-3.541c46.53 21.893 90.228 3.543 90.233 3.541-.089-1.952-41.917-18.59-58.223-34.656-8.713-8.584-12.85-12.723-16.514-15.828a71.355 71.355 0 00-6.225-4.7 282.929 282.929 0 00-4.981-3.3c-17.528-11.392-52.388-10.765-53.543-10.735h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0 00-23.486 20.12 210.478 210.478 0 00-22.442 26.919c0 .012-.007.026-.011.038 0-
.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-8.65 37.842-4.44 57.199z" fill="url(#i)"/><path d="M341.105 166.587a130.706 130.706 0 0122.31 29.112c1.323.994 2.559 1.985 3.608 2.952 54.482 50.2 25.936 121.2 23.807 126.26 44.261-36.46 72.575-90.383 64.051-146.044C427.706 111.135 381.627 83.823 344 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.546-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1-9.291 4.428-64.407 91.694 10.298 166.389z" fill="url(#j)"/><path d="M367.023 198.651c-1.049-.967-2.285-1.958-3.608-2.952-.489-.368-.969-.734-1.493-1.1-12.832-9.014-35.81-17.917-57.947-14.067 86.441 43.214 63.235 192.026-56.545 186.408a106.743 106.743 0 01-31.271-6.031 134.51 134.51 0 01-7.059-2.886c-1.356-.618-2.711-1.243-4.05-1.935.048.033.114.07.163.1 16.71 11.4 99.239 39.257 185.484-30.966l.133-.313c2.129-5.054 30.675-76.057-23.807-126.258z" fill="url(#k)"/><path d="M148.439 277.4
43s11.093-41.335 79.432-41.335c7.388 0 28.509-20.615 28.9-26.593s-43.7 18.352-90.233-3.541c-50.239-23.638-88.358 3.541-88.358 3.541s14.477 35.809 56.934 35.809c-4.453 39.286 16.319 85.1 66.6 109.124 1.124.537 2.18 1.124 3.334 1.639-29.348-15.169-53.582-43.834-56.609-78.644z" fill="url(#l)"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0 .039.015.136.047.4C427.706 111.135 381.627 83.823 344 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.546-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484 2.8-.194 5.592-.429 8.442-.429 45.053 0 84.291 24.77 105.3 61.484-12.832-9.014-35.81-17.917-57.947-14.067 86.441 43.214 63.235 192.026-56.545 186.408a106.743 106.743 0 01-31.271-6.031 134.51 134.51 0 01-7.059-2.886c-1.356-.618-2.711-1.243-4.05-1.935.048.033.114.07.163.1a144.108 144.1
08 0 01-3.5-1.743c1.124.537 2.18 1.124 3.334 1.639-29.35-15.168-53.584-43.833-56.611-78.643 0 0 11.093-41.335 79.432-41.335 7.388 0 28.509-20.615 28.9-26.593-.089-1.952-41.917-18.59-58.223-34.656-8.713-8.584-12.85-12.723-16.514-15.828a71.355 71.355 0 00-6.225-4.7 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89 29.01-57.85 44.7h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0 00-23.486 20.12 210.478 210.478 0 00-22.435 26.916c0 .012-.007.026-.011.038 0-.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-.212 1.061-.324 1.586-.452 2.116-2.486 12.853-2.77 15.156-.022.177.021-.176 0 0a279.565 279.565 0 00-3.544 33.53c0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746zm-23.841 12.341c.012.085.027.174.04.259l-.008-.026-.032-.233z" fill="url(#m)"/><path d="M484.634 367.61H323.189A69.189 69.189 0 00254 436.
8v33.835a9.366 9.366 0 009.366 9.365h161.445A69.189 69.189 0 00494 410.811v-52.567a9.366 9.366 0 01-9.366 9.366z" fill="url(#n)" filter="url(#o)"/><path d="M326.241 423.168a10.264 10.264 0 005.349-9.424c0-8.342-5.795-12.991-16.11-12.991h-19.232v46.486h19.359c10.315 0 16.684-4.584 16.684-13.755 0-4.839-2.166-8.341-6.05-10.316zM305.1 408.713h10.57c4.713 0 6.941 1.975 6.941 5.223 0 3.183-2.038 5.539-6.813 5.539H305.1zm10.635 30.439H305.1v-11.59h10.253c5.667 0 7.833 2.1 7.833 5.731s-2.548 5.859-7.452 5.859zm25.15 8.087h31.265v-8.532h-22.287v-10.572h22.287v-8.469h-22.287v-10.444h22.287v-8.469h-31.266zm73.548-46.486h-34.58v8.278h12.928v38.208h8.851v-38.208h12.8zm24.069 0h-8.852l-17.576 46.486h9.234l3.056-8.469h19.422l3.058 8.469h9.233zm-11.144 29.866l6.75-18.467 6.686 18.467z" fill="#20123a"/></svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="100%" x2="50%" y2="0%" id="linearGradient-1">
+ <stop stop-color="#420C5D" offset="0%"></stop>
+ <stop stop-color="#951AD1" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,29 C152.577777,29 256,131.974508 256,259 C256,386.025492 152.577777,489 25,489 L25,29 Z" id="path-2"></path>
+ <filter x="-18.2%" y="-7.4%" width="129.4%" height="114.8%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Assets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="icon_512x512">
+ <g id="Group">
+ <g id="tb_icon/Stable">
+ <g id="Stable">
+ <circle id="background" fill="#F2E4FF" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384
044,0 256,0 C114.60886,0 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.500000, 259.000000) scale(-1, 1) translate(-140.500000, -259.000000) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/devtools/client/themes/images/aboutdebugging-firefox-logo.svg b/devtools/client/themes/images/aboutdebugging-firefox-logo.svg
index fe4d116b1660..d7895f1107c5 100644
--- a/devtools/client/themes/images/aboutdebugging-firefox-logo.svg
+++ b/devtools/client/themes/images/aboutdebugging-firefox-logo.svg
@@ -1,6 +1,5 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
- <path fill="context-fill #20123a" d="M190.368 150.591c0.157 0.009 0.079 0.003 0 0zm-57.874-28.933c0.158 0.008 0.079 0.003 0 0zm346.228 44.674c-10.445-25.123-31.6-52.248-48.211-60.82 13.52 26.5 21.345 53.093 24.335 72.935 0 0.04 0.015 0.136 0.047 0.4-27.175-67.732-73.254-95.047-110.886-154.512-1.9-3.008-3.805-6.022-5.661-9.2a73.237 73.237 0 0 1-2.646-4.972 43.757 43.757 0 0 1-3.585-9.5 0.625 0.625 0 0 0-0.546-0.644 0.8 0.8 0 0 0-0.451 0c-0.033 0.011-0.084 0.051-0.119 0.065-0.053 0.02-0.12 0.069-0.176 0.095 0.026-0.036 0.083-0.117 0.1-0.135-53.437 31.3-75.587 86.093-81.282 120.97a128.057 128.057 0 0 0-47.624 12.153 6.144 6.144 0 0 0-3.041 7.63 6.034 6.034 0 0 0 8.192 3.525 116.175 116.175 0 0 1 41.481-10.826c0.468-0.033 0.937-0.062 1.405-0.1a117.624 117.624 0 0 1 5.932-0.211 120.831 120.831 0 0 1 34.491 4.777c0.654 0.192 1.295 0.414 1.946 0.616a120.15 120.15 0 0 1 5.539 1.842 121.852 121.852 0 0 1 3.992 1.564c1.074 0.434 2.148 0.868 3.206 1.331a118.453 118.453 0 0 1 4.9 2.307c0.743
0.368 1.485 0.735 2.217 1.117a120.535 120.535 0 0 1 4.675 2.587 107.785 107.785 0 0 1 2.952 1.776 123.018 123.018 0 0 1 42.028 43.477c-12.833-9.015-35.81-17.918-57.947-14.068 86.441 43.214 63.234 192.027-56.545 186.408a106.7 106.7 0 0 1-31.271-6.031 132.461 132.461 0 0 1-7.059-2.886c-1.356-0.618-2.711-1.243-4.051-1.935-29.349-15.168-53.583-43.833-56.611-78.643 0 0 11.093-41.335 79.433-41.335 7.388 0 28.508-20.614 28.9-26.593-0.09-1.953-41.917-18.59-58.223-34.656-8.714-8.585-12.851-12.723-16.514-15.829a71.7 71.7 0 0 0-6.225-4.7 111.335 111.335 0 0 1-0.675-58.733c-24.687 11.242-43.89 29.011-57.849 44.7h-0.111c-9.528-12.067-8.855-51.873-8.312-60.184-0.114-0.516-7.107 3.63-8.024 4.254a175.21 175.21 0 0 0-23.486 20.12 210.5 210.5 0 0 0-22.443 26.913c0 0.012-0.007 0.025-0.011 0.037 0-0.012 0.007-0.025 0.011-0.038a202.837 202.837 0 0 0-32.244 72.81c-0.058 0.265-2.29 10.054-3.92 22.147a265.794 265.794 0 0 0-0.769 5.651c-0.558 3.636-0.992 7.6-1.42 13.767-0.019 0.239-0.031 0.474-0.048 0.712a5
91.152 591.152 0 0 0-0.481 7.995c0 0.411-0.025 0.816-0.025 1.227 0 132.709 107.6 240.29 240.324 240.29 118.865 0 217.559-86.288 236.882-199.63 0.407-3.075 0.732-6.168 1.092-9.27 4.777-41.21-0.53-84.525-15.588-120.747zm-164.068 72.1z" />
-</svg>
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <g fill="context-fill" fill-opacity="context-fill-opacity" fill-rule="nonzero">
+ <path d="M12.0246161,21.8174863 L12.0246161,20.3628098 C16.6324777,20.3495038 20.3634751,16.6108555 20.3634751,11.9996673 C20.3634751,7.38881189 16.6324777,3.65016355 12.0246161,3.63685757 L12.0246161,2.18218107 C17.4358264,2.1958197 21.8178189,6.58546322 21.8178189,11.9996673 C21.8178189,17.4142042 17.4358264,21.8041803 12.0246161,21.8174863 L12.0246161,21.8174863 Z M12.0246161,16.7259522 C14.623607,16.7123136 16.7272828,14.6023175 16.7272828,11.9996673 C16.7272828,9.39734991 14.623607,7.28735377 12.0246161,7.27371516 L12.0246161,5.81937131 C15.4272884,5.8326773 18.1819593,8.59400123 18.1819593,11.9996673 C18.1819593,15.4056661 15.4272884,18.1669901 12.0246161,18.1802961 L12.0246161,16.7259522 Z M12.0246161,9.45556355 C13.4187503,9.46886953 14.5454344,10.6022066 14.5454344,11.9996673 C14.5454344,13.3974608 13.4187503,14.5307978 12.0246161,14.5441038 L12.0246161,9.45556355 Z M0,11.9996673 C0,18.6273771 5.37229031,24 12,24 C18.6273771,24 24,18.6273771 24,11.9996673 C24,5.37229031
18.6273771,0 12,0 C5.37229031,0 0,5.37229031 0,11.9996673 Z"/>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/devtools/client/themes/images/aboutdebugging-firefox-nightly.svg b/devtools/client/themes/images/aboutdebugging-firefox-nightly.svg
index dbc7b084d6c0..9240dc6e84ca 100644
--- a/devtools/client/themes/images/aboutdebugging-firefox-nightly.svg
+++ b/devtools/client/themes/images/aboutdebugging-firefox-nightly.svg
@@ -1,4 +1,31 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><radialGradient id="b" cx="-9227.187" cy="-9815.121" r="80.797" gradientTransform="matrix(6.201 0 0 6.2 57644.994 60908.8)" gradientUnits="userSpaceOnUse"><stop offset=".108" stop-color="#3fe1b0"/><stop offset=".122" stop-color="#3bdcb3"/><stop offset=".254" stop-color="#1bb3d3"/><stop offset=".358" stop-color="#0799e6"/><stop offset=".42" stop-color="#0090ed"/><stop offset=".487" stop-color="#2482f1"/><stop offset=".64" stop-color="#7165fb"/><stop offset=".71" stop-color="#9059ff"/><stop offset=".795" stop-color="#7d49ed"/><stop offset=".86" stop-color="#7542e5"/></radialGradient><radialGradient id="c" cx="-9256.711" cy="-9782.089" r="80.797" gradientTransform="matrix(6.201 0 0 6.2 57644.994 60908.8)" gradientUnits="userSpaceOnUse"><stop offset=".3" stop-color="#45278d"/><stop offset=".341" stop-color="#562896" stop-opacity=".787"/><stop offset=".43" stop-color="#782aa9" stop-opacity=".364"/><stop offset=".495" sto
p-color="#8d2bb5" stop-opacity=".1"/><stop offset=".53" stop-color="#952bb9" stop-opacity="0"/></radialGradient><radialGradient id="d" cx="-9246.97" cy="-9833.457" r="58.534" gradientTransform="matrix(6.201 0 0 6.2 57644.994 60908.8)" gradientUnits="userSpaceOnUse"><stop offset=".132" stop-color="#3fe1b0"/><stop offset=".289" stop-color="#28d0c8"/><stop offset=".526" stop-color="#00b3f4"/></radialGradient><radialGradient id="e" cx="-9265.648" cy="-9760.984" r="38.471" gradientTransform="matrix(6.201 0 0 6.2 57644.994 60908.8)" gradientUnits="userSpaceOnUse"><stop offset=".287" stop-color="#0060df"/><stop offset=".417" stop-color="#2357e1"/><stop offset=".604" stop-color="#4f4ce3"/><stop offset=".748" stop-color="#6b45e4"/><stop offset=".833" stop-color="#7542e5"/></radialGradient><radialGradient id="f" cx="-9255.62" cy="-9791.546" r="20.397" gradientTransform="matrix(6.027 -1.458 1.708 7.059 72758.651 55821.181)" gradientUnits="userSpaceOnUse"><stop offset=".206" stop-color="#45278d
" stop-opacity="0"/><stop offset=".251" stop-color="#44268a" stop-opacity=".055"/><stop offset=".725" stop-color="#371f6f" stop-opacity=".591"/><stop offset=".956" stop-color="#321c64" stop-opacity=".8"/></radialGradient><radialGradient id="g" cx="-9257.731" cy="-9818.427" r="27.676" gradientTransform="matrix(6.201 0 0 6.2 57644.994 60908.8)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#0df"/><stop offset=".235" stop-color="#00d6fd"/><stop offset=".572" stop-color="#00c3f8"/><stop offset=".792" stop-color="#00b3f4"/></radialGradient><radialGradient id="h" cx="-9235.977" cy="-9835.981" r="118.081" gradientTransform="matrix(6.201 0 0 6.2 57644.994 60908.8)" gradientUnits="userSpaceOnUse"><stop offset=".126" stop-color="#3fe1b0"/><stop offset=".429" stop-color="#0df"/><stop offset=".479" stop-color="#1ec1ff"/><stop offset=".624" stop-color="#7077ff"/><stop offset=".69" stop-color="#9059ff"/><stop offset=".904" stop-color="#b833e1"/></radialGradient><radialGradient id="i
" cx="-9247.165" cy="-9822.859" r="86.499" gradientTransform="matrix(.649 6.166 -4.046 .426 -33440.427 61207.861)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#54ffbd"/><stop offset=".095" stop-color="#4cf3b8"/><stop offset=".197" stop-color="#3fe1b0"/><stop offset=".257" stop-color="#33d8bd"/><stop offset=".369" stop-color="#12c0e1"/><stop offset=".423" stop-color="#00b3f4"/><stop offset=".737" stop-color="#0060df"/></radialGradient><radialGradient id="j" cx="-9258.383" cy="-9808.176" r="73.72" gradientTransform="matrix(6.201 0 0 6.2 57644.994 60908.8)" gradientUnits="userSpaceOnUse"><stop offset=".137" stop-color="#3fe1b0"/><stop offset=".435" stop-color="#0df"/><stop offset=".484" stop-color="#1ec1ff"/><stop offset=".622" stop-color="#7077ff"/><stop offset=".685" stop-color="#9059ff"/></radialGradient><radialGradient id="k" cx="-9238.923" cy="-9803.861" r="80.686" gradientTransform="matrix(6.201 0 0 6.2 57644.994 60908.8)" gradientUnits="userSpaceOnUse"><stop offs
et=".094" stop-color="#54ffbd"/><stop offset=".242" stop-color="#41f7cc"/><stop offset=".543" stop-color="#0fe3f3"/><stop offset=".626" stop-color="#0df"/></radialGradient><linearGradient id="a" x1="471.8" y1="127.352" x2="55.983" y2="389.284" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#3fe1b0"/><stop offset=".406" stop-color="#00b3f4"/><stop offset=".421" stop-color="#03b0f4"/><stop offset=".818" stop-color="#5561e9"/><stop offset="1" stop-color="#7542e5"/></linearGradient><linearGradient id="l" x1="442.084" y1="74.772" x2="102.645" y2="414.21" gradientUnits="userSpaceOnUse"><stop offset=".167" stop-color="#54ffbd" stop-opacity=".8"/><stop offset=".236" stop-color="#43f8ca" stop-opacity=".639"/><stop offset=".361" stop-color="#27ede1" stop-opacity=".368"/><stop offset=".466" stop-color="#12e4f1" stop-opacity=".169"/><stop offset=".545" stop-color="#05dffb" stop-opacity=".046"/><stop offset=".589" stop-color="#0df" stop-opacity="0"/></linearGradient></defs><path d="
M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0 .039.015.136.047.4C427.706 111.135 381.627 83.823 344 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.546-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484a120.249 120.249 0 00-66.142 25.488 71.355 71.355 0 00-6.225-4.7 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89 29.01-57.85 44.7h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0 00-23.486 20.12 210.478 210.478 0 00-22.442 26.913c0 .012-.007.026-.011.038 0-.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-.212 1.061-.324 1.586-.452 2.116-2.08 12.7-2.365 15-.022.177-.032.347-.053.524a229.066 229.066 0 00-3.9 33.157c0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.6
3.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746zM201.716 354.447c1.124.537 2.18 1.124 3.334 1.639.048.033.114.07.163.1a126.191 126.191 0 01-3.497-1.739zm55.053-144.93zm198.131-30.59l-.032-.233c.012.085.027.174.04.259z" fill="url(#a)"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0-.058.011.048.036.226.012.085.027.174.04.259 22.675 61.47 10.322 123.978-7.479 162.175-27.539 59.1-94.215 119.67-198.576 116.716C136.1 454.651 36.766 370.988 18.223 261.41c-3.379-17.28 0-26.054 1.7-40.084-2.071 10.816-2.86 13.94-3.9 33.157 0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746z" fill="url(#b)"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0-.058.011.048.036.226.012.085.027.174.04.259 22.675 61.47 10.322 123.978-7.479 162.175-27.539
59.1-94.215 119.67-198.576 116.716C136.1 454.651 36.766 370.988 18.223 261.41c-3.379-17.28 0-26.054 1.7-40.084-2.071 10.816-2.86 13.94-3.9 33.157 0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746z" fill="url(#c)"/><path d="M361.922 194.6c.524.368 1 .734 1.493 1.1a130.706 130.706 0 00-22.31-29.112C266.4 91.892 321.516 4.626 330.811.194c.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484 2.8-.194 5.592-.429 8.442-.429 45.051 0 84.289 24.77 105.301 61.487z" fill="url(#d)"/><path d="M256.772 209.514c-.393 5.978-21.514 26.593-28.9 26.593-68.339 0-79.432 41.335-79.432 41.335 3.027 34.81 27.261 63.475 56.611 78.643 1.339.692 2.694 1.317 4.05 1.935a132.768 132.768 0 007.059 2.886 106.743 106.743 0 0031.271 6.031c119.78 5.618 142.986-143.194 56.545-186.408 22.137-3.85 45.115 5.053 57.947 14.067-21.012-36.714-60.25-61.484-105.3-61.484-2.85 0-5.641.235-8.442.429
a120.249 120.249 0 00-66.142 25.488c3.664 3.1 7.8 7.244 16.514 15.828 16.302 16.067 58.13 32.705 58.219 34.657z" fill="url(#e)"/><path d="M256.772 209.514c-.393 5.978-21.514 26.593-28.9 26.593-68.339 0-79.432 41.335-79.432 41.335 3.027 34.81 27.261 63.475 56.611 78.643 1.339.692 2.694 1.317 4.05 1.935a132.768 132.768 0 007.059 2.886 106.743 106.743 0 0031.271 6.031c119.78 5.618 142.986-143.194 56.545-186.408 22.137-3.85 45.115 5.053 57.947 14.067-21.012-36.714-60.25-61.484-105.3-61.484-2.85 0-5.641.235-8.442.429a120.249 120.249 0 00-66.142 25.488c3.664 3.1 7.8 7.244 16.514 15.828 16.302 16.067 58.13 32.705 58.219 34.657z" fill="url(#f)"/><path d="M170.829 151.036a244.042 244.042 0 014.981 3.3 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89 29.01-57.85 44.7 1.155-.033 36.014-.66 53.543 10.732z" fill="url(#g)"/><path d="M18.223 261.41C36.766 370.988 136.1 454.651 248.855 457.844c104.361 2.954 171.037-57.62 198.576-116.716 17.8-38.2 30.154-100.7 7.479-162.175l-.008-.026-.032-.233
c-.025-.178-.04-.284-.036-.226 0 .039.015.136.047.4 8.524 55.661-19.79 109.584-64.051 146.044l-.133.313c-86.245 70.223-168.774 42.368-185.484 30.966a144.108 144.108 0 01-3.5-1.743c-50.282-24.029-71.054-69.838-66.6-109.124-42.457 0-56.934-35.809-56.934-35.809s38.119-27.179 88.358-3.541c46.53 21.893 90.228 3.543 90.233 3.541-.089-1.952-41.917-18.59-58.223-34.656-8.713-8.584-12.85-12.723-16.514-15.828a71.355 71.355 0 00-6.225-4.7 282.929 282.929 0 00-4.981-3.3c-17.528-11.392-52.388-10.765-53.543-10.735h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0 00-23.486 20.12 210.478 210.478 0 00-22.442 26.919c0 .012-.007.026-.011.038 0-.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-8.65 37.842-4.44 57.199z" fill="url(#h)"/><path d="M341.105 166.587a130.706 130.706 0 0122.31 29.112c1.323.994 2.559 1.985 3.608 2.952 54.482 50.2 25.936 121.2 23.807 126.26 44.261-36.46 72.575-90.383 64.051-146.044C427.706 111.135 381.627 83.823 34
4 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.546-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1-9.291 4.428-64.407 91.694 10.298 166.389z" fill="url(#i)"/><path d="M367.023 198.651c-1.049-.967-2.285-1.958-3.608-2.952-.489-.368-.969-.734-1.493-1.1-12.832-9.014-35.81-17.917-57.947-14.067 86.441 43.214 63.235 192.026-56.545 186.408a106.743 106.743 0 01-31.271-6.031 134.51 134.51 0 01-7.059-2.886c-1.356-.618-2.711-1.243-4.05-1.935.048.033.114.07.163.1 16.71 11.4 99.239 39.257 185.484-30.966l.133-.313c2.129-5.054 30.675-76.057-23.807-126.258z" fill="url(#j)"/><path d="M148.439 277.443s11.093-41.335 79.432-41.335c7.388 0 28.509-20.615 28.9-26.593s-43.7 18.352-90.233-3.541c-50.239-23.638-88.358 3.541-88.358 3.541s14.477 35.809 56.934 35.809c-4.453 39.286 16.319 85.1 66.6 109.124 1.124.537 2.18 1.124 3.334 1.639-29.348-15.169-53.582-43.834-56.609-78.644z" fill="url(#k)"/><path d="M478.711 166.353
c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0 .039.015.136.047.4C427.706 111.135 381.627 83.823 344 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.546-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484 2.8-.194 5.592-.429 8.442-.429 45.053 0 84.291 24.77 105.3 61.484-12.832-9.014-35.81-17.917-57.947-14.067 86.441 43.214 63.235 192.026-56.545 186.408a106.743 106.743 0 01-31.271-6.031 134.51 134.51 0 01-7.059-2.886c-1.356-.618-2.711-1.243-4.05-1.935.048.033.114.07.163.1a144.108 144.108 0 01-3.5-1.743c1.124.537 2.18 1.124 3.334 1.639-29.35-15.168-53.584-43.833-56.611-78.643 0 0 11.093-41.335 79.432-41.335 7.388 0 28.509-20.615 28.9-26.593-.089-1.952-41.917-18.59-58.223-34.656-8.713-8.584-12.85-12.723-16.514-15.828a71.355 71.355 0 00-6.225-4.7 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89
29.01-57.85 44.7h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0 00-23.486 20.12 210.478 210.478 0 00-22.435 26.916c0 .012-.007.026-.011.038 0-.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-.212 1.061-.324 1.586-.452 2.116-2.486 12.853-2.77 15.156-.022.177.021-.176 0 0a279.565 279.565 0 00-3.544 33.53c0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746zm-23.841 12.341c.012.085.027.174.04.259l-.008-.026-.032-.233z" fill="url(#l)"/></svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="100%" x2="50%" y2="0%" id="linearGradient-1">
+ <stop stop-color="#420C5D" offset="0%"></stop>
+ <stop stop-color="#951AD1" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,29 C152.577777,29 256,131.974508 256,259 C256,386.025492 152.577777,489 25,489 L25,29 Z" id="path-2"></path>
+ <filter x="-18.2%" y="-7.4%" width="129.4%" height="114.8%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Assets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="icon_512x512">
+ <g id="Group">
+ <g id="tb_icon/Stable">
+ <g id="Stable">
+ <circle id="background" fill="#F2E4FF" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384
044,0 256,0 C114.60886,0 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.500000, 259.000000) scale(-1, 1) translate(-140.500000, -259.000000) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/devtools/client/themes/images/aboutdebugging-firefox-release.svg b/devtools/client/themes/images/aboutdebugging-firefox-release.svg
index 4c195cf17c85..9240dc6e84ca 100644
--- a/devtools/client/themes/images/aboutdebugging-firefox-release.svg
+++ b/devtools/client/themes/images/aboutdebugging-firefox-release.svg
@@ -1,4 +1,31 @@
-<!-- This Source Code Form is subject to the terms of the Mozilla Public
- - License, v. 2.0. If a copy of the MPL was not distributed with this
- - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><radialGradient id="b" cx="87.4%" cy="-12.9%" r="128%" gradientTransform="matrix(.8 0 0 1 .178 .129)"><stop offset=".13" stop-color="#ffbd4f"/><stop offset=".28" stop-color="#ff980e"/><stop offset=".47" stop-color="#ff3750"/><stop offset=".78" stop-color="#eb0878"/><stop offset=".86" stop-color="#e50080"/></radialGradient><radialGradient id="c" cx="49%" cy="40%" r="128%" gradientTransform="matrix(.82 0 0 1 .088 0)"><stop offset=".3" stop-color="#960e18"/><stop offset=".35" stop-color="#b11927" stop-opacity=".74"/><stop offset=".43" stop-color="#db293d" stop-opacity=".34"/><stop offset=".5" stop-color="#f5334b" stop-opacity=".09"/><stop offset=".53" stop-color="#ff3750" stop-opacity="0"/></radialGradient><radialGradient id="d" cx="48%" cy="-12%" r="140%"><stop offset=".13" stop-color="#fff44f"/><stop offset=".53" stop-color="#ff980e"/></radialGradient><radialGradient id="e" cx="22.76%" cy="110.11%" r="100%"><stop off
set=".35" stop-color="#3a8ee6"/><stop offset=".67" stop-color="#9059ff"/><stop offset="1" stop-color="#c139e6"/></radialGradient><radialGradient id="f" cx="52%" cy="33%" r="59%" gradientTransform="scale(.9 1)"><stop offset=".21" stop-color="#9059ff" stop-opacity="0"/><stop offset=".97" stop-color="#6e008b" stop-opacity=".6"/></radialGradient><radialGradient id="g" cx="210%" cy="-100%" r="290%"><stop offset=".1" stop-color="#ffe226"/><stop offset=".79" stop-color="#ff7139"/></radialGradient><radialGradient id="h" cx="84%" cy="-41%" r="180%"><stop offset=".11" stop-color="#fff44f"/><stop offset=".46" stop-color="#ff980e"/><stop offset=".72" stop-color="#ff3647"/><stop offset=".9" stop-color="#e31587"/></radialGradient><radialGradient id="i" cx="16.1%" cy="-18.6%" r="348.8%" gradientTransform="matrix(.10453 .46743 -.99452 .04913 -.046 -.255)"><stop offset="0" stop-color="#fff44f"/><stop offset=".3" stop-color="#ff980e"/><stop offset=".57" stop-color="#ff3647"/><stop offset=".74" stop-c
olor="#e31587"/></radialGradient><radialGradient id="j" cx="18.9%" cy="-42.5%" r="238.4%"><stop offset=".14" stop-color="#fff44f"/><stop offset=".48" stop-color="#ff980e"/><stop offset=".66" stop-color="#ff3647"/><stop offset=".9" stop-color="#e31587"/></radialGradient><radialGradient id="k" cx="159.3%" cy="-44.72%" r="313.1%"><stop offset=".09" stop-color="#fff44f"/><stop offset=".63" stop-color="#ff980e"/></radialGradient><linearGradient id="a" x1="87.25%" y1="15.5%" x2="9.4%" y2="93.1%"><stop offset=".05" stop-color="#fff44f"/><stop offset=".37" stop-color="#ff980e"/><stop offset=".53" stop-color="#ff3647"/><stop offset=".7" stop-color="#e31587"/></linearGradient><linearGradient id="l" x1="80%" y1="14%" x2="18%" y2="84%"><stop offset=".17" stop-color="#fff44f" stop-opacity=".8"/><stop offset=".6" stop-color="#fff44f" stop-opacity="0"/></linearGradient></defs><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0 .039.015.136.
047.4C427.706 111.135 381.627 83.823 344 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.546-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484a120.249 120.249 0 00-66.142 25.488 71.355 71.355 0 00-6.225-4.7 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89 29.01-57.85 44.7h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0 00-23.486 20.12 210.478 210.478 0 00-22.442 26.913c0 .012-.007.026-.011.038 0-.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-.212 1.061-.324 1.586-.452 2.116-2.08 12.7-2.365 15-.022.177-.032.347-.053.524a229.066 229.066 0 00-3.9 33.157c0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746zM201.716 354.447c1.124.537 2.18 1.124 3.33
4 1.639.048.033.114.07.163.1a126.191 126.191 0 01-3.497-1.739zm55.053-144.93zm198.131-30.59l-.032-.233c.012.085.027.174.04.259z" fill="url(#a)"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0-.058.011.048.036.226.012.085.027.174.04.259 22.675 61.47 10.322 123.978-7.479 162.175-27.539 59.1-94.215 119.67-198.576 116.716C136.1 454.651 36.766 370.988 18.223 261.41c-3.379-17.28 0-26.054 1.7-40.084-2.071 10.816-2.86 13.94-3.9 33.157 0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746z" fill="url(#b)"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0-.058.011.048.036.226.012.085.027.174.04.259 22.675 61.47 10.322 123.978-7.479 162.175-27.539 59.1-94.215 119.67-198.576 116.716C136.1 454.651 36.766 370.988 18.223 261.41c-3.379-17.28 0-26.054 1.7-40.084-2.0
71 10.816-2.86 13.94-3.9 33.157 0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746z" fill="url(#c)"/><path d="M361.922 194.6c.524.368 1 .734 1.493 1.1a130.706 130.706 0 00-22.31-29.112C266.4 91.892 321.516 4.626 330.811.194c.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484 2.8-.194 5.592-.429 8.442-.429 45.051 0 84.289 24.77 105.301 61.487z" fill="url(#d)"/><path d="M256.772 209.514c-.393 5.978-21.514 26.593-28.9 26.593-68.339 0-79.432 41.335-79.432 41.335 3.027 34.81 27.261 63.475 56.611 78.643 1.339.692 2.694 1.317 4.05 1.935a132.768 132.768 0 007.059 2.886 106.743 106.743 0 0031.271 6.031c119.78 5.618 142.986-143.194 56.545-186.408 22.137-3.85 45.115 5.053 57.947 14.067-21.012-36.714-60.25-61.484-105.3-61.484-2.85 0-5.641.235-8.442.429a120.249 120.249 0 00-66.142 25.488c3.664 3.1 7.8 7.244 16.514 15.828 16.302 16.067 58.13 32.705 58.219 34.657z" f
ill="url(#e)"/><path d="M256.772 209.514c-.393 5.978-21.514 26.593-28.9 26.593-68.339 0-79.432 41.335-79.432 41.335 3.027 34.81 27.261 63.475 56.611 78.643 1.339.692 2.694 1.317 4.05 1.935a132.768 132.768 0 007.059 2.886 106.743 106.743 0 0031.271 6.031c119.78 5.618 142.986-143.194 56.545-186.408 22.137-3.85 45.115 5.053 57.947 14.067-21.012-36.714-60.25-61.484-105.3-61.484-2.85 0-5.641.235-8.442.429a120.249 120.249 0 00-66.142 25.488c3.664 3.1 7.8 7.244 16.514 15.828 16.302 16.067 58.13 32.705 58.219 34.657z" fill="url(#f)"/><path d="M170.829 151.036a244.042 244.042 0 014.981 3.3 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89 29.01-57.85 44.7 1.155-.033 36.014-.66 53.543 10.732z" fill="url(#g)"/><path d="M18.223 261.41C36.766 370.988 136.1 454.651 248.855 457.844c104.361 2.954 171.037-57.62 198.576-116.716 17.8-38.2 30.154-100.7 7.479-162.175l-.008-.026-.032-.233c-.025-.178-.04-.284-.036-.226 0 .039.015.136.047.4 8.524 55.661-19.79 109.584-64.051 146.044l-.133.313c-86.245 70
.223-168.774 42.368-185.484 30.966a144.108 144.108 0 01-3.5-1.743c-50.282-24.029-71.054-69.838-66.6-109.124-42.457 0-56.934-35.809-56.934-35.809s38.119-27.179 88.358-3.541c46.53 21.893 90.228 3.543 90.233 3.541-.089-1.952-41.917-18.59-58.223-34.656-8.713-8.584-12.85-12.723-16.514-15.828a71.355 71.355 0 00-6.225-4.7 282.929 282.929 0 00-4.981-3.3c-17.528-11.392-52.388-10.765-53.543-10.735h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0 00-23.486 20.12 210.478 210.478 0 00-22.442 26.919c0 .012-.007.026-.011.038 0-.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-8.65 37.842-4.44 57.199z" fill="url(#h)"/><path d="M341.105 166.587a130.706 130.706 0 0122.31 29.112c1.323.994 2.559 1.985 3.608 2.952 54.482 50.2 25.936 121.2 23.807 126.26 44.261-36.46 72.575-90.383 64.051-146.044C427.706 111.135 381.627 83.823 344 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.54
6-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1-9.291 4.428-64.407 91.694 10.298 166.389z" fill="url(#i)"/><path d="M367.023 198.651c-1.049-.967-2.285-1.958-3.608-2.952-.489-.368-.969-.734-1.493-1.1-12.832-9.014-35.81-17.917-57.947-14.067 86.441 43.214 63.235 192.026-56.545 186.408a106.743 106.743 0 01-31.271-6.031 134.51 134.51 0 01-7.059-2.886c-1.356-.618-2.711-1.243-4.05-1.935.048.033.114.07.163.1 16.71 11.4 99.239 39.257 185.484-30.966l.133-.313c2.129-5.054 30.675-76.057-23.807-126.258z" fill="url(#j)"/><path d="M148.439 277.443s11.093-41.335 79.432-41.335c7.388 0 28.509-20.615 28.9-26.593s-43.7 18.352-90.233-3.541c-50.239-23.638-88.358 3.541-88.358 3.541s14.477 35.809 56.934 35.809c-4.453 39.286 16.319 85.1 66.6 109.124 1.124.537 2.18 1.124 3.334 1.639-29.348-15.169-53.582-43.834-56.609-78.644z" fill="url(#k)"/><path d="M478.711 166.353c-10.445-25.124-31.6-52.248-48.212-60.821 13.52 26.505 21.345 53.093 24.335 72.936 0 .039.015.136.047.4C427.706 11
1.135 381.627 83.823 344 24.355c-1.9-3.007-3.805-6.022-5.661-9.2a73.716 73.716 0 01-2.646-4.972A43.7 43.7 0 01332.1.677a.626.626 0 00-.546-.644.818.818 0 00-.451 0c-.034.012-.084.051-.12.065-.053.021-.12.069-.176.1.027-.036.083-.117.1-.136-60.37 35.356-80.85 100.761-82.732 133.484 2.8-.194 5.592-.429 8.442-.429 45.053 0 84.291 24.77 105.3 61.484-12.832-9.014-35.81-17.917-57.947-14.067 86.441 43.214 63.235 192.026-56.545 186.408a106.743 106.743 0 01-31.271-6.031 134.51 134.51 0 01-7.059-2.886c-1.356-.618-2.711-1.243-4.05-1.935.048.033.114.07.163.1a144.108 144.108 0 01-3.5-1.743c1.124.537 2.18 1.124 3.334 1.639-29.35-15.168-53.584-43.833-56.611-78.643 0 0 11.093-41.335 79.432-41.335 7.388 0 28.509-20.615 28.9-26.593-.089-1.952-41.917-18.59-58.223-34.656-8.713-8.584-12.85-12.723-16.514-15.828a71.355 71.355 0 00-6.225-4.7 111.338 111.338 0 01-.674-58.732c-24.688 11.241-43.89 29.01-57.85 44.7h-.111c-9.527-12.067-8.855-51.873-8.312-60.184-.114-.515-7.107 3.63-8.023 4.255a175.073 175.073 0
00-23.486 20.12 210.478 210.478 0 00-22.435 26.916c0 .012-.007.026-.011.038 0-.013.007-.026.011-.038a202.838 202.838 0 00-32.247 72.805c-.115.521-.212 1.061-.324 1.586-.452 2.116-2.486 12.853-2.77 15.156-.022.177.021-.176 0 0a279.565 279.565 0 00-3.544 33.53c0 .41-.025.816-.025 1.227C16 388.418 123.6 496 256.324 496c118.865 0 217.56-86.288 236.882-199.63.407-3.076.733-6.168 1.092-9.271 4.777-41.21-.53-84.525-15.587-120.746zm-23.841 12.341c.012.085.027.174.04.259l-.008-.026-.032-.233z" fill="url(#l)"/></svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="100%" x2="50%" y2="0%" id="linearGradient-1">
+ <stop stop-color="#420C5D" offset="0%"></stop>
+ <stop stop-color="#951AD1" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,29 C152.577777,29 256,131.974508 256,259 C256,386.025492 152.577777,489 25,489 L25,29 Z" id="path-2"></path>
+ <filter x="-18.2%" y="-7.4%" width="129.4%" height="114.8%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Assets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="icon_512x512">
+ <g id="Group">
+ <g id="tb_icon/Stable">
+ <g id="Stable">
+ <circle id="background" fill="#F2E4FF" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384
044,0 256,0 C114.60886,0 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.500000, 259.000000) scale(-1, 1) translate(-140.500000, -259.000000) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/intl/l10n/L10nRegistry.jsm b/intl/l10n/L10nRegistry.jsm
index fc0cd5f4ee23..69e09f5aa99e 100644
--- a/intl/l10n/L10nRegistry.jsm
+++ b/intl/l10n/L10nRegistry.jsm
@@ -293,7 +293,9 @@ class L10nRegistryService {
for (const source of this.sources.values()) {
for (const locale of source.locales) {
- locales.add(locale);
+ if (!source.skipForAvailableLocales) {
+ locales.add(locale);
+ }
}
}
return Array.from(locales);
@@ -495,10 +497,11 @@ class FileSource {
*
* @returns {FileSource}
*/
- constructor(name, locales, prePath) {
+ constructor(name, locales, prePath, skipForAvailableLocales = false) {
this.name = name;
this.locales = locales;
this.prePath = prePath;
+ this.skipForAvailableLocales = skipForAvailableLocales;
this.indexed = false;
// The cache object stores information about the resources available
diff --git a/security/manager/pki/resources/content/exceptionDialog.xhtml b/security/manager/pki/resources/content/exceptionDialog.xhtml
index 56be4bc5cbd4..5c0c256aa2bb 100644
--- a/security/manager/pki/resources/content/exceptionDialog.xhtml
+++ b/security/manager/pki/resources/content/exceptionDialog.xhtml
@@ -19,7 +19,7 @@
defaultButton="extra2">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="security/certificates/certManager.ftl"/>
</linkset>
diff --git a/toolkit/components/certviewer/content/certviewer.html b/toolkit/components/certviewer/content/certviewer.html
index 3f097e48ada5..bc78dd5fc18e 100644
--- a/toolkit/components/certviewer/content/certviewer.html
+++ b/toolkit/components/certviewer/content/certviewer.html
@@ -9,7 +9,7 @@
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Security-Policy" content="default-src chrome:; object-src 'none'" />
<link rel="localization" href="toolkit/about/certviewer.ftl">
- <link rel="localization" href="branding/brand.ftl">
+ <link rel="localization" href="branding/tor-browser-brand.ftl">
<script defer="defer" src="chrome://global/content/certviewer/pvutils_bundle.js"></script>
<script defer="defer" src="chrome://global/content/certviewer/asn1js_bundle.js"></script>
<script defer="defer" src="chrome://global/content/certviewer/pkijs_bundle.js"></script>
diff --git a/toolkit/content/aboutProfiles.xhtml b/toolkit/content/aboutProfiles.xhtml
index 56a43b3dd155..0411a687525d 100644
--- a/toolkit/content/aboutProfiles.xhtml
+++ b/toolkit/content/aboutProfiles.xhtml
@@ -13,7 +13,7 @@
<link rel="icon" type="image/png" id="favicon" href="chrome://branding/content/icon32.png" />
<link rel="stylesheet" href="chrome://mozapps/skin/aboutProfiles.css" type="text/css" />
<script src="chrome://global/content/aboutProfiles.js" />
- <link rel="localization" href="branding/brand.ftl" />
+ <link rel="localization" href="branding/tor-browser-brand.ftl" />
<link rel="localization" href="toolkit/about/aboutProfiles.ftl" />
</head>
<body id="body" class="wide-container">
diff --git a/toolkit/content/aboutRights-unbranded.xhtml b/toolkit/content/aboutRights-unbranded.xhtml
index 44c4c350b2d0..89e212bc4c5d 100644
--- a/toolkit/content/aboutRights-unbranded.xhtml
+++ b/toolkit/content/aboutRights-unbranded.xhtml
@@ -14,7 +14,7 @@
<meta http-equiv="Content-Security-Policy" content="default-src chrome:; object-src 'none'" />
<title data-l10n-id="rights-title"></title>
<link rel="stylesheet" href="chrome://global/skin/in-content/info-pages.css" type="text/css"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="toolkit/about/aboutRights.ftl"/>
</head>
diff --git a/toolkit/content/aboutRights.xhtml b/toolkit/content/aboutRights.xhtml
index 23dfe8512e1c..ff7e2455f312 100644
--- a/toolkit/content/aboutRights.xhtml
+++ b/toolkit/content/aboutRights.xhtml
@@ -15,7 +15,7 @@
<title data-l10n-id="rights-title"></title>
<link rel="stylesheet" href="chrome://global/skin/in-content/info-pages.css" type="text/css"/>
<link rel="stylesheet" href="chrome://global/skin/aboutRights.css" type="text/css"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="toolkit/about/aboutRights.ftl"/>
</head>
diff --git a/toolkit/content/aboutServiceWorkers.xhtml b/toolkit/content/aboutServiceWorkers.xhtml
index 6bf38033e3e6..0d00241f851c 100644
--- a/toolkit/content/aboutServiceWorkers.xhtml
+++ b/toolkit/content/aboutServiceWorkers.xhtml
@@ -15,7 +15,7 @@
<link rel="stylesheet" href="chrome://global/skin/about.css" type="text/css" />
<link rel="stylesheet" href="chrome://mozapps/skin/aboutServiceWorkers.css" type="text/css" />
<link rel="localization" href="toolkit/about/aboutServiceWorkers.ftl"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<script src="chrome://global/content/aboutServiceWorkers.js" />
</head>
<body id="body">
diff --git a/toolkit/content/aboutSupport.xhtml b/toolkit/content/aboutSupport.xhtml
index ef35864d52b5..c6c5be1470d6 100644
--- a/toolkit/content/aboutSupport.xhtml
+++ b/toolkit/content/aboutSupport.xhtml
@@ -20,7 +20,7 @@
type="text/css"/>
<script src="chrome://global/content/aboutSupport.js"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="toolkit/about/aboutSupport.ftl"/>
<link rel="localization" href="toolkit/global/resetProfile.ftl"/>
<link rel="localization" href="toolkit/global/processTypes.ftl"/>
diff --git a/toolkit/content/aboutTelemetry.xhtml b/toolkit/content/aboutTelemetry.xhtml
index 1998b12b0655..dada800b0bfe 100644
--- a/toolkit/content/aboutTelemetry.xhtml
+++ b/toolkit/content/aboutTelemetry.xhtml
@@ -14,7 +14,7 @@
type="text/css"/>
<script src="chrome://global/content/aboutTelemetry.js"/>
- <link rel="localization" href="branding/brand.ftl"/>
+ <link rel="localization" href="branding/tor-browser-brand.ftl"/>
<link rel="localization" href="toolkit/about/aboutTelemetry.ftl"/>
</head>
diff --git a/toolkit/content/resetProfile.xhtml b/toolkit/content/resetProfile.xhtml
index 7ddafefef0e8..6f2b7ab8c22d 100644
--- a/toolkit/content/resetProfile.xhtml
+++ b/toolkit/content/resetProfile.xhtml
@@ -17,7 +17,7 @@
<!-- The empty onload event handler is a hack to get the accept button text applied by Fluent. -->
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="toolkit/global/resetProfile.ftl"/>
</linkset>
diff --git a/toolkit/mozapps/downloads/content/unknownContentType.xhtml b/toolkit/mozapps/downloads/content/unknownContentType.xhtml
index 9a9551d59a43..a23d03be4a3b 100644
--- a/toolkit/mozapps/downloads/content/unknownContentType.xhtml
+++ b/toolkit/mozapps/downloads/content/unknownContentType.xhtml
@@ -29,7 +29,7 @@
persist="screenX screenY"
aria-describedby="intro location whichIs type from source unknownPrompt">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="toolkit/global/unknownContentType.ftl"/>
</linkset>
<dialog id="unknownContentType">
diff --git a/toolkit/mozapps/extensions/content/aboutaddons.html b/toolkit/mozapps/extensions/content/aboutaddons.html
index afe6a9956501..dc30e8c79f52 100644
--- a/toolkit/mozapps/extensions/content/aboutaddons.html
+++ b/toolkit/mozapps/extensions/content/aboutaddons.html
@@ -17,7 +17,7 @@
<link rel="stylesheet" href="chrome://mozapps/content/extensions/aboutaddons.css">
<link rel="stylesheet" href="chrome://mozapps/content/extensions/shortcuts.css">
- <link rel="localization" href="branding/brand.ftl">
+ <link rel="localization" href="branding/tor-browser-brand.ftl">
<link rel="localization" href="toolkit/about/aboutAddons.ftl">
<link rel="localization" href="toolkit/about/abuseReports.ftl">
diff --git a/toolkit/mozapps/extensions/content/abuse-report-frame.html b/toolkit/mozapps/extensions/content/abuse-report-frame.html
index 16f84d456c0a..5737db251688 100644
--- a/toolkit/mozapps/extensions/content/abuse-report-frame.html
+++ b/toolkit/mozapps/extensions/content/abuse-report-frame.html
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="chrome://mozapps/content/extensions/aboutaddons.css">
<link rel="stylesheet" href="chrome://mozapps/content/extensions/abuse-report-panel.css">
- <link rel="localization" href="branding/brand.ftl">
+ <link rel="localization" href="branding/tor-browser-brand.ftl">
<link rel="localization" href="toolkit/about/aboutAddons.ftl">
<link rel="localization" href="toolkit/about/abuseReports.ftl">
diff --git a/toolkit/mozapps/extensions/content/blocklist.xhtml b/toolkit/mozapps/extensions/content/blocklist.xhtml
index 68d0004044d6..dd3e8ed00244 100644
--- a/toolkit/mozapps/extensions/content/blocklist.xhtml
+++ b/toolkit/mozapps/extensions/content/blocklist.xhtml
@@ -23,7 +23,7 @@
buttonidaccept="blocklist-accept">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="toolkit/extensions/blocklist.ftl"/>
</linkset>
diff --git a/toolkit/mozapps/extensions/content/extensions.xhtml b/toolkit/mozapps/extensions/content/extensions.xhtml
index f5b05018f768..62b1cea9f416 100644
--- a/toolkit/mozapps/extensions/content/extensions.xhtml
+++ b/toolkit/mozapps/extensions/content/extensions.xhtml
@@ -14,7 +14,7 @@
<xhtml:link rel="shortcut icon"
href="chrome://mozapps/skin/extensions/extension.svg"/>
<linkset>
- <xhtml:link rel="localization" href="branding/brand.ftl"/>
+ <xhtml:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<xhtml:link rel="localization" href="toolkit/about/aboutAddons.ftl"/>
</linkset>
diff --git a/toolkit/mozapps/preferences/changemp.xhtml b/toolkit/mozapps/preferences/changemp.xhtml
index 3b6941b42abf..9329d8b03e49 100644
--- a/toolkit/mozapps/preferences/changemp.xhtml
+++ b/toolkit/mozapps/preferences/changemp.xhtml
@@ -16,7 +16,7 @@
<script src="chrome://mozapps/content/preferences/changemp.js"/>
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="toolkit/preferences/preferences.ftl"/>
</linkset>
diff --git a/toolkit/mozapps/update/content/updateElevation.xhtml b/toolkit/mozapps/update/content/updateElevation.xhtml
index 46ddc5ef7d1b..34fe998e9ab6 100644
--- a/toolkit/mozapps/update/content/updateElevation.xhtml
+++ b/toolkit/mozapps/update/content/updateElevation.xhtml
@@ -32,7 +32,7 @@
<script src="chrome://global/content/editMenuOverlay.js"/>
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="toolkit/updates/elevation.ftl"/>
</linkset>
diff --git a/toolkit/profile/content/createProfileWizard.xhtml b/toolkit/profile/content/createProfileWizard.xhtml
index 9b0dea9547ab..5726b8ece29c 100644
--- a/toolkit/profile/content/createProfileWizard.xhtml
+++ b/toolkit/profile/content/createProfileWizard.xhtml
@@ -17,7 +17,7 @@
>
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="toolkit/global/createProfileWizard.ftl"/>
</linkset>
diff --git a/toolkit/profile/content/profileDowngrade.xhtml b/toolkit/profile/content/profileDowngrade.xhtml
index c2e4c359b79a..9f8c51f4a92b 100644
--- a/toolkit/profile/content/profileDowngrade.xhtml
+++ b/toolkit/profile/content/profileDowngrade.xhtml
@@ -17,7 +17,7 @@
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="browser/branding/sync-brand.ftl"/>
<html:link rel="localization" href="toolkit/global/profileDowngrade.ftl"/>
</linkset>
diff --git a/toolkit/profile/content/profileSelection.xhtml b/toolkit/profile/content/profileSelection.xhtml
index 182eceff7ee8..9e071ad95e2a 100644
--- a/toolkit/profile/content/profileSelection.xhtml
+++ b/toolkit/profile/content/profileSelection.xhtml
@@ -24,7 +24,7 @@
buttonidcancel="profile-selection-button-cancel">
<linkset>
- <html:link rel="localization" href="branding/brand.ftl"/>
+ <html:link rel="localization" href="branding/tor-browser-brand.ftl"/>
<html:link rel="localization" href="toolkit/global/profileSelection.ftl"/>
</linkset>
1
0

[tor-browser/tor-browser-78.1.0esr-10.0-1] Bug 4234: Use the Firefox Update Process for Tor Browser.
by gk@torproject.org 07 Aug '20
by gk@torproject.org 07 Aug '20
07 Aug '20
commit 773df6712745ce5da3b7e78b899e0fb66ae5b2bc
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri Jan 13 11:40:24 2017 -0500
Bug 4234: Use the Firefox Update Process for Tor Browser.
The following files are never updated:
TorBrowser/Data/Browser/profiles.ini
TorBrowser/Data/Browser/profile.default/bookmarks.html
TorBrowser/Data/Tor/torrc
Mac OS: Store update metadata under TorBrowser/UpdateInfo.
Removed the %OS_VERSION% component from the update URL (13047) and
added support for minSupportedOSVersion, an attribute of the
<update> element that may be used to trigger Firefox's
"unsupported platform" behavior.
Hide the "What's new" links (set app.releaseNotesURL value to about:blank).
Windows: disable "runas" code path in updater (15201).
Windows: avoid writing to the registry (16236).
Also includes fixes for tickets 13047, 13301, 13356, 13594, 15406,
16014, 16909, 24476, and 25909.
Also fix Bug 26049: reduce the delay before the update prompt is displayed.
Instead of Firefox's 2 days, we use 1 hour (after which time the update
doorhanger will be displayed).
Also fix bug 27221: purge the startup cache if the Tor Browser
version changed (even if the Firefox version and build ID did
not change), e.g., after a minor Tor Browser update.
Also fix 32616: Disable GetSecureOutputDirectoryPath() functionality.
Bug 26048: potentially confusing "restart to update" message
Within the update doorhanger, remove the misleading message that mentions
that windows will be restored after an update is applied, and replace the
"Restart and Restore" button label with an existing
"Restart to update Tor Browser" string.
Bug 28885: notify users that update is downloading
Add a "Downloading Tor Browser update" item which appears in the
hamburger (app) menu while the update service is downloading a MAR
file. Before this change, the browser did not indicate to the user
that an update was in progress, which is especially confusing in
Tor Browser because downloads often take some time. If the user
clicks on the new menu item, the about dialog is opened to allow
the user to see download progress.
As part of this fix, the update service was changed to always show
update-related messages in the hamburger menu, even if the update
was started in the foreground via the about dialog or via the
"Check for Tor Browser Update" toolbar menu item. This change is
consistent with the Tor Browser goal of making sure users are
informed about the update process.
Removed #28885 parts of this patch which have been uplifted to Firefox.
Use a localized string from Torbutton for the app menu's
"Downloading update" message. This is a temporary fix that can
be removed once Tor Browser is based on Firefox 79 or newer (at
which point the localized string will be included in the Firefox
language packs).
---
browser/app/Makefile.in | 2 +
browser/app/profile/000-tor-browser.js | 16 +-
browser/app/profile/firefox.js | 10 +-
.../base/content/aboutDialog-appUpdater-legacy.js | 2 +-
browser/base/content/aboutDialog-appUpdater.js | 2 +-
browser/base/content/aboutDialog.js | 12 +-
browser/components/BrowserContentHandler.jsm | 39 ++-
.../customizableui/content/panelUI.inc.xhtml | 8 +-
.../components/customizableui/content/panelUI.js | 22 ++
browser/confvars.sh | 35 +--
browser/installer/package-manifest.in | 2 +
build/application.ini.in | 2 +-
build/moz.configure/init.configure | 3 +-
config/createprecomplete.py | 17 +-
.../client/aboutdebugging/src/actions/runtimes.js | 5 +
toolkit/modules/UpdateUtils.jsm | 34 +--
toolkit/mozapps/extensions/AddonManager.jsm | 24 ++
toolkit/mozapps/extensions/test/browser/head.js | 1 +
.../extensions/test/xpcshell/head_addons.js | 1 +
toolkit/mozapps/update/UpdateService.jsm | 127 +++++++-
toolkit/mozapps/update/UpdateServiceStub.jsm | 4 +
toolkit/mozapps/update/common/updatehelper.cpp | 8 +
toolkit/mozapps/update/moz.build | 5 +-
toolkit/mozapps/update/updater/launchchild_osx.mm | 2 +
toolkit/mozapps/update/updater/moz.build | 2 +-
toolkit/mozapps/update/updater/updater.cpp | 339 ++++++++++++++++++---
toolkit/xre/MacLaunchHelper.h | 2 +
toolkit/xre/MacLaunchHelper.mm | 2 +
toolkit/xre/nsAppRunner.cpp | 22 +-
toolkit/xre/nsUpdateDriver.cpp | 109 ++++++-
toolkit/xre/nsXREDirProvider.cpp | 42 ++-
tools/update-packaging/common.sh | 76 +++--
tools/update-packaging/make_full_update.sh | 39 +++
tools/update-packaging/make_incremental_update.sh | 144 ++++++++-
34 files changed, 995 insertions(+), 165 deletions(-)
diff --git a/browser/app/Makefile.in b/browser/app/Makefile.in
index 6770319f1866..7263b8e1dde7 100644
--- a/browser/app/Makefile.in
+++ b/browser/app/Makefile.in
@@ -98,10 +98,12 @@ tools repackage:: $(DIST)/bin/$(MOZ_APP_NAME)
rsync -aL $(DIST)/bin/$(MOZ_APP_NAME) '$(dist_dest)/Contents/MacOS'
cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/firefox.icns '$(dist_dest)/Contents/Resources/firefox.icns'
cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/document.icns '$(dist_dest)/Contents/Resources/document.icns'
+ifndef TOR_BROWSER_UPDATE
$(MKDIR) -p '$(dist_dest)/Contents/Library/LaunchServices'
ifdef MOZ_UPDATER
mv -f '$(dist_dest)/Contents/MacOS/updater.app/Contents/MacOS/org.mozilla.updater' '$(dist_dest)/Contents/Library/LaunchServices'
ln -s ../../../../Library/LaunchServices/org.mozilla.updater '$(dist_dest)/Contents/MacOS/updater.app/Contents/MacOS/org.mozilla.updater'
+endif
endif
printf APPLTORB > '$(dist_dest)/Contents/PkgInfo'
endif
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 16af79f5907d..7540f75d071f 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -7,7 +7,6 @@
// Disable initial homepage notifications
pref("browser.search.update", false);
pref("browser.rights.3.shown", true);
-pref("browser.startup.homepage_override.mstone", "ignore");
pref("startup.homepage_welcome_url", "");
pref("startup.homepage_welcome_url.additional", "");
@@ -20,9 +19,17 @@ pref("startup.homepage_override_url", "https://blog.torproject.org/category/tags
// Try to nag a bit more about updates: Pop up a restart dialog an hour after the initial dialog
pref("app.update.promptWaitTime", 3600);
-
-#ifdef XP_WIN
-// For now, disable staged updates on Windows (see #18292).
+pref("app.update.notifyDuringDownload", true);
+pref("app.update.url.manual", "https://www.torproject.org/download/languages/");
+pref("app.update.url.details", "https://www.torproject.org/download/");
+pref("app.update.badgeWaitTime", 0);
+pref("app.releaseNotesURL", "about:blank");
+
+#ifndef XP_MACOSX
+// Disable staged updates on platforms other than macOS.
+// Staged updates do not work on Windows due to #18292.
+// Also, on Windows and Linux any changes that are made to the browser profile
+// or Tor data after an update is staged will be lost.
pref("app.update.staging.enabled", false);
#endif
@@ -86,6 +93,7 @@ pref("datareporting.policy.dataSubmissionEnabled", false);
// Make sure Unified Telemetry is really disabled, see: #18738.
pref("toolkit.telemetry.unified", false);
pref("toolkit.telemetry.enabled", false);
+pref("toolkit.telemetry.updatePing.enabled", false); // Make sure updater telemetry is disabled; see #25909.
// No experiments, use Tor Browser. See 21797.
pref("experiments.enabled", false);
pref("browser.syncPromoViewsLeftMap", "{\"addons\":0, \"passwords\":0, \"bookmarks\":0}"); // Don't promote sync
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index ed9df13b8f88..22e8e5f2de1f 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -132,14 +132,8 @@ pref("app.update.elevation.promptMaxAttempts", 2);
pref("app.update.notifyDuringDownload", false);
// If set to true, the Update Service will automatically download updates if the
-// user can apply updates. This pref is no longer used on Windows, except as the
-// default value to migrate to the new location that this data is now stored
-// (which is in a file in the update directory). Because of this, this pref
-// should no longer be used directly. Instead, getAppUpdateAutoEnabled and
-// getAppUpdateAutoEnabled from UpdateUtils.jsm should be used.
-#ifndef XP_WIN
- pref("app.update.auto", true);
-#endif
+// user can apply updates.
+pref("app.update.auto", true);
// If set to true, the Update Service will apply updates in the background
// when it finishes downloading them.
diff --git a/browser/base/content/aboutDialog-appUpdater-legacy.js b/browser/base/content/aboutDialog-appUpdater-legacy.js
index 0629e8eaf41a..9f96e2263295 100644
--- a/browser/base/content/aboutDialog-appUpdater-legacy.js
+++ b/browser/base/content/aboutDialog-appUpdater-legacy.js
@@ -192,7 +192,7 @@ appUpdater.prototype = {
if (aChildID == "downloadAndInstall") {
let updateVersion = gAppUpdater.update.displayVersion;
// Include the build ID if this is an "a#" (nightly or aurora) build
- if (/a\d+$/.test(updateVersion)) {
+ if (!AppConstants.TOR_BROWSER_UPDATE && /a\d+$/.test(updateVersion)) {
let buildID = gAppUpdater.update.buildID;
let year = buildID.slice(0, 4);
let month = buildID.slice(4, 6);
diff --git a/browser/base/content/aboutDialog-appUpdater.js b/browser/base/content/aboutDialog-appUpdater.js
index 79828e5a279f..71de80626b89 100644
--- a/browser/base/content/aboutDialog-appUpdater.js
+++ b/browser/base/content/aboutDialog-appUpdater.js
@@ -147,7 +147,7 @@ appUpdater.prototype = {
if (aChildID == "downloadAndInstall") {
let updateVersion = gAppUpdater.update.displayVersion;
// Include the build ID if this is an "a#" (nightly or aurora) build
- if (/a\d+$/.test(updateVersion)) {
+ if (!AppConstants.TOR_BROWSER_UPDATE && /a\d+$/.test(updateVersion)) {
let buildID = gAppUpdater.update.buildID;
let year = buildID.slice(0, 4);
let month = buildID.slice(4, 6);
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
index 19f0d6f16c6c..13dfe0e37ca2 100644
--- a/browser/base/content/aboutDialog.js
+++ b/browser/base/content/aboutDialog.js
@@ -50,15 +50,13 @@ async function init(aEvent) {
bits: Services.appinfo.is64Bit ? 64 : 32,
};
+ // Adjust version text to show the Tor Browser version
+ versionAttributes.version = AppConstants.TOR_BROWSER_VERSION +
+ " (based on Mozilla Firefox " +
+ AppConstants.MOZ_APP_VERSION_DISPLAY + ")";
+
let version = Services.appinfo.version;
if (/a\d+$/.test(version)) {
- versionId = "aboutDialog-version-nightly";
- let buildID = Services.appinfo.appBuildID;
- let year = buildID.slice(0, 4);
- let month = buildID.slice(4, 6);
- let day = buildID.slice(6, 8);
- versionAttributes.isodate = `${year}-${month}-${day}`;
-
document.getElementById("experimental").hidden = false;
document.getElementById("communityDesc").hidden = true;
}
diff --git a/browser/components/BrowserContentHandler.jsm b/browser/components/BrowserContentHandler.jsm
index 8d5c4e970cd9..9f5b6ab0218c 100644
--- a/browser/components/BrowserContentHandler.jsm
+++ b/browser/components/BrowserContentHandler.jsm
@@ -46,6 +46,8 @@ XPCOMUtils.defineLazyGlobalGetters(this, [URL]);
const NEWINSTALL_PAGE = "about:newinstall";
+const kTBSavedVersionPref = "browser.startup.homepage_override.torbrowser.version";
+
// One-time startup homepage override configurations
const ONCE_DOMAINS = ["mozilla.org", "firefox.com"];
const ONCE_PREF = "browser.startup.homepage_override.once";
@@ -105,7 +107,8 @@ const OVERRIDE_ALTERNATE_PROFILE = 4;
* Returns:
* OVERRIDE_NEW_PROFILE if this is the first run with a new profile.
* OVERRIDE_NEW_MSTONE if this is the first run with a build with a different
- * Gecko milestone (i.e. right after an upgrade).
+ * Gecko milestone or Tor Browser version (i.e. right
+ * after an upgrade).
* OVERRIDE_NEW_BUILD_ID if this is the first run with a new build ID of the
* same Gecko milestone (i.e. after a nightly upgrade).
* OVERRIDE_NONE otherwise.
@@ -128,6 +131,11 @@ function needHomepageOverride(prefb) {
var mstone = Services.appinfo.platformVersion;
+ var savedTBVersion = null;
+ try {
+ savedTBVersion = prefb.getCharPref(kTBSavedVersionPref);
+ } catch (e) {}
+
var savedBuildID = prefb.getCharPref(
"browser.startup.homepage_override.buildID",
""
@@ -146,7 +154,22 @@ function needHomepageOverride(prefb) {
prefb.setCharPref("browser.startup.homepage_override.mstone", mstone);
prefb.setCharPref("browser.startup.homepage_override.buildID", buildID);
- return savedmstone ? OVERRIDE_NEW_MSTONE : OVERRIDE_NEW_PROFILE;
+ prefb.setCharPref(kTBSavedVersionPref, AppConstants.TOR_BROWSER_VERSION);
+
+ // After an upgrade from an older release of Tor Browser (<= 5.5a1), the
+ // savedmstone will be undefined because those releases included the
+ // value "ignore" for the browser.startup.homepage_override.mstone pref.
+ // To correctly detect an upgrade vs. a new profile, we check for the
+ // presence of the "app.update.postupdate" pref.
+ let updated = prefb.prefHasUserValue("app.update.postupdate");
+ return (savedmstone || updated) ? OVERRIDE_NEW_MSTONE
+ : OVERRIDE_NEW_PROFILE;
+ }
+
+ if (AppConstants.TOR_BROWSER_VERSION != savedTBVersion) {
+ prefb.setCharPref("browser.startup.homepage_override.buildID", buildID);
+ prefb.setCharPref(kTBSavedVersionPref, AppConstants.TOR_BROWSER_VERSION);
+ return OVERRIDE_NEW_MSTONE;
}
if (buildID != savedBuildID) {
@@ -645,6 +668,13 @@ nsBrowserContentHandler.prototype = {
"browser.startup.homepage_override.buildID",
"unknown"
);
+
+ // We do the same for the Tor Browser version.
+ let old_tbversion = null;
+ try {
+ old_tbversion = prefb.getCharPref(kTBSavedVersionPref);
+ } catch (e) {}
+
override = needHomepageOverride(prefb);
if (override != OVERRIDE_NONE) {
switch (override) {
@@ -677,9 +707,10 @@ nsBrowserContentHandler.prototype = {
"startup.homepage_override_url"
);
let update = UpdateManager.activeUpdate;
+ let old_version = old_tbversion ? old_tbversion: old_mstone;
if (
update &&
- Services.vc.compare(update.appVersion, old_mstone) > 0
+ Services.vc.compare(update.appVersion, old_version) > 0
) {
overridePage = getPostUpdateOverridePage(update, overridePage);
// Send the update ping to signal that the update was successful.
@@ -687,6 +718,8 @@ nsBrowserContentHandler.prototype = {
}
overridePage = overridePage.replace("%OLD_VERSION%", old_mstone);
+ overridePage = overridePage.replace("%OLD_TOR_BROWSER_VERSION%",
+ old_tbversion);
break;
case OVERRIDE_NEW_BUILD_ID:
if (UpdateManager.activeUpdate) {
diff --git a/browser/components/customizableui/content/panelUI.inc.xhtml b/browser/components/customizableui/content/panelUI.inc.xhtml
index bdb8a7c227cf..719eee14e681 100644
--- a/browser/components/customizableui/content/panelUI.inc.xhtml
+++ b/browser/components/customizableui/content/panelUI.inc.xhtml
@@ -143,14 +143,15 @@
<popupnotification id="appMenu-update-restart-notification"
popupid="update-restart"
data-lazy-l10n-id="appmenu-update-restart"
- data-l10n-attrs="buttonlabel, buttonaccesskey, secondarybuttonlabel, secondarybuttonaccesskey"
+ data-l10n-attrs="buttonaccesskey, secondarybuttonlabel, secondarybuttonaccesskey"
+ buttonlabel="&updateRestart.panelUI.label2;"
closebuttonhidden="true"
dropmarkerhidden="true"
checkboxhidden="true"
buttonhighlight="true"
hidden="true">
<popupnotificationcontent id="update-restart-notification-content" orient="vertical">
- <description id="update-restart-description" data-lazy-l10n-id="appmenu-update-restart-message"></description>
+ <description id="update-restart-description"> </description>
</popupnotificationcontent>
</popupnotification>
@@ -223,8 +224,7 @@
<vbox class="panel-subview-body">
<vbox id="appMenu-addon-banners"/>
<toolbarbutton id="appMenu-update-banner" class="panel-banner-item"
- data-l10n-id="appmenuitem-update-banner"
- data-l10n-attrs="label-update-downloading"
+ label-update-downloading="Downloading update"
label-update-available="&updateAvailable.panelUI.label;"
label-update-manual="&updateManual.panelUI.label;"
label-update-unsupported="&updateUnsupported.panelUI.label;"
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index aa5cc7021f8e..97b6af51b22b 100644
--- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js
@@ -59,6 +59,7 @@ const PanelUI = {
init() {
this._initElements();
+ this._initUpdaterStrings();
this.menuButton.addEventListener("mousedown", this);
this.menuButton.addEventListener("keypress", this);
@@ -147,6 +148,27 @@ const PanelUI = {
}
},
+ _initUpdaterStrings() {
+ // If Torbutton is installed and enabled, replace the "Downloading update"
+ // string with one from torbutton.properties (to facilitate localization).
+ // This function can be removed when Tor Browser is based on Firefox 79
+ // or newer (where the localized string is included in the Firefox
+ // language packs).
+ try {
+ let brands = Services.strings.createBundle(
+ "chrome://branding/locale/brand.properties");
+ let stringArgs = [brands.GetStringFromName("brandShortName")];
+ let torbuttonBundle = Services.strings.createBundle(
+ "chrome://torbutton/locale/torbutton.properties");
+ let label = torbuttonBundle.formatStringFromName(
+ "updateDownloadingPanelUILabel", stringArgs, 1);
+ let elem = document.getElementById("appMenu-update-banner");
+ if (elem) {
+ elem.setAttribute("label-update-downloading", label);
+ }
+ } catch (e) {}
+ },
+
_eventListenersAdded: false,
_ensureEventListenersAdded() {
if (this._eventListenersAdded) {
diff --git a/browser/confvars.sh b/browser/confvars.sh
index 31f28736606d..f994783f9c65 100755
--- a/browser/confvars.sh
+++ b/browser/confvars.sh
@@ -7,26 +7,6 @@ MOZ_APP_BASENAME=Firefox
MOZ_APP_VENDOR=Mozilla
MOZ_UPDATER=1
-if test "$OS_ARCH" = "WINNT"; then
- if ! test "$HAVE_64BIT_BUILD"; then
- if test "$MOZ_UPDATE_CHANNEL" = "nightly" -o \
- "$MOZ_UPDATE_CHANNEL" = "nightly-try" -o \
- "$MOZ_UPDATE_CHANNEL" = "aurora" -o \
- "$MOZ_UPDATE_CHANNEL" = "beta" -o \
- "$MOZ_UPDATE_CHANNEL" = "release"; then
- if ! test "$MOZ_DEBUG"; then
- if ! test "$USE_STUB_INSTALLER"; then
- # Expect USE_STUB_INSTALLER from taskcluster for downstream task consistency
- echo "ERROR: STUB installer expected to be enabled but"
- echo "ERROR: USE_STUB_INSTALLER is not specified in the environment"
- exit 1
- fi
- MOZ_STUB_INSTALLER=1
- fi
- fi
- fi
-fi
-
BROWSER_CHROME_URL=chrome://browser/content/browser.xhtml
# MOZ_APP_DISPLAYNAME will be set by branding/configure.sh
@@ -39,6 +19,21 @@ MOZ_BRANDING_DIRECTORY=browser/branding/unofficial
MOZ_OFFICIAL_BRANDING_DIRECTORY=browser/branding/official
MOZ_APP_ID={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
+# ACCEPTED_MAR_CHANNEL_IDS should usually be the same as the value MAR_CHANNEL_ID.
+# If more than one ID is needed, then you should use a comma separated list
+# of values.
+# The MAR_CHANNEL_ID must not contain the following 3 characters: ",\t "
+if test "$MOZ_UPDATE_CHANNEL" = "alpha"; then
+ ACCEPTED_MAR_CHANNEL_IDS=torbrowser-torproject-alpha
+ MAR_CHANNEL_ID=torbrowser-torproject-alpha
+elif test "$MOZ_UPDATE_CHANNEL" = "nightly"; then
+ ACCEPTED_MAR_CHANNEL_IDS=torbrowser-torproject-nightly
+ MAR_CHANNEL_ID=torbrowser-torproject-nightly
+else
+ ACCEPTED_MAR_CHANNEL_IDS=torbrowser-torproject-release
+ MAR_CHANNEL_ID=torbrowser-torproject-release
+fi
+
MOZ_PROFILE_MIGRATOR=1
# Include the DevTools client, not just the server (which is the default)
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index 3722bf2ee22b..792acb870afa 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -36,8 +36,10 @@
; Mac bundle stuff
@APPNAME@/Contents/Info.plist
#ifdef MOZ_UPDATER
+#ifndef TOR_BROWSER_UPDATE
@APPNAME@/Contents/Library/LaunchServices
#endif
+#endif
@APPNAME@/Contents/PkgInfo
@RESPATH@/firefox.icns
@RESPATH@/document.icns
diff --git a/build/application.ini.in b/build/application.ini.in
index a6141de0be15..96faf3775588 100644
--- a/build/application.ini.in
+++ b/build/application.ini.in
@@ -52,5 +52,5 @@ ServerURL=https://crash-reports.mozilla.com/submit?id=@MOZ_APP_ID@&version=…
#if MOZ_UPDATER
[AppUpdate]
-URL=https://@MOZ_APPUPDATE_HOST@/update/6/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%SYSTEM_CAPABILITIES%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml
+URL=https://aus1.torproject.org/torbrowser/update_3/%CHANNEL%/%BUILD_TARGET%/%VERSION%/%LOCALE%
#endif
diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure
index 5e0741852c8e..465c9380055c 100644
--- a/build/moz.configure/init.configure
+++ b/build/moz.configure/init.configure
@@ -1147,7 +1147,6 @@ def version_path(path):
# set RELEASE_OR_BETA and NIGHTLY_BUILD variables depending on the cycle we're in
# The logic works like this:
# - if we have "a1" in GRE_MILESTONE, we're building Nightly (define NIGHTLY_BUILD)
-# - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
# - otherwise, we're building Release/Beta (define RELEASE_OR_BETA)
@depends(check_build_environment, build_project, version_path, '--help')
@imports(_from='__builtin__', _import='open')
@@ -1194,7 +1193,7 @@ def milestone(build_env, build_project, version_path, _):
if 'a1' in milestone:
is_nightly = True
- elif 'a' not in milestone:
+ else:
is_release_or_beta = True
major_version = milestone.split('.')[0]
diff --git a/config/createprecomplete.py b/config/createprecomplete.py
index fadd796aa21f..73793c8e8b19 100644
--- a/config/createprecomplete.py
+++ b/config/createprecomplete.py
@@ -5,6 +5,7 @@
# update instructions which is used to remove files and directories that are no
# longer present in a complete update. The current working directory is used for
# the location to enumerate and to create the precomplete file.
+# For symlinks, remove instructions are always generated.
from __future__ import absolute_import
from __future__ import unicode_literals
@@ -13,9 +14,17 @@ import os
import io
+# TODO When TOR_BROWSER_DATA_OUTSIDE_APP_DIR is used on all platforms,
+# we should remove all lines in this file that contain:
+# TorBrowser/Data
+
def get_build_entries(root_path):
""" Iterates through the root_path, creating a list for each file and
directory. Excludes any file paths ending with channel-prefs.js.
+ To support Tor Browser updates, excludes:
+ TorBrowser/Data/Browser/profiles.ini
+ TorBrowser/Data/Browser/profile.default/bookmarks.html
+ TorBrowser/Data/Tor/torrc
"""
rel_file_path_set = set()
rel_dir_path_set = set()
@@ -26,6 +35,9 @@ def get_build_entries(root_path):
rel_path_file = rel_path_file.replace("\\", "/")
if not (rel_path_file.endswith("channel-prefs.js") or
rel_path_file.endswith("update-settings.ini") or
+ rel_path_file == "TorBrowser/Data/Browser/profiles.ini" or
+ rel_path_file == "TorBrowser/Data/Browser/profile.default/bookmarks.html" or
+ rel_path_file == "TorBrowser/Data/Tor/torrc" or
rel_path_file.find("distribution/") != -1):
rel_file_path_set.add(rel_path_file)
@@ -34,7 +46,10 @@ def get_build_entries(root_path):
rel_path_dir = os.path.join(parent_dir_rel_path, dir_name)
rel_path_dir = rel_path_dir.replace("\\", "/")+"/"
if rel_path_dir.find("distribution/") == -1:
- rel_dir_path_set.add(rel_path_dir)
+ if (os.path.islink(rel_path_dir[:-1])):
+ rel_file_path_set.add(rel_path_dir[:-1])
+ else:
+ rel_dir_path_set.add(rel_path_dir)
rel_file_path_list = list(rel_file_path_set)
rel_file_path_list.sort(reverse=True)
diff --git a/devtools/client/aboutdebugging/src/actions/runtimes.js b/devtools/client/aboutdebugging/src/actions/runtimes.js
index b96f93e244b7..4c1e87a0818a 100644
--- a/devtools/client/aboutdebugging/src/actions/runtimes.js
+++ b/devtools/client/aboutdebugging/src/actions/runtimes.js
@@ -70,6 +70,11 @@ async function getRuntimeIcon(runtime, channel) {
}
}
+ // Use the release build skin for devtools within Tor Browser alpha releases.
+ if (channel === "alpha") {
+ return "chrome://devtools/skin/images/aboutdebugging-firefox-release.svg";
+ }
+
return channel === "release" || channel === "beta" || channel === "aurora"
? `chrome://devtools/skin/images/aboutdebugging-firefox-${channel}.svg`
: "chrome://devtools/skin/images/aboutdebugging-firefox-nightly.svg";
diff --git a/toolkit/modules/UpdateUtils.jsm b/toolkit/modules/UpdateUtils.jsm
index d2b695b47442..883928472732 100644
--- a/toolkit/modules/UpdateUtils.jsm
+++ b/toolkit/modules/UpdateUtils.jsm
@@ -103,7 +103,7 @@ var UpdateUtils = {
case "PRODUCT":
return Services.appinfo.name;
case "VERSION":
- return Services.appinfo.version;
+ return AppConstants.TOR_BROWSER_VERSION;
case "BUILD_ID":
return Services.appinfo.appBuildID;
case "BUILD_TARGET":
@@ -167,25 +167,17 @@ var UpdateUtils = {
* downloads and installs updates. This corresponds to whether or not the user
* has selected "Automatically install updates" in about:preferences.
*
- * On Windows, this setting is shared across all profiles for the installation
+ * On Windows (except in Tor Browser), this setting is shared across all profiles
+ * for the installation
* and is read asynchronously from the file. On other operating systems, this
* setting is stored in a pref and is thus a per-profile setting.
*
* @return A Promise that resolves with a boolean.
*/
getAppUpdateAutoEnabled() {
- if (Services.policies) {
- if (!Services.policies.isAllowed("app-auto-updates-off")) {
- // We aren't allowed to turn off auto-update - it is forced on.
- return Promise.resolve(true);
- }
- if (!Services.policies.isAllowed("app-auto-updates-on")) {
- // We aren't allowed to turn on auto-update - it is forced off.
- return Promise.resolve(false);
- }
- }
- if (AppConstants.platform != "win") {
- // On platforms other than Windows the setting is stored in a preference.
+ if (AppConstants.TOR_BROWSER_UPDATE || (AppConstants.platform != "win")) {
+ // On platforms other than Windows and always in Tor Browser the setting
+ // is stored in a preference.
let prefValue = Services.prefs.getBoolPref(
PREF_APP_UPDATE_AUTO,
DEFAULT_APP_UPDATE_AUTO
@@ -256,7 +248,8 @@ var UpdateUtils = {
* updates" and "Check for updates but let you choose to install them" options
* in about:preferences.
*
- * On Windows, this setting is shared across all profiles for the installation
+ * On Windows (except in Tor Browser), this setting is shared across all profiles
+ * for the installation
* and is written asynchronously to the file. On other operating systems, this
* setting is stored in a pref and is thus a per-profile setting.
*
@@ -276,14 +269,9 @@ var UpdateUtils = {
* this operation simply sets a pref.
*/
setAppUpdateAutoEnabled(enabledValue) {
- if (this.appUpdateAutoSettingIsLocked()) {
- return Promise.reject(
- "setAppUpdateAutoEnabled: Unable to change value of setting because " +
- "it is locked by policy"
- );
- }
- if (AppConstants.platform != "win") {
- // Only in Windows do we store the update config in the update directory
+ if (AppConstants.TOR_BROWSER_UPDATE || (AppConstants.platform != "win")) {
+ // Only in Windows (but never for Tor Browser) do we store the update config
+ // in the update directory
let prefValue = !!enabledValue;
Services.prefs.setBoolPref(PREF_APP_UPDATE_AUTO, prefValue);
// Rather than call maybeUpdateAutoConfigChanged, a pref observer has
diff --git a/toolkit/mozapps/extensions/AddonManager.jsm b/toolkit/mozapps/extensions/AddonManager.jsm
index 0dca5d712523..4e5ca4b10308 100644
--- a/toolkit/mozapps/extensions/AddonManager.jsm
+++ b/toolkit/mozapps/extensions/AddonManager.jsm
@@ -23,6 +23,7 @@ const { AppConstants } = ChromeUtils.import(
const MOZ_COMPATIBILITY_NIGHTLY = ![
"aurora",
+ "alpha",
"beta",
"release",
"esr",
@@ -37,6 +38,7 @@ const PREF_EM_AUTOUPDATE_DEFAULT = "extensions.update.autoUpdateDefault";
const PREF_EM_STRICT_COMPATIBILITY = "extensions.strictCompatibility";
const PREF_EM_CHECK_UPDATE_SECURITY = "extensions.checkUpdateSecurity";
const PREF_SYS_ADDON_UPDATE_ENABLED = "extensions.systemAddon.update.enabled";
+const PREF_EM_LAST_TORBROWSER_VERSION = "extensions.lastTorBrowserVersion";
const PREF_MIN_WEBEXT_PLATFORM_VERSION =
"extensions.webExtensionsMinPlatformVersion";
@@ -682,6 +684,28 @@ var AddonManagerInternal = {
);
}
+ // To ensure that extension and plugin code gets a chance to run
+ // after each browser update, set appChanged = true when the
+ // Tor Browser version has changed even if the Mozilla app
+ // version has not changed.
+ let tbChanged = undefined;
+ try {
+ tbChanged = AppConstants.TOR_BROWSER_VERSION !=
+ Services.prefs.getCharPref(PREF_EM_LAST_TORBROWSER_VERSION);
+ }
+ catch (e) { }
+ if (tbChanged !== false) {
+ // Because PREF_EM_LAST_TORBROWSER_VERSION was not present in older
+ // versions of Tor Browser, an app change is indicated when tbChanged
+ // is undefined or true.
+ if (appChanged === false) {
+ appChanged = true;
+ }
+
+ Services.prefs.setCharPref(PREF_EM_LAST_TORBROWSER_VERSION,
+ AppConstants.TOR_BROWSER_VERSION);
+ }
+
if (!MOZ_COMPATIBILITY_NIGHTLY) {
PREF_EM_CHECK_COMPATIBILITY =
PREF_EM_CHECK_COMPATIBILITY_BASE +
diff --git a/toolkit/mozapps/extensions/test/browser/head.js b/toolkit/mozapps/extensions/test/browser/head.js
index fddea608fcad..745fdaca6735 100644
--- a/toolkit/mozapps/extensions/test/browser/head.js
+++ b/toolkit/mozapps/extensions/test/browser/head.js
@@ -43,6 +43,7 @@ var PREF_CHECK_COMPATIBILITY;
var channel = Services.prefs.getCharPref("app.update.channel", "default");
if (
channel != "aurora" &&
+ channel != "alpha" &&
channel != "beta" &&
channel != "release" &&
channel != "esr"
diff --git a/toolkit/mozapps/extensions/test/xpcshell/head_addons.js b/toolkit/mozapps/extensions/test/xpcshell/head_addons.js
index ee5d06f16d49..adb43b70c301 100644
--- a/toolkit/mozapps/extensions/test/xpcshell/head_addons.js
+++ b/toolkit/mozapps/extensions/test/xpcshell/head_addons.js
@@ -379,6 +379,7 @@ function isNightlyChannel() {
return (
channel != "aurora" &&
+ channel != "alpha" &&
channel != "beta" &&
channel != "release" &&
channel != "esr"
diff --git a/toolkit/mozapps/update/UpdateService.jsm b/toolkit/mozapps/update/UpdateService.jsm
index a61c130497aa..855230e83c31 100644
--- a/toolkit/mozapps/update/UpdateService.jsm
+++ b/toolkit/mozapps/update/UpdateService.jsm
@@ -32,11 +32,15 @@ XPCOMUtils.defineLazyGlobalGetters(this, ["DOMParser", "XMLHttpRequest"]);
XPCOMUtils.defineLazyModuleGetters(this, {
AsyncShutdown: "resource://gre/modules/AsyncShutdown.jsm",
CertUtils: "resource://gre/modules/CertUtils.jsm",
+#ifdef XP_WIN
ctypes: "resource://gre/modules/ctypes.jsm",
+#endif
DeferredTask: "resource://gre/modules/DeferredTask.jsm",
OS: "resource://gre/modules/osfile.jsm",
UpdateUtils: "resource://gre/modules/UpdateUtils.jsm",
+#if !defined(TOR_BROWSER_UPDATE)
WindowsRegistry: "resource://gre/modules/WindowsRegistry.jsm",
+#endif
});
const UPDATESERVICE_CID = Components.ID(
@@ -296,6 +300,7 @@ function testWriteAccess(updateTestFile, createDirectory) {
updateTestFile.remove(false);
}
+#ifdef XP_WIN
/**
* Windows only function that closes a Win32 handle.
*
@@ -388,6 +393,7 @@ function getPerInstallationMutexName(aGlobal = true) {
(aGlobal ? "Global\\" : "") + "MozillaUpdateMutex-" + hasher.finish(true)
);
}
+#endif
/**
* Whether or not the current instance has the update mutex. The update mutex
@@ -398,6 +404,7 @@ function getPerInstallationMutexName(aGlobal = true) {
* @return true if this instance holds the update mutex
*/
function hasUpdateMutex() {
+#ifdef XP_WIN
if (AppConstants.platform != "win") {
return true;
}
@@ -405,6 +412,9 @@ function hasUpdateMutex() {
gUpdateMutexHandle = createMutex(getPerInstallationMutexName(true), false);
}
return !!gUpdateMutexHandle;
+#else
+ return true;
+#endif
}
/**
@@ -435,6 +445,11 @@ function areDirectoryEntriesWriteable(aDir) {
* @return true if elevation is required, false otherwise
*/
function getElevationRequired() {
+#if defined(TOR_BROWSER_UPDATE)
+ // To avoid potential security holes associated with running the updater
+ // process with elevated privileges, Tor Browser does not support elevation.
+ return false;
+#else
if (AppConstants.platform != "macosx") {
return false;
}
@@ -469,6 +484,7 @@ function getElevationRequired() {
"not required"
);
return false;
+#endif
}
/**
@@ -501,6 +517,7 @@ function getCanApplyUpdates() {
return false;
}
+#if !defined(TOR_BROWSER_UPDATE)
if (AppConstants.platform == "macosx") {
LOG(
"getCanApplyUpdates - bypass the write since elevation can be used " +
@@ -516,6 +533,7 @@ function getCanApplyUpdates() {
);
return true;
}
+#endif
try {
if (AppConstants.platform == "win") {
@@ -1203,6 +1221,9 @@ function handleUpdateFailure(update, errorCode) {
cancelations++;
Services.prefs.setIntPref(PREF_APP_UPDATE_CANCELATIONS, cancelations);
if (AppConstants.platform == "macosx") {
+#if defined(TOR_BROWSER_UPDATE)
+ cleanupActiveUpdate();
+#else
let osxCancelations = Services.prefs.getIntPref(
PREF_APP_UPDATE_CANCELATIONS_OSX,
0
@@ -1226,6 +1247,7 @@ function handleUpdateFailure(update, errorCode) {
(update.state = STATE_PENDING_ELEVATE)
);
}
+#endif
update.statusText = gUpdateBundle.GetStringFromName("elevationFailure");
} else {
writeStatusFile(getUpdatesDir(), (update.state = STATE_PENDING));
@@ -1752,7 +1774,26 @@ function Update(update) {
this._patches.push(patch);
}
- if (!this._patches.length && !update.hasAttribute("unsupported")) {
+ if (update.hasAttribute("unsupported")) {
+ this.unsupported = ("true" == update.getAttribute("unsupported"));
+ } else if (update.hasAttribute("minSupportedOSVersion")) {
+ let minOSVersion = update.getAttribute("minSupportedOSVersion");
+ try {
+ let osVersion = Services.sysinfo.getProperty("version");
+ this.unsupported = (Services.vc.compare(osVersion, minOSVersion) < 0);
+ } catch (e) {}
+ }
+ if (!this.unsupported && update.hasAttribute("minSupportedInstructionSet")) {
+ let minInstructionSet = update.getAttribute("minSupportedInstructionSet");
+ if (['MMX', 'SSE', 'SSE2', 'SSE3',
+ 'SSE4A', 'SSE4_1', 'SSE4_2'].indexOf(minInstructionSet) >= 0) {
+ try {
+ this.unsupported = !Services.sysinfo.getProperty("has" + minInstructionSet);
+ } catch (e) {}
+ }
+ }
+
+ if (!this._patches.length && !this.unsupported) {
throw Components.Exception("", Cr.NS_ERROR_ILLEGAL_VALUE);
}
@@ -1790,9 +1831,7 @@ function Update(update) {
if (!isNaN(attr.value)) {
this.promptWaitTime = parseInt(attr.value);
}
- } else if (attr.name == "unsupported") {
- this.unsupported = attr.value == "true";
- } else {
+ } else if (attr.name != "unsupported") {
switch (attr.name) {
case "appVersion":
case "buildID":
@@ -1817,7 +1856,11 @@ function Update(update) {
}
if (!this.previousAppVersion) {
+#ifdef TOR_BROWSER_UPDATE
+ this.previousAppVersion = AppConstants.TOR_BROWSER_VERSION;
+#else
this.previousAppVersion = Services.appinfo.version;
+#endif
}
if (!this.elevationFailure) {
@@ -2200,6 +2243,7 @@ UpdateService.prototype = {
Services.obs.removeObserver(this, topic);
Services.prefs.removeObserver(PREF_APP_UPDATE_LOG, this);
+#ifdef XP_WIN
if (AppConstants.platform == "win" && gUpdateMutexHandle) {
// If we hold the update mutex, let it go!
// The OS would clean this up sometime after shutdown,
@@ -2207,6 +2251,7 @@ UpdateService.prototype = {
closeHandle(gUpdateMutexHandle);
gUpdateMutexHandle = null;
}
+#endif
if (this._retryTimer) {
this._retryTimer.cancel();
}
@@ -2240,6 +2285,7 @@ UpdateService.prototype = {
}
break;
case "test-close-handle-update-mutex":
+#ifdef XP_WIN
if (Cu.isInAutomation) {
if (AppConstants.platform == "win" && gUpdateMutexHandle) {
LOG("UpdateService:observe - closing mutex handle for testing");
@@ -2247,6 +2293,7 @@ UpdateService.prototype = {
gUpdateMutexHandle = null;
}
}
+#endif
break;
}
},
@@ -2268,6 +2315,9 @@ UpdateService.prototype = {
*/
_postUpdateProcessing: function AUS__postUpdateProcessing() {
gUpdateFileWriteInfo = { phase: "startup", failure: false };
+#if defined(TOR_BROWSER_UPDATE) && !defined(XP_MACOSX)
+ this._removeOrphanedTorBrowserFiles();
+#endif
if (!this.canCheckForUpdates) {
LOG(
"UpdateService:_postUpdateProcessing - unable to check for " +
@@ -2504,6 +2554,42 @@ UpdateService.prototype = {
}
},
+#if defined(TOR_BROWSER_UPDATE) && !defined(XP_MACOSX)
+ /**
+ * When updating from an earlier version to Tor Browser 6.0 or later, old
+ * update info files are left behind on Linux and Windows. Remove them.
+ */
+ _removeOrphanedTorBrowserFiles: function AUS__removeOrphanedTorBrowserFiles() {
+ try {
+ let oldUpdateInfoDir = getAppBaseDir(); // aka the Browser directory.
+
+#ifdef XP_WIN
+ // On Windows, the updater files were stored under
+ // Browser/TorBrowser/Data/Browser/Caches/firefox/
+ oldUpdateInfoDir.appendRelativePath(
+ "TorBrowser\\Data\\Browser\\Caches\\firefox");
+#endif
+
+ // Remove the updates directory.
+ let updatesDir = oldUpdateInfoDir.clone();
+ updatesDir.append("updates");
+ if (updatesDir.exists() && updatesDir.isDirectory()) {
+ updatesDir.remove(true);
+ }
+
+ // Remove files: active-update.xml and updates.xml
+ let filesToRemove = [ "active-update.xml", "updates.xml" ];
+ filesToRemove.forEach(function(aFileName) {
+ let f = oldUpdateInfoDir.clone();
+ f.append(aFileName);
+ if (f.exists()) {
+ f.remove(false);
+ }
+ });
+ } catch (e) {}
+ },
+#endif
+
/**
* Register an observer when the network comes online, so we can short-circuit
* the app.update.interval when there isn't connectivity
@@ -2859,9 +2945,14 @@ UpdateService.prototype = {
updates.forEach(function(aUpdate) {
// Ignore updates for older versions of the application and updates for
// the same version of the application with the same build ID.
- if (
- vc.compare(aUpdate.appVersion, Services.appinfo.version) < 0 ||
- (vc.compare(aUpdate.appVersion, Services.appinfo.version) == 0 &&
+#ifdef TOR_BROWSER_UPDATE
+ let compatVersion = AppConstants.TOR_BROWSER_VERSION;
+#else
+ let compatVersion = Services.appinfo.version;
+#endif
+ let rc = vc.compare(aUpdate.appVersion, compatVersion);
+ if (rc < 0 ||
+ (rc == 0 &&
aUpdate.buildID == Services.appinfo.appBuildID)
) {
LOG(
@@ -3214,20 +3305,32 @@ UpdateService.prototype = {
// current application's version or the update's version is the same as the
// application's version and the build ID is the same as the application's
// build ID.
+#ifdef TOR_BROWSER_UPDATE
+ let compatVersion = AppConstants.TOR_BROWSER_VERSION;
+#else
+ let compatVersion = Services.appinfo.version;
+#endif
if (
update.appVersion &&
- (Services.vc.compare(update.appVersion, Services.appinfo.version) < 0 ||
+ (Services.vc.compare(update.appVersion, compatVersion) < 0 ||
(update.buildID &&
update.buildID == Services.appinfo.appBuildID &&
- update.appVersion == Services.appinfo.version))
+ update.appVersion == compatVersion))
) {
LOG(
"UpdateService:downloadUpdate - canceling download of update since " +
"it is for an earlier or same application version and build ID.\n" +
+#ifdef TOR_BROWSER_UPDATE
+ "current Tor Browser version: " +
+ compatVersion +
+ "\n" +
+ "update Tor Browser version : " +
+#else
"current application version: " +
- Services.appinfo.version +
+ compatVersion +
"\n" +
"update application version : " +
+#endif
update.appVersion +
"\n" +
"current build ID: " +
@@ -3805,6 +3908,7 @@ Checker.prototype = {
*/
_callback: null,
+#if !defined(TOR_BROWSER_UPDATE)
_getCanMigrate: function UC__getCanMigrate() {
if (AppConstants.platform != "win") {
return false;
@@ -3874,6 +3978,7 @@ Checker.prototype = {
LOG("Checker:_getCanMigrate - no registry entries for this installation");
return false;
},
+#endif // !defined(TOR_BROWSER_UPDATE)
/**
* The URL of the update service XML file to connect to that contains details
@@ -3902,9 +4007,11 @@ Checker.prototype = {
url += (url.includes("?") ? "&" : "?") + "force=1";
}
+#if !defined(TOR_BROWSER_UPDATE)
if (this._getCanMigrate()) {
url += (url.includes("?") ? "&" : "?") + "mig64=1";
}
+#endif
LOG("Checker:getUpdateURL - update URL: " + url);
return url;
diff --git a/toolkit/mozapps/update/UpdateServiceStub.jsm b/toolkit/mozapps/update/UpdateServiceStub.jsm
index 9524a8f61bfa..d44d0f9d7ad1 100644
--- a/toolkit/mozapps/update/UpdateServiceStub.jsm
+++ b/toolkit/mozapps/update/UpdateServiceStub.jsm
@@ -78,8 +78,12 @@ function UpdateServiceStub() {
// contains the status file's path
// We may need to migrate update data
+ // In Tor Browser we skip this because we do not use an update agent and we
+ // do not want to store any data outside of the browser installation directory.
+ // For more info, see https://bugzilla.mozilla.org/show_bug.cgi?id=1458314
if (
AppConstants.platform == "win" &&
+ !AppConstants.TOR_BROWSER_UPDATE &&
!Services.prefs.getBoolPref(prefUpdateDirMigrated, false)
) {
migrateUpdateDirectory();
diff --git a/toolkit/mozapps/update/common/updatehelper.cpp b/toolkit/mozapps/update/common/updatehelper.cpp
index b094d9eb75e9..b9d45c70c3d3 100644
--- a/toolkit/mozapps/update/common/updatehelper.cpp
+++ b/toolkit/mozapps/update/common/updatehelper.cpp
@@ -66,6 +66,13 @@ BOOL PathGetSiblingFilePath(LPWSTR destinationBuffer, LPCWSTR siblingFilePath,
* @return TRUE if successful
*/
BOOL GetSecureOutputDirectoryPath(LPWSTR outBuf) {
+# ifdef TOR_BROWSER_UPDATE
+ // This function is used to support the maintenance service and elevated
+ // updates and is therefore not called by Tor Browser's updater. We stub
+ // it out to avoid any chance that the Tor Browser updater will create
+ // files under C:\Program Files (x86)\ or a similar location.
+ return FALSE;
+# else
PWSTR progFilesX86;
if (FAILED(SHGetKnownFolderPath(FOLDERID_ProgramFilesX86, KF_FLAG_CREATE,
nullptr, &progFilesX86))) {
@@ -99,6 +106,7 @@ BOOL GetSecureOutputDirectoryPath(LPWSTR outBuf) {
}
return TRUE;
+# endif
}
/**
diff --git a/toolkit/mozapps/update/moz.build b/toolkit/mozapps/update/moz.build
index ddfda4571c31..d0c93895c1ec 100644
--- a/toolkit/mozapps/update/moz.build
+++ b/toolkit/mozapps/update/moz.build
@@ -22,11 +22,14 @@ EXTRA_COMPONENTS += [
EXTRA_JS_MODULES += [
'UpdateListener.jsm',
- 'UpdateService.jsm',
'UpdateServiceStub.jsm',
'UpdateTelemetry.jsm',
]
+EXTRA_PP_JS_MODULES += [
+ 'UpdateService.jsm',
+]
+
XPCOM_MANIFESTS += [
'components.conf',
]
diff --git a/toolkit/mozapps/update/updater/launchchild_osx.mm b/toolkit/mozapps/update/updater/launchchild_osx.mm
index f327e1f92a3a..003538377cf6 100644
--- a/toolkit/mozapps/update/updater/launchchild_osx.mm
+++ b/toolkit/mozapps/update/updater/launchchild_osx.mm
@@ -254,6 +254,7 @@ bool ObtainUpdaterArguments(int* argc, char*** argv) {
@end
+#ifndef TOR_BROWSER_UPDATE
bool ServeElevatedUpdate(int argc, const char** argv) {
MacAutoreleasePool pool;
@@ -269,6 +270,7 @@ bool ServeElevatedUpdate(int argc, const char** argv) {
[updater release];
return didSucceed;
}
+#endif
bool IsOwnedByGroupAdmin(const char* aAppBundle) {
MacAutoreleasePool pool;
diff --git a/toolkit/mozapps/update/updater/moz.build b/toolkit/mozapps/update/updater/moz.build
index a0eff9a3b7cd..ecc634c87037 100644
--- a/toolkit/mozapps/update/updater/moz.build
+++ b/toolkit/mozapps/update/updater/moz.build
@@ -49,7 +49,7 @@ xpcshell_cert.script = 'gen_cert_header.py:create_header'
dep1_cert.script = 'gen_cert_header.py:create_header'
dep2_cert.script = 'gen_cert_header.py:create_header'
-if CONFIG['MOZ_UPDATE_CHANNEL'] in ('beta', 'release', 'esr'):
+if CONFIG['MOZ_UPDATE_CHANNEL'] in ('alpha', 'beta', 'release', 'esr'):
primary_cert.inputs += ['release_primary.der']
secondary_cert.inputs += ['release_secondary.der']
elif CONFIG['MOZ_UPDATE_CHANNEL'] in ('nightly', 'aurora', 'nightly-elm',
diff --git a/toolkit/mozapps/update/updater/updater.cpp b/toolkit/mozapps/update/updater/updater.cpp
index 65b22be0ebc7..93ba412a59c1 100644
--- a/toolkit/mozapps/update/updater/updater.cpp
+++ b/toolkit/mozapps/update/updater/updater.cpp
@@ -16,7 +16,7 @@
* updatev3.manifest
* -----------------
* method = "add" | "add-if" | "add-if-not" | "patch" | "patch-if" |
- * "remove" | "rmdir" | "rmrfdir" | type
+ * "remove" | "rmdir" | "rmrfdir" | "addsymlink" | type
*
* 'add-if-not' adds a file if it doesn't exist.
*
@@ -78,7 +78,9 @@ bool IsRecursivelyWritable(const char* aPath);
void LaunchChild(int argc, const char** argv);
void LaunchMacPostProcess(const char* aAppBundle);
bool ObtainUpdaterArguments(int* argc, char*** argv);
+# ifndef TOR_BROWSER_UPDATE
bool ServeElevatedUpdate(int argc, const char** argv);
+# endif
void SetGroupOwnershipAndPermissions(const char* aAppBundle);
struct UpdateServerThreadArgs {
int argc;
@@ -475,9 +477,12 @@ static const NS_tchar* get_relative_path(const NS_tchar* fullpath) {
* The line from the manifest that contains the path.
* @param isdir
* Whether the path is a directory path. Defaults to false.
+ * @param islinktarget
+ * Whether the path is a symbolic link target. Defaults to false.
* @return valid filesystem path or nullptr if the path checks fail.
*/
-static NS_tchar* get_valid_path(NS_tchar** line, bool isdir = false) {
+static NS_tchar* get_valid_path(NS_tchar** line, bool isdir = false,
+ bool islinktarget = false) {
NS_tchar* path = mstrtok(kQuote, line);
if (!path) {
LOG(("get_valid_path: unable to determine path: " LOG_S, *line));
@@ -513,10 +518,12 @@ static NS_tchar* get_valid_path(NS_tchar** line, bool isdir = false) {
path[NS_tstrlen(path) - 1] = NS_T('\0');
}
- // Don't allow relative paths that resolve to a parent directory.
- if (NS_tstrstr(path, NS_T("..")) != nullptr) {
- LOG(("get_valid_path: paths must not contain '..': " LOG_S, path));
- return nullptr;
+ if (!islinktarget) {
+ // Don't allow relative paths that resolve to a parent directory.
+ if (NS_tstrstr(path, NS_T("..")) != nullptr) {
+ LOG(("get_valid_path: paths must not contain '..': " LOG_S, path));
+ return nullptr;
+ }
}
return path;
@@ -556,7 +563,7 @@ static void ensure_write_permissions(const NS_tchar* path) {
(void)_wchmod(path, _S_IREAD | _S_IWRITE);
#else
struct stat fs;
- if (!stat(path, &fs) && !(fs.st_mode & S_IWUSR)) {
+ if (!lstat(path, &fs) && !S_ISLNK(fs.st_mode) && !(fs.st_mode & S_IWUSR)) {
(void)chmod(path, fs.st_mode | S_IWUSR);
}
#endif
@@ -743,11 +750,9 @@ static int ensure_copy(const NS_tchar* path, const NS_tchar* dest) {
return READ_ERROR;
}
-# ifdef XP_UNIX
if (S_ISLNK(ss.st_mode)) {
return ensure_copy_symlink(path, dest);
}
-# endif
AutoFile infile(ensure_open(path, NS_T("rb"), ss.st_mode));
if (!infile) {
@@ -834,12 +839,19 @@ static int ensure_copy_recursive(const NS_tchar* path, const NS_tchar* dest,
return READ_ERROR;
}
-#ifdef XP_UNIX
+#ifndef XP_WIN
if (S_ISLNK(sInfo.st_mode)) {
return ensure_copy_symlink(path, dest);
}
#endif
+#ifdef XP_UNIX
+ // Ignore Unix domain sockets. See #20691.
+ if (S_ISSOCK(sInfo.st_mode)) {
+ return 0;
+ }
+#endif
+
if (!S_ISDIR(sInfo.st_mode)) {
return ensure_copy(path, dest);
}
@@ -896,7 +908,7 @@ static int rename_file(const NS_tchar* spath, const NS_tchar* dpath,
}
struct NS_tstat_t spathInfo;
- rv = NS_tstat(spath, &spathInfo);
+ rv = NS_tlstat(spath, &spathInfo); // Get info about file or symlink.
if (rv) {
LOG(("rename_file: failed to read file status info: " LOG_S ", "
"err: %d",
@@ -904,7 +916,12 @@ static int rename_file(const NS_tchar* spath, const NS_tchar* dpath,
return READ_ERROR;
}
- if (!S_ISREG(spathInfo.st_mode)) {
+#ifdef XP_WIN
+ if (!S_ISREG(spathInfo.st_mode))
+#else
+ if (!S_ISREG(spathInfo.st_mode) && !S_ISLNK(spathInfo.st_mode))
+#endif
+ {
if (allowDirs && !S_ISDIR(spathInfo.st_mode)) {
LOG(("rename_file: path present, but not a file: " LOG_S ", err: %d",
spath, errno));
@@ -913,7 +930,12 @@ static int rename_file(const NS_tchar* spath, const NS_tchar* dpath,
LOG(("rename_file: proceeding to rename the directory"));
}
- if (!NS_taccess(dpath, F_OK)) {
+#ifdef XP_WIN
+ if (!NS_taccess(dpath, F_OK))
+#else
+ if (!S_ISLNK(spathInfo.st_mode) && !NS_taccess(dpath, F_OK))
+#endif
+ {
if (ensure_remove(dpath)) {
LOG(
("rename_file: destination file exists and could not be "
@@ -933,7 +955,7 @@ static int rename_file(const NS_tchar* spath, const NS_tchar* dpath,
return OK;
}
-#ifdef XP_WIN
+#if defined(XP_WIN) && !defined(TOR_BROWSER_UPDATE)
// Remove the directory pointed to by path and all of its files and
// sub-directories. If a file is in use move it to the tobedeleted directory
// and attempt to schedule removal of the file on reboot
@@ -1032,7 +1054,19 @@ static int backup_restore(const NS_tchar* path, const NS_tchar* relPath) {
NS_tsnprintf(relBackup, sizeof(relBackup) / sizeof(relBackup[0]),
NS_T("%s") BACKUP_EXT, relPath);
- if (NS_taccess(backup, F_OK)) {
+ bool isLink = false;
+#ifndef XP_WIN
+ struct stat linkInfo;
+ int rv = lstat(backup, &linkInfo);
+ if (rv) {
+ LOG(("backup_restore: cannot get info for backup file: " LOG_S ", err: %d",
+ relBackup, errno));
+ return OK;
+ }
+ isLink = S_ISLNK(linkInfo.st_mode);
+#endif
+
+ if (!isLink && NS_taccess(backup, F_OK)) {
LOG(("backup_restore: backup file doesn't exist: " LOG_S, relBackup));
return OK;
}
@@ -1050,8 +1084,18 @@ static int backup_discard(const NS_tchar* path, const NS_tchar* relPath) {
NS_tsnprintf(relBackup, sizeof(relBackup) / sizeof(relBackup[0]),
NS_T("%s") BACKUP_EXT, relPath);
+ bool isLink = false;
+#ifndef XP_WIN
+ struct stat linkInfo;
+ int rv2 = lstat(backup, &linkInfo);
+ if (rv2) {
+ return OK; // File does not exist; nothing to do.
+ }
+ isLink = S_ISLNK(linkInfo.st_mode);
+#endif
+
// Nothing to discard
- if (NS_taccess(backup, F_OK)) {
+ if (!isLink && NS_taccess(backup, F_OK)) {
return OK;
}
@@ -1066,6 +1110,8 @@ static int backup_discard(const NS_tchar* path, const NS_tchar* relPath) {
relBackup, relPath));
return WRITE_ERROR_DELETE_BACKUP;
}
+
+# if !defined(TOR_BROWSER_UPDATE)
// The MoveFileEx call to remove the file on OS reboot will fail if the
// process doesn't have write access to the HKEY_LOCAL_MACHINE registry key
// but this is ok since the installer / uninstaller will delete the
@@ -1082,6 +1128,7 @@ static int backup_discard(const NS_tchar* path, const NS_tchar* relPath) {
"file: " LOG_S,
relPath));
}
+# endif
}
#else
if (rv) {
@@ -1136,7 +1183,7 @@ class Action {
class RemoveFile : public Action {
public:
- RemoveFile() : mSkip(0) {}
+ RemoveFile() : mSkip(0), mIsLink(0) {}
int Parse(NS_tchar* line) override;
int Prepare() override;
@@ -1147,6 +1194,7 @@ class RemoveFile : public Action {
mozilla::UniquePtr<NS_tchar[]> mFile;
mozilla::UniquePtr<NS_tchar[]> mRelPath;
int mSkip;
+ int mIsLink;
};
int RemoveFile::Parse(NS_tchar* line) {
@@ -1169,28 +1217,39 @@ int RemoveFile::Parse(NS_tchar* line) {
}
int RemoveFile::Prepare() {
- // Skip the file if it already doesn't exist.
- int rv = NS_taccess(mFile.get(), F_OK);
- if (rv) {
- mSkip = 1;
- mProgressCost = 0;
- return OK;
+ int rv;
+#ifndef XP_WIN
+ struct stat linkInfo;
+ rv = lstat(mFile.get(), &linkInfo);
+ mIsLink = ((0 == rv) && S_ISLNK(linkInfo.st_mode));
+#endif
+
+ if (!mIsLink) {
+ // Skip the file if it already doesn't exist.
+ rv = NS_taccess(mFile.get(), F_OK);
+ if (rv) {
+ mSkip = 1;
+ mProgressCost = 0;
+ return OK;
+ }
}
LOG(("PREPARE REMOVEFILE " LOG_S, mRelPath.get()));
- // Make sure that we're actually a file...
- struct NS_tstat_t fileInfo;
- rv = NS_tstat(mFile.get(), &fileInfo);
- if (rv) {
- LOG(("failed to read file status info: " LOG_S ", err: %d", mFile.get(),
- errno));
- return READ_ERROR;
- }
+ if (!mIsLink) {
+ // Make sure that we're actually a file...
+ struct NS_tstat_t fileInfo;
+ rv = NS_tstat(mFile.get(), &fileInfo);
+ if (rv) {
+ LOG(("failed to read file status info: " LOG_S ", err: %d", mFile.get(),
+ errno));
+ return READ_ERROR;
+ }
- if (!S_ISREG(fileInfo.st_mode)) {
- LOG(("path present, but not a file: " LOG_S, mFile.get()));
- return DELETE_ERROR_EXPECTED_FILE;
+ if (!S_ISREG(fileInfo.st_mode)) {
+ LOG(("path present, but not a file: " LOG_S, mFile.get()));
+ return DELETE_ERROR_EXPECTED_FILE;
+ }
}
NS_tchar* slash = (NS_tchar*)NS_tstrrchr(mFile.get(), NS_T('/'));
@@ -1219,7 +1278,13 @@ int RemoveFile::Execute() {
// The file is checked for existence here and in Prepare since it might have
// been removed by a separate instruction: bug 311099.
- int rv = NS_taccess(mFile.get(), F_OK);
+ int rv = 0;
+ if (mIsLink) {
+ struct NS_tstat_t linkInfo;
+ rv = NS_tlstat(mFile.get(), &linkInfo);
+ } else {
+ rv = NS_taccess(mFile.get(), F_OK);
+ }
if (rv) {
LOG(("file cannot be removed because it does not exist; skipping"));
mSkip = 1;
@@ -1942,6 +2007,92 @@ void PatchIfFile::Finish(int status) {
PatchFile::Finish(status);
}
+#ifndef XP_WIN
+class AddSymlink : public Action {
+ public:
+ AddSymlink() : mAdded(false) {}
+
+ virtual int Parse(NS_tchar* line);
+ virtual int Prepare();
+ virtual int Execute();
+ virtual void Finish(int status);
+
+ private:
+ mozilla::UniquePtr<NS_tchar[]> mLinkPath;
+ mozilla::UniquePtr<NS_tchar[]> mRelPath;
+ mozilla::UniquePtr<NS_tchar[]> mTarget;
+ bool mAdded;
+};
+
+int AddSymlink::Parse(NS_tchar* line) {
+ // format "<linkname>" "target"
+
+ NS_tchar* validPath = get_valid_path(&line);
+ if (!validPath) return PARSE_ERROR;
+
+ mRelPath = mozilla::MakeUnique<NS_tchar[]>(MAXPATHLEN);
+ NS_tstrcpy(mRelPath.get(), validPath);
+ mLinkPath.reset(get_full_path(validPath));
+ if (!mLinkPath) {
+ return PARSE_ERROR;
+ }
+
+ // consume whitespace between args
+ NS_tchar* q = mstrtok(kQuote, &line);
+ if (!q) return PARSE_ERROR;
+
+ validPath = get_valid_path(&line, false, true);
+ if (!validPath) return PARSE_ERROR;
+
+ mTarget = mozilla::MakeUnique<NS_tchar[]>(MAXPATHLEN);
+ NS_tstrcpy(mTarget.get(), validPath);
+
+ return OK;
+}
+
+int AddSymlink::Prepare() {
+ LOG(("PREPARE ADDSYMLINK " LOG_S " -> " LOG_S, mRelPath.get(),
+ mTarget.get()));
+
+ return OK;
+}
+
+int AddSymlink::Execute() {
+ LOG(("EXECUTE ADDSYMLINK " LOG_S " -> " LOG_S, mRelPath.get(),
+ mTarget.get()));
+
+ // First make sure that we can actually get rid of any existing file or link.
+ struct stat linkInfo;
+ int rv = lstat(mLinkPath.get(), &linkInfo);
+ if ((0 == rv) && !S_ISLNK(linkInfo.st_mode)) {
+ rv = NS_taccess(mLinkPath.get(), F_OK);
+ }
+ if (rv == 0) {
+ rv = backup_create(mLinkPath.get());
+ if (rv) return rv;
+ } else {
+ rv = ensure_parent_dir(mLinkPath.get());
+ if (rv) return rv;
+ }
+
+ // Create the link.
+ rv = symlink(mTarget.get(), mLinkPath.get());
+ if (!rv) {
+ mAdded = true;
+ }
+
+ return rv;
+}
+
+void AddSymlink::Finish(int status) {
+ LOG(("FINISH ADDSYMLINK " LOG_S " -> " LOG_S, mRelPath.get(), mTarget.get()));
+ // When there is an update failure and a link has been added it is removed
+ // here since there might not be a backup to replace it.
+ if (status && mAdded) NS_tremove(mLinkPath.get());
+ backup_finish(mLinkPath.get(), mRelPath.get(), status);
+}
+#endif
+
//-----------------------------------------------------------------------------
#ifdef XP_WIN
@@ -2279,14 +2430,29 @@ static bool IsSecureUpdateStatusSucceeded(bool& isSucceeded) {
*/
static int CopyInstallDirToDestDir() {
// These files should not be copied over to the updated app
-#ifdef XP_WIN
-# define SKIPLIST_COUNT 3
-#elif XP_MACOSX
-# define SKIPLIST_COUNT 0
+#if defined(TOR_BROWSER_UPDATE) && !defined(TOR_BROWSER_DATA_OUTSIDE_APP_DIR)
+# ifdef XP_WIN
+# define SKIPLIST_COUNT 6
+# else
+# define SKIPLIST_COUNT 5
+# endif
#else
-# define SKIPLIST_COUNT 2
+# ifdef XP_WIN
+# define SKIPLIST_COUNT 3
+# elif XP_MACOSX
+# define SKIPLIST_COUNT 0
+# else
+# define SKIPLIST_COUNT 2
+# endif
#endif
copy_recursive_skiplist<SKIPLIST_COUNT> skiplist;
+#if defined(TOR_BROWSER_UPDATE) && !defined(TOR_BROWSER_DATA_OUTSIDE_APP_DIR)
+# ifdef XP_MACOSX
+ skiplist.append(0, gInstallDirPath, NS_T("Updated.app"));
+ skiplist.append(1, gInstallDirPath, NS_T("TorBrowser/UpdateInfo/updates/0"));
+# endif
+#endif
+
#ifndef XP_MACOSX
skiplist.append(0, gInstallDirPath, NS_T("updated"));
skiplist.append(1, gInstallDirPath, NS_T("updates/0"));
@@ -2295,6 +2461,19 @@ static int CopyInstallDirToDestDir() {
# endif
#endif
+#if defined(TOR_BROWSER_UPDATE) && !defined(TOR_BROWSER_DATA_OUTSIDE_APP_DIR)
+# ifdef XP_WIN
+ skiplist.append(SKIPLIST_COUNT - 3, gInstallDirPath,
+ NS_T("TorBrowser/Data/Browser/profile.default/parent.lock"));
+# else
+ skiplist.append(SKIPLIST_COUNT - 3, gInstallDirPath,
+ NS_T("TorBrowser/Data/Browser/profile.default/.parentlock"));
+# endif
+
+ skiplist.append(SKIPLIST_COUNT - 1, gInstallDirPath,
+ NS_T("TorBrowser/Data/Tor/lock"));
+#endif
+
return ensure_copy_recursive(gInstallDirPath, gWorkingDirPath, skiplist);
}
@@ -2432,7 +2611,9 @@ static int ProcessReplaceRequest() {
if (NS_taccess(deleteDir, F_OK)) {
NS_tmkdir(deleteDir, 0755);
}
+# if !defined(TOR_BROWSER_UPDATE)
remove_recursive_on_reboot(tmpDir, deleteDir);
+# endif
#endif
}
@@ -2440,8 +2621,45 @@ static int ProcessReplaceRequest() {
// On OS X, we we need to remove the staging directory after its Contents
// directory has been moved.
NS_tchar updatedAppDir[MAXPATHLEN];
+# if defined(TOR_BROWSER_UPDATE) && !defined(TOR_BROWSER_DATA_OUTSIDE_APP_DIR)
+ NS_tsnprintf(updatedAppDir, sizeof(updatedAppDir) / sizeof(updatedAppDir[0]),
+ NS_T("%s/Updated.app"), gInstallDirPath);
+ // For Tor Browser on OS X, we also need to copy everything else that is
+ // inside Updated.app.
+ NS_tDIR* dir = NS_topendir(updatedAppDir);
+ if (dir) {
+ NS_tdirent* entry;
+ while ((entry = NS_treaddir(dir)) != 0) {
+ if (NS_tstrcmp(entry->d_name, NS_T(".")) &&
+ NS_tstrcmp(entry->d_name, NS_T(".."))) {
+ NS_tchar childSrcPath[MAXPATHLEN];
+ NS_tsnprintf(childSrcPath,
+ sizeof(childSrcPath) / sizeof(childSrcPath[0]),
+ NS_T("%s/%s"), updatedAppDir, entry->d_name);
+ NS_tchar childDstPath[MAXPATHLEN];
+ NS_tsnprintf(childDstPath,
+ sizeof(childDstPath) / sizeof(childDstPath[0]),
+ NS_T("%s/%s"), gInstallDirPath, entry->d_name);
+ ensure_remove_recursive(childDstPath);
+ rv = rename_file(childSrcPath, childDstPath, true);
+ if (rv) {
+ LOG(("Moving " LOG_S " to " LOG_S " failed, err: %d", childSrcPath,
+ childDstPath, errno));
+ }
+ }
+ }
+
+ NS_tclosedir(dir);
+ } else {
+ LOG(("Updated.app dir can't be found: " LOG_S ", err: %d", updatedAppDir,
+ errno));
+ }
+# else
NS_tsnprintf(updatedAppDir, sizeof(updatedAppDir) / sizeof(updatedAppDir[0]),
NS_T("%s/Updated.app"), gPatchDirPath);
+# endif
+
+ // Remove the Updated.app directory.
ensure_remove_recursive(updatedAppDir);
#endif
@@ -2620,11 +2838,15 @@ static void UpdateThreadFunc(void* param) {
#ifdef XP_MACOSX
static void ServeElevatedUpdateThreadFunc(void* param) {
+# ifdef TOR_BROWSER_UPDATE
+ WriteStatusFile(ELEVATION_CANCELED);
+# else
UpdateServerThreadArgs* threadArgs = (UpdateServerThreadArgs*)param;
gSucceeded = ServeElevatedUpdate(threadArgs->argc, threadArgs->argv);
if (!gSucceeded) {
WriteStatusFile(ELEVATION_CANCELED);
}
+# endif
QuitProgressUI();
}
@@ -2648,7 +2870,7 @@ int LaunchCallbackAndPostProcessApps(int argc, NS_tchar** argv,
#endif
) {
if (argc > callbackIndex) {
-#if defined(XP_WIN)
+#if defined(XP_WIN) && !defined(TOR_BROWSER_UPDATE)
if (gSucceeded) {
if (!LaunchWinPostProcess(gInstallDirPath, gPatchDirPath)) {
fprintf(stderr, "The post update process was not launched");
@@ -2703,8 +2925,12 @@ int NS_main(int argc, NS_tchar** argv) {
UmaskContext umaskContext(0);
bool isElevated =
+# ifdef TOR_BROWSER_UPDATE
+ false;
+# else
strstr(argv[0], "/Library/PrivilegedHelperTools/org.mozilla.updater") !=
0;
+# endif
if (isElevated) {
if (!ObtainUpdaterArguments(&argc, &argv)) {
// Won't actually get here because ObtainUpdaterArguments will terminate
@@ -3339,6 +3565,26 @@ int NS_main(int argc, NS_tchar** argv) {
// using the service is because we are testing.
if (!useService && !noServiceFallback &&
updateLockFileHandle == INVALID_HANDLE_VALUE) {
+# ifdef TOR_BROWSER_UPDATE
+# ifdef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+ // Because the TorBrowser-Data directory that contains the user's
+ // profile is a sibling of the Tor Browser installation directory,
+ // the user probably has permission to apply updates. Therefore, to
+ // avoid potential security issues such as CVE-2015-0833, do not
+ // attempt to elevate privileges. Instead, write a "failed" message
+ // to the update status file (this function will return immediately
+ // after the CloseHandle(elevatedFileHandle) call below).
+# else
+ // Because the user profile is contained within the Tor Browser
+ // installation directory, the user almost certainly has permission to
+ // apply updates. Therefore, to avoid potential security issues such
+ // as CVE-2015-0833, do not attempt to elevate privileges. Instead,
+ // write a "failed" message to the update status file (this function
+ // will return immediately after the CloseHandle(elevatedFileHandle)
+ // call below).
+# endif
+ WriteStatusFile(WRITE_ERROR_ACCESS_DENIED);
+# else
// Get the secure ID before trying to update so it is possible to
// determine if the updater has created a new one.
char uuidStringBefore[UUID_LEN] = {'\0'};
@@ -3384,6 +3630,7 @@ int NS_main(int argc, NS_tchar** argv) {
gCopyOutputFiles = false;
WriteStatusFile(ELEVATION_CANCELED);
}
+# endif
}
// Note: The PostUpdate process is launched by the elevated updater which
@@ -3718,6 +3965,7 @@ int NS_main(int argc, NS_tchar** argv) {
if (!sStagedUpdate && !sReplaceRequest && _wrmdir(gDeleteDirPath)) {
LOG(("NS_main: unable to remove directory: " LOG_S ", err: %d", DELETE_DIR,
errno));
+# if !defined(TOR_BROWSER_UPDATE)
// The directory probably couldn't be removed due to it containing files
// that are in use and will be removed on OS reboot. The call to remove the
// directory on OS reboot is done after the calls to remove the files so the
@@ -3736,6 +3984,7 @@ int NS_main(int argc, NS_tchar** argv) {
"directory: " LOG_S,
DELETE_DIR));
}
+# endif
}
#endif /* XP_WIN */
@@ -4377,7 +4626,13 @@ int DoUpdate() {
action = new AddIfNotFile();
} else if (NS_tstrcmp(token, NS_T("patch-if")) == 0) { // Patch if exists
action = new PatchIfFile();
- } else {
+ }
+#ifndef XP_WIN
+ else if (NS_tstrcmp(token, NS_T("addsymlink")) == 0) {
+ action = new AddSymlink();
+ }
+#endif
+ else {
LOG(("DoUpdate: unknown token: " LOG_S, token));
free(buf);
return PARSE_ERROR;
diff --git a/toolkit/xre/MacLaunchHelper.h b/toolkit/xre/MacLaunchHelper.h
index f8dc75ee4d08..ce816acd83e2 100644
--- a/toolkit/xre/MacLaunchHelper.h
+++ b/toolkit/xre/MacLaunchHelper.h
@@ -17,7 +17,9 @@ extern "C" {
* pid of the terminated process to confirm that it executed successfully.
*/
void LaunchChildMac(int aArgc, char** aArgv, pid_t* aPid = 0);
+#ifndef TOR_BROWSER_UPDATE
bool LaunchElevatedUpdate(int aArgc, char** aArgv, pid_t* aPid = 0);
+#endif
}
#endif
diff --git a/toolkit/xre/MacLaunchHelper.mm b/toolkit/xre/MacLaunchHelper.mm
index ec570ffab124..da2917c2a99e 100644
--- a/toolkit/xre/MacLaunchHelper.mm
+++ b/toolkit/xre/MacLaunchHelper.mm
@@ -40,6 +40,7 @@ void LaunchChildMac(int aArgc, char** aArgv, pid_t* aPid) {
}
}
+#ifndef TOR_BROWSER_UPDATE
BOOL InstallPrivilegedHelper() {
AuthorizationRef authRef = NULL;
OSStatus status = AuthorizationCreate(
@@ -116,3 +117,4 @@ bool LaunchElevatedUpdate(int aArgc, char** aArgv, pid_t* aPid) {
}
return didSucceed;
}
+#endif
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
index 1fd397f4aae8..2be7500d174d 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
@@ -2671,6 +2671,11 @@ static bool CheckCompatibility(nsIFile* aProfileDir, const nsCString& aVersion,
gLastAppBuildID.Assign(gAppData->buildID);
nsAutoCString buf;
+
+ nsAutoCString tbVersion(TOR_BROWSER_VERSION_QUOTED);
+ rv = parser.GetString("Compatibility", "LastTorBrowserVersion", buf);
+ if (NS_FAILED(rv) || !tbVersion.Equals(buf)) return false;
+
rv = parser.GetString("Compatibility", "LastOSABI", buf);
if (NS_FAILED(rv) || !aOSABI.Equals(buf)) return false;
@@ -2756,6 +2761,12 @@ static void WriteVersion(nsIFile* aProfileDir, const nsCString& aVersion,
PR_Write(fd, kHeader, sizeof(kHeader) - 1);
PR_Write(fd, aVersion.get(), aVersion.Length());
+ nsAutoCString tbVersion(TOR_BROWSER_VERSION_QUOTED);
+ static const char kTorBrowserVersionHeader[] =
+ NS_LINEBREAK "LastTorBrowserVersion=";
+ PR_Write(fd, kTorBrowserVersionHeader, sizeof(kTorBrowserVersionHeader) - 1);
+ PR_Write(fd, tbVersion.get(), tbVersion.Length());
+
static const char kOSABIHeader[] = NS_LINEBREAK "LastOSABI=";
PR_Write(fd, kOSABIHeader, sizeof(kOSABIHeader) - 1);
PR_Write(fd, aOSABI.get(), aOSABI.Length());
@@ -4203,8 +4214,17 @@ int XREMain::XRE_mainStartup(bool* aExitFlag) {
if (CheckArg("test-process-updates")) {
SaveToEnv("MOZ_TEST_PROCESS_UPDATES=1");
}
+# ifdef TOR_BROWSER_UPDATE
+ nsAutoCString compatVersion(TOR_BROWSER_VERSION_QUOTED);
+# endif
ProcessUpdates(mDirProvider.GetGREDir(), exeDir, updRoot, gRestartArgc,
- gRestartArgv, mAppData->version);
+ gRestartArgv,
+# ifdef TOR_BROWSER_UPDATE
+ compatVersion.get()
+# else
+ mAppData->version
+# endif
+ );
if (EnvHasValue("MOZ_TEST_PROCESS_UPDATES")) {
SaveToEnv("MOZ_TEST_PROCESS_UPDATES=");
*aExitFlag = true;
diff --git a/toolkit/xre/nsUpdateDriver.cpp b/toolkit/xre/nsUpdateDriver.cpp
index 6af227711642..55d1982504ed 100644
--- a/toolkit/xre/nsUpdateDriver.cpp
+++ b/toolkit/xre/nsUpdateDriver.cpp
@@ -159,6 +159,13 @@ static nsresult GetInstallDirPath(nsIFile* appDir, nsACString& installDirPath) {
return NS_OK;
}
+#ifdef DEBUG
+static void dump_argv(const char* aPrefix, char** argv, int argc) {
+ printf("%s - %d args\n", aPrefix, argc);
+ for (int i = 0; i < argc; ++i) printf(" %d: %s\n", i, argv[i]);
+}
+#endif
+
static bool GetFile(nsIFile* dir, const nsACString& name,
nsCOMPtr<nsIFile>& result) {
nsresult rv;
@@ -220,6 +227,34 @@ typedef enum {
eAppliedService,
} UpdateStatus;
+#ifdef DEBUG
+static const char* UpdateStatusToString(UpdateStatus aStatus) {
+ const char* rv = "unknown";
+ switch (aStatus) {
+ case eNoUpdateAction:
+ rv = "NoUpdateAction";
+ break;
+ case ePendingUpdate:
+ rv = "PendingUpdate";
+ break;
+ case ePendingService:
+ rv = "PendingService";
+ break;
+ case ePendingElevate:
+ rv = "PendingElevate";
+ break;
+ case eAppliedUpdate:
+ rv = "AppliedUpdate";
+ break;
+ case eAppliedService:
+ rv = "AppliedService";
+ break;
+ }
+
+ return rv;
+}
+#endif
+
/**
* Returns a value indicating what needs to be done in order to handle an
* update.
@@ -292,9 +327,39 @@ static bool IsOlderVersion(nsIFile* versionFile, const char* appVersion) {
return false;
}
+#ifdef DEBUG
+ printf("IsOlderVersion checking appVersion %s against updateVersion %s\n",
+ appVersion, buf);
+#endif
+
return mozilla::Version(appVersion) > buf;
}
+#ifndef TOR_BROWSER_DATA_OUTSIDE_APP_DIR
+# if defined(TOR_BROWSER_UPDATE) && defined(XP_MACOSX)
+static nsresult GetUpdateDirFromAppDir(nsIFile* aAppDir, nsIFile** aResult) {
+ // On Mac OSX, we stage the update to an Updated.app directory that is
+ // directly below the main Tor Browser.app directory (two levels up from
+ // the appDir).
+ NS_ENSURE_ARG_POINTER(aAppDir);
+ NS_ENSURE_ARG_POINTER(aResult);
+ nsCOMPtr<nsIFile> parentDir1, parentDir2;
+ nsresult rv = aAppDir->GetParent(getter_AddRefs(parentDir1));
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = parentDir1->GetParent(getter_AddRefs(parentDir2));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsCOMPtr<nsIFile> updatedDir;
+ if (!GetFile(parentDir2, NS_LITERAL_CSTRING("Updated.app"), updatedDir)) {
+ return NS_ERROR_FAILURE;
+ }
+
+ updatedDir.forget(aResult);
+ return NS_OK;
+}
+# endif
+#endif
+
/**
* Applies, switches, or stages an update.
*
@@ -442,7 +507,12 @@ static void ApplyUpdate(nsIFile* greDir, nsIFile* updateDir, nsIFile* appDir,
} else {
// Get the directory where the update is staged or will be staged.
#if defined(XP_MACOSX)
+# if defined(TOR_BROWSER_UPDATE) && !defined(TOR_BROWSER_DATA_OUTSIDE_APP_DIR)
+ rv = GetUpdateDirFromAppDir(appDir, getter_AddRefs(updatedDir));
+ if (NS_FAILED(rv)) {
+# else
if (!GetFile(updateDir, NS_LITERAL_CSTRING("Updated.app"), updatedDir)) {
+# endif
#else
if (!GetFile(appDir, NS_LITERAL_CSTRING("updated"), updatedDir)) {
#endif
@@ -537,6 +607,9 @@ static void ApplyUpdate(nsIFile* greDir, nsIFile* updateDir, nsIFile* appDir,
}
LOG(("spawning updater process [%s]\n", updaterPath.get()));
+#ifdef DEBUG
+ dump_argv("ApplyUpdate updater", argv, argc);
+#endif
#if defined(XP_UNIX) && !defined(XP_MACOSX)
// We use execv to spawn the updater process on all UNIX systems except Mac
@@ -574,6 +647,10 @@ static void ApplyUpdate(nsIFile* greDir, nsIFile* updateDir, nsIFile* appDir,
}
#elif defined(XP_MACOSX)
UpdateDriverSetupMacCommandLine(argc, argv, restart);
+# ifdef DEBUG
+dump_argv("ApplyUpdate after SetupMacCommandLine", argv, argc);
+# endif
+# ifndef TOR_BROWSER_UPDATE
// We need to detect whether elevation is required for this update. This can
// occur when an admin user installs the application, but another admin
// user attempts to update (see bug 394984).
@@ -586,6 +663,7 @@ if (restart && !IsRecursivelyWritable(installDirPath.get())) {
}
exit(0);
}
+# endif
if (isStaged) {
// Launch the updater to replace the installation with the staged updated.
@@ -656,9 +734,27 @@ static bool ProcessHasTerminated(ProcessType pt) {
nsresult ProcessUpdates(nsIFile* greDir, nsIFile* appDir, nsIFile* updRootDir,
int argc, char** argv, const char* appVersion,
bool restart, ProcessType* pid) {
+#if defined(XP_WIN) && defined(TOR_BROWSER_UPDATE)
+ // Try to remove the "tobedeleted" directory which, if present, contains
+ // files that could not be removed during a previous update (e.g., DLLs
+ // that were in use and therefore locked by Windows).
+ nsCOMPtr<nsIFile> deleteDir;
+ nsresult winrv = appDir->Clone(getter_AddRefs(deleteDir));
+ if (NS_SUCCEEDED(winrv)) {
+ winrv = deleteDir->AppendNative(NS_LITERAL_CSTRING("tobedeleted"));
+ if (NS_SUCCEEDED(winrv)) {
+ winrv = deleteDir->Remove(true);
+ }
+ }
+#endif
+
nsresult rv;
nsCOMPtr<nsIFile> updatesDir;
+#ifdef DEBUG
+ printf("ProcessUpdates updateRootDir: %s appVersion: %s\n",
+ updRootDir->HumanReadablePath().get(), appVersion);
+#endif
rv = updRootDir->Clone(getter_AddRefs(updatesDir));
NS_ENSURE_SUCCESS(rv, rv);
rv = updatesDir->AppendNative(NS_LITERAL_CSTRING("updates"));
@@ -678,6 +774,12 @@ nsresult ProcessUpdates(nsIFile* greDir, nsIFile* appDir, nsIFile* updRootDir,
nsCOMPtr<nsIFile> statusFile;
UpdateStatus status = GetUpdateStatus(updatesDir, statusFile);
+#ifdef DEBUG
+ printf("ProcessUpdates status: %s (%d)\n", UpdateStatusToString(status),
+ status);
+ printf("ProcessUpdates updatesDir: %s\n",
+ updatesDir->HumanReadablePath().get());
+#endif
switch (status) {
case ePendingUpdate:
case ePendingService: {
@@ -741,13 +843,16 @@ nsUpdateProcessor::ProcessUpdate() {
NS_ENSURE_SUCCESS(rv, rv);
}
+ nsAutoCString appVersion;
+#ifdef TOR_BROWSER_UPDATE
+ appVersion = TOR_BROWSER_VERSION_QUOTED;
+#else
nsCOMPtr<nsIXULAppInfo> appInfo =
do_GetService("@mozilla.org/xre/app-info;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
-
- nsAutoCString appVersion;
rv = appInfo->GetVersion(appVersion);
NS_ENSURE_SUCCESS(rv, rv);
+#endif
// Copy the parameters to the StagedUpdateInfo structure shared with the
// watcher thread.
diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
index 09f34911d3cb..e96b940e1172 100644
--- a/toolkit/xre/nsXREDirProvider.cpp
+++ b/toolkit/xre/nsXREDirProvider.cpp
@@ -1240,6 +1240,41 @@ nsresult nsXREDirProvider::GetUpdateRootDir(nsIFile** aResult,
}
#endif
nsCOMPtr<nsIFile> updRoot;
+#if defined(TOR_BROWSER_UPDATE)
+ // For Tor Browser, we store update history, etc. within the UpdateInfo
+ // directory under the user data directory.
+ nsresult rv = GetTorBrowserUserDataDir(getter_AddRefs(updRoot));
+ NS_ENSURE_SUCCESS(rv, rv);
+ rv = updRoot->AppendNative(NS_LITERAL_CSTRING("UpdateInfo"));
+ NS_ENSURE_SUCCESS(rv, rv);
+# if defined(XP_MACOSX) && defined(TOR_BROWSER_DATA_OUTSIDE_APP_DIR)
+ // Since the TorBrowser-Data directory may be shared among different
+ // installations of the application, embed the app path in the update dir
+ // so that the update history is partitioned. This is much less likely to
+ // be an issue on Linux or Windows because the Tor Browser packages for
+ // those platforms include a "container" folder that provides partitioning
+ // by default, and we do not support use of a shared, OS-recommended area
+ // for user data on those platforms.
+ nsCOMPtr<nsIFile> appFile;
+ bool per = false;
+ rv = GetFile(XRE_EXECUTABLE_FILE, &per, getter_AddRefs(appFile));
+ NS_ENSURE_SUCCESS(rv, rv);
+ nsCOMPtr<nsIFile> appRootDirFile;
+ nsAutoString appDirPath;
+ if (NS_FAILED(appFile->GetParent(getter_AddRefs(appRootDirFile))) ||
+ NS_FAILED(appRootDirFile->GetPath(appDirPath))) {
+ return NS_ERROR_FAILURE;
+ }
+
+ int32_t dotIndex = appDirPath.RFind(".app");
+ if (dotIndex == kNotFound) {
+ dotIndex = appDirPath.Length();
+ }
+ appDirPath = Substring(appDirPath, 1, dotIndex - 1);
+ rv = updRoot->AppendRelativePath(appDirPath);
+ NS_ENSURE_SUCCESS(rv, rv);
+# endif
+#else // ! TOR_BROWSER_UPDATE
nsCOMPtr<nsIFile> appFile;
bool per = false;
nsresult rv = GetFile(XRE_EXECUTABLE_FILE, &per, getter_AddRefs(appFile));
@@ -1247,7 +1282,7 @@ nsresult nsXREDirProvider::GetUpdateRootDir(nsIFile** aResult,
rv = appFile->GetParent(getter_AddRefs(updRoot));
NS_ENSURE_SUCCESS(rv, rv);
-#ifdef XP_MACOSX
+# ifdef XP_MACOSX
nsCOMPtr<nsIFile> appRootDirFile;
nsCOMPtr<nsIFile> localDir;
nsAutoString appDirPath;
@@ -1281,7 +1316,7 @@ nsresult nsXREDirProvider::GetUpdateRootDir(nsIFile** aResult,
localDir.forget(aResult);
return NS_OK;
-#elif XP_WIN
+# elif XP_WIN
nsAutoString installPath;
rv = updRoot->GetPath(installPath);
NS_ENSURE_SUCCESS(rv, rv);
@@ -1310,7 +1345,8 @@ nsresult nsXREDirProvider::GetUpdateRootDir(nsIFile** aResult,
nsAutoString updatePathStr;
updatePathStr.Assign(updatePath.get());
updRoot->InitWithPath(updatePathStr);
-#endif // XP_WIN
+# endif // XP_WIN
+#endif // ! TOR_BROWSER_UPDATE
updRoot.forget(aResult);
return NS_OK;
}
diff --git a/tools/update-packaging/common.sh b/tools/update-packaging/common.sh
index 69aef38c5ccc..78a8bdeb634b 100755
--- a/tools/update-packaging/common.sh
+++ b/tools/update-packaging/common.sh
@@ -8,6 +8,10 @@
# Author: Darin Fisher
#
+# TODO When TOR_BROWSER_DATA_OUTSIDE_APP_DIR is used on all platforms,
+# we should remove all lines in this file that contain:
+# TorBrowser/Data
+
# -----------------------------------------------------------------------------
QUIET=0
@@ -85,22 +89,10 @@ make_add_instruction() {
forced=
fi
- is_extension=$(echo "$f" | grep -c 'distribution/extensions/.*/')
- if [ $is_extension = "1" ]; then
- # Use the subdirectory of the extensions folder as the file to test
- # before performing this add instruction.
- testdir=$(echo "$f" | sed 's/\(.*distribution\/extensions\/[^\/]*\)\/.*/\1/')
- verbose_notice " add-if \"$testdir\" \"$f\""
- echo "add-if \"$testdir\" \"$f\"" >> "$filev2"
- if [ ! $filev3 = "" ]; then
- echo "add-if \"$testdir\" \"$f\"" >> "$filev3"
- fi
- else
- verbose_notice " add \"$f\"$forced"
- echo "add \"$f\"" >> "$filev2"
- if [ ! "$filev3" = "" ]; then
- echo "add \"$f\"" >> "$filev3"
- fi
+ verbose_notice " add \"$f\"$forced"
+ echo "add \"$f\"" >> "$filev2"
+ if [ ! "$filev3" = "" ]; then
+ echo "add \"$f\"" >> "$filev3"
fi
}
@@ -135,24 +127,25 @@ make_add_if_not_instruction() {
echo "add-if-not \"$f\" \"$f\"" >> "$filev3"
}
+make_addsymlink_instruction() {
+ link="$1"
+ target="$2"
+ filev2="$3"
+ filev3="$4"
+
+ verbose_notice " addsymlink: $link -> $target"
+ echo "addsymlink \"$link\" \"$target\"" >> "$filev2"
+ echo "addsymlink \"$link\" \"$target\"" >> "$filev3"
+}
+
make_patch_instruction() {
f="$1"
filev2="$2"
filev3="$3"
- is_extension=$(echo "$f" | grep -c 'distribution/extensions/.*/')
- if [ $is_extension = "1" ]; then
- # Use the subdirectory of the extensions folder as the file to test
- # before performing this add instruction.
- testdir=$(echo "$f" | sed 's/\(.*distribution\/extensions\/[^\/]*\)\/.*/\1/')
- verbose_notice " patch-if \"$testdir\" \"$f.patch\" \"$f\""
- echo "patch-if \"$testdir\" \"$f.patch\" \"$f\"" >> "$filev2"
- echo "patch-if \"$testdir\" \"$f.patch\" \"$f\"" >> "$filev3"
- else
- verbose_notice " patch \"$f.patch\" \"$f\""
- echo "patch \"$f.patch\" \"$f\"" >> "$filev2"
- echo "patch \"$f.patch\" \"$f\"" >> "$filev3"
- fi
+ verbose_notice " patch \"$f.patch\" \"$f\""
+ echo "patch \"$f.patch\" \"$f\"" >> "$filev2"
+ echo "patch \"$f.patch\" \"$f\"" >> "$filev3"
}
append_remove_instructions() {
@@ -201,6 +194,10 @@ append_remove_instructions() {
# List all files in the current directory, stripping leading "./"
# Pass a variable name and it will be filled as an array.
+# To support Tor Browser updates, skip the following files:
+# TorBrowser/Data/Browser/profiles.ini
+# TorBrowser/Data/Browser/profile.default/bookmarks.html
+# TorBrowser/Data/Tor/torrc
list_files() {
count=0
temp_filelist=$(mktemp)
@@ -211,6 +208,11 @@ list_files() {
| sed 's/\.\/\(.*\)/\1/' \
| sort -r > "${temp_filelist}"
while read file; do
+ if [ "$file" = "TorBrowser/Data/Browser/profiles.ini" -o \
+ "$file" = "TorBrowser/Data/Browser/profile.default/bookmarks.html" -o \
+ "$file" = "TorBrowser/Data/Tor/torrc" ]; then
+ continue;
+ fi
eval "${1}[$count]=\"$file\""
(( count++ ))
done < "${temp_filelist}"
@@ -232,3 +234,19 @@ list_dirs() {
done < "${temp_dirlist}"
rm "${temp_dirlist}"
}
+
+# List all symbolic links in the current directory, stripping leading "./"
+list_symlinks() {
+ count=0
+
+ find . -type l \
+ | sed 's/\.\/\(.*\)/\1/' \
+ | sort -r > "temp-symlinklist"
+ while read symlink; do
+ target=$(readlink "$symlink")
+ eval "${1}[$count]=\"$symlink\""
+ eval "${2}[$count]=\"$target\""
+ (( count++ ))
+ done < "temp-symlinklist"
+ rm "temp-symlinklist"
+}
diff --git a/tools/update-packaging/make_full_update.sh b/tools/update-packaging/make_full_update.sh
index a79a1839147c..e41d7870a9a2 100755
--- a/tools/update-packaging/make_full_update.sh
+++ b/tools/update-packaging/make_full_update.sh
@@ -69,6 +69,20 @@ if [ ! -f "precomplete" ]; then
fi
list_files files
+list_symlinks symlinks symlink_targets
+
+# TODO When TOR_BROWSER_DATA_OUTSIDE_APP_DIR is used on all platforms,
+# we should remove the following lines (which remove entire directories
+# which, if present, contain old, unpacked copies of HTTPS Everywhere):
+# Make sure we delete the pre 5.1.0 HTTPS Everywhere as well in case it
+# exists. The extension ID got changed with the version bump to 5.1.0.
+ext_path='TorBrowser/Data/Browser/profile.default/extensions'
+if [ -d "$ext_dir" ]; then
+ directories_to_remove="$ext_path/https-everywhere(a)eff.org $ext_path/https-everywhere-eff(a)eff.org"
+else
+ directories_to_remove=""
+fi
+# END TOR_BROWSER_DATA_OUTSIDE_APP_DIR removal
popd
@@ -81,6 +95,22 @@ notice " type complete"
echo "type \"complete\"" >> "$updatemanifestv2"
echo "type \"complete\"" >> "$updatemanifestv3"
+# TODO When TOR_BROWSER_DATA_OUTSIDE_APP_DIR is used on all platforms,
+# we should remove the following lines:
+# If removal of any old, existing directories is desired, emit the appropriate
+# rmrfdir commands.
+notice ""
+notice "Adding directory removal instructions to update manifests"
+for dir_to_remove in $directories_to_remove; do
+ # rmrfdir requires a trailing slash; if slash is missing, add one.
+ if ! [[ "$dir_to_remove" =~ /$ ]]; then
+ dir_to_remove="${dir_to_remove}/"
+ fi
+ echo "rmrfdir \"$dir_to_remove\"" >> "$updatemanifestv2"
+ echo "rmrfdir \"$dir_to_remove\"" >> "$updatemanifestv3"
+done
+# END TOR_BROWSER_DATA_OUTSIDE_APP_DIR removal
+
notice ""
notice "Adding file add instructions to update manifests"
num_files=${#files[*]}
@@ -109,6 +139,15 @@ for ((i=0; $i<$num_files; i=$i+1)); do
targetfiles="$targetfiles \"$f\""
done
+notice ""
+notice "Adding symlink add instructions to update manifests"
+num_symlinks=${#symlinks[*]}
+for ((i=0; $i<$num_symlinks; i=$i+1)); do
+ link="${symlinks[$i]}"
+ target="${symlink_targets[$i]}"
+ make_addsymlink_instruction "$link" "$target" "$updatemanifestv2" "$updatemanifestv3"
+done
+
# Append remove instructions for any dead files.
notice ""
notice "Adding file and directory remove instructions from file 'removed-files'"
diff --git a/tools/update-packaging/make_incremental_update.sh b/tools/update-packaging/make_incremental_update.sh
index 7b30cb5165fa..816384147dee 100755
--- a/tools/update-packaging/make_incremental_update.sh
+++ b/tools/update-packaging/make_incremental_update.sh
@@ -68,6 +68,21 @@ check_for_forced_update() {
## "true" *giggle*
return 0;
fi
+
+# TODO When TOR_BROWSER_DATA_OUTSIDE_APP_DIR is used on all platforms,
+# we should remove the following lines:
+ # If the file in the skip list ends with /*, do a prefix match.
+ # This allows TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org/*
+ # to be used to force all HTTPS Everywhere files to be updated.
+ f_suffix=${f##*/}
+ if [[ $f_suffix = "*" ]]; then
+ f_prefix="${f%\/\*}";
+ if [[ $forced_file_chk == $f_prefix* ]]; then
+ ## 0 means "true"
+ return 0;
+ fi
+ fi
+# END TOR_BROWSER_DATA_OUTSIDE_APP_DIR removal
done
## 'false'... because this is bash. Oh yay!
return 1;
@@ -78,7 +93,11 @@ if [ $# = 0 ]; then
exit 1
fi
-requested_forced_updates='Contents/MacOS/firefox'
+# Firefox uses requested_forced_updates='Contents/MacOS/firefox' due to
+# 770996 but in Tor Browser we do not need that fix.
+requested_forced_updates=""
+directories_to_remove=""
+extra_files_to_remove=""
while getopts "hqf:" flag
do
@@ -113,6 +132,83 @@ updatemanifestv2="$workdir/updatev2.manifest"
updatemanifestv3="$workdir/updatev3.manifest"
archivefiles="updatev2.manifest updatev3.manifest"
+# TODO When TOR_BROWSER_DATA_OUTSIDE_APP_DIR is used on all platforms,
+# we should remove the following lines:
+# If the NoScript or HTTPS Everywhere extensions have changed between
+# releases, add them to the "force updates" list.
+ext_path='TorBrowser/Data/Browser/profile.default/extensions'
+if [ -d "$newdir/$ext_path" ]; then
+ https_everywhere_dir='https-everywhere-eff(a)eff.org'
+ https_everywhere_xpi='https-everywhere-eff(a)eff.org.xpi'
+ noscript='{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi'
+
+ # NoScript is a packed extension, so we simply compare the old and the new
+ # .xpi files.
+ noscript_path="$ext_path/$noscript"
+ diff -a "$olddir/$noscript_path" "$newdir/$noscript_path" > /dev/null
+ rc=$?
+ if [ $rc -gt 1 ]; then
+ notice "Unexpected exit $rc from $noscript_path diff command"
+ exit 2
+ elif [ $rc -eq 1 ]; then
+ requested_forced_updates="$requested_forced_updates $noscript_path"
+ fi
+
+ # As of HTTPS Everywhere 5.1.0, the extension ID gained "-eff".
+ # As of HTTPS Everywhere 5.2.2, the extension is packed (i.e., it remains
+ # an .xpi after it is installed in the browser profile).
+ force_https_update=0
+ remove_unpacked_https_e_dirs=0
+ unpacked_https_e_install_rdf="$ext_path/$https_everywhere_dir/install.rdf"
+ packed_https_e_path="$ext_path/$https_everywhere_xpi"
+ if [ -d "$newdir/$ext_path/$https_everywhere_dir" ]; then
+ # The new HTTPS-E extension is unpacked, and presumably the old one is
+ # too. We need to determine if any of the unpacked files have changed.
+ # Since that is messy, we simply compare the old install.rdf file to the
+ # new one.
+ diff "$olddir/$unpacked_https_e_install_rdf" \
+ "$newdir/$unpacked_https_e_install_rdf" > /dev/null
+ rc=$?
+ if [ $rc -gt 1 -a -e "$olddir/$unpacked_https_e_install_rdf" ]; then
+ notice "Unexpected exit $rc from $unpacked_https_e_install_rdf diff command"
+ exit 2
+ elif [ $rc -ge 1 ]; then
+ force_https_update=1
+ remove_unpacked_https_e_dirs=1
+ # In case we still ship an unpacked HTTPS-E extension but the user has
+ # updated to a packed one, arrange for the packed one to be removed.
+ extra_files_to_remove="$extra_files_to_remove $packed_https_e_path"
+ fi
+ elif [ -d "$olddir/$ext_path/$https_everywhere_dir" ]; then
+ # The old HTTPS-E extension is unpacked but the new one is packed.
+ force_https_update=1
+ remove_unpacked_https_e_dirs=1
+ else
+ # Both the old and new HTTPS-E extensions are packed. In this case we can
+ # simply compare the .xpi files to determine if the extension has changed.
+ diff -a "$olddir/$packed_https_e_path" "$newdir/$packed_https_e_path" > /dev/null
+ rc=$?
+ if [ $rc -gt 1 ]; then
+ notice "Unexpected exit $rc from $packed_https_e_path diff command"
+ exit 2
+ elif [ $rc -eq 1 ]; then
+ force_https_update=1
+ fi
+ fi
+
+ if [ $force_https_update -ne 0 ]; then
+ requested_forced_updates="$requested_forced_updates $ext_path/$https_everywhere_dir/* $packed_https_e_path"
+ if [ "$remove_unpacked_https_e_dirs" -ne 0 ]; then
+ # The old version was unpacked, so remove the entire directory to ensure
+ # that the replace is "clean." Also, make sure we delete the pre 5.1.0
+ # HTTPS Everywhere as well in case it exists (the extension ID got
+ # changed with the version bump to 5.1.0).
+ directories_to_remove="$directories_to_remove $ext_path/https-everywhere(a)eff.org $ext_path/$https_everywhere_dir"
+ fi
+ fi
+fi
+# END TOR_BROWSER_DATA_OUTSIDE_APP_DIR removal
+
mkdir -p "$workdir"
# Generate a list of all files in the target directory.
@@ -123,6 +219,7 @@ fi
list_files oldfiles
list_dirs olddirs
+list_symlinks oldsymlinks oldsymlink_targets
popd
@@ -140,6 +237,7 @@ fi
list_dirs newdirs
list_files newfiles
+list_symlinks newsymlinks newsymlink_targets
popd
@@ -152,6 +250,23 @@ notice " type partial"
echo "type \"partial\"" >> $updatemanifestv2
echo "type \"partial\"" >> $updatemanifestv3
+# TODO When TOR_BROWSER_DATA_OUTSIDE_APP_DIR is used on all platforms,
+# we should remove the following lines:
+# If removal of any old, existing directories is desired, emit the appropriate
+# rmrfdir commands.
+notice ""
+notice "Adding directory removal instructions to update manifests"
+for dir_to_remove in $directories_to_remove; do
+ # rmrfdir requires a trailing slash, so add one if missing.
+ if ! [[ "$dir_to_remove" =~ /$ ]]; then
+ dir_to_remove="${dir_to_remove}/"
+ fi
+ echo "rmrfdir \"$dir_to_remove\"" >> "$updatemanifestv2"
+ echo "rmrfdir \"$dir_to_remove\"" >> "$updatemanifestv3"
+done
+# END TOR_BROWSER_DATA_OUTSIDE_APP_DIR removal
+
+
notice ""
notice "Adding file patch and add instructions to update manifests"
@@ -274,6 +389,24 @@ for ((i=0; $i<$num_oldfiles; i=$i+1)); do
fi
done
+# Remove and re-add symlinks
+notice ""
+notice "Adding symlink remove/add instructions to update manifests"
+num_oldsymlinks=${#oldsymlinks[*]}
+for ((i=0; $i<$num_oldsymlinks; i=$i+1)); do
+ link="${oldsymlinks[$i]}"
+ verbose_notice " remove: $link"
+ echo "remove \"$link\"" >> "$updatemanifestv2"
+ echo "remove \"$link\"" >> "$updatemanifestv3"
+done
+
+num_newsymlinks=${#newsymlinks[*]}
+for ((i=0; $i<$num_newsymlinks; i=$i+1)); do
+ link="${newsymlinks[$i]}"
+ target="${newsymlink_targets[$i]}"
+ make_addsymlink_instruction "$link" "$target" "$updatemanifestv2" "$updatemanifestv3"
+done
+
# Newly added files
notice ""
notice "Adding file add instructions to update manifests"
@@ -323,6 +456,15 @@ notice ""
notice "Adding file and directory remove instructions from file 'removed-files'"
append_remove_instructions "$newdir" "$updatemanifestv2" "$updatemanifestv3"
+# TODO When TOR_BROWSER_DATA_OUTSIDE_APP_DIR is used on all platforms,
+# we should remove the following lines:
+for f in $extra_files_to_remove; do
+ notice " remove \"$f\""
+ echo "remove \"$f\"" >> "$updatemanifestv2"
+ echo "remove \"$f\"" >> "$updatemanifestv3"
+done
+# END TOR_BROWSER_DATA_OUTSIDE_APP_DIR removal
+
notice ""
notice "Adding directory remove instructions for directories that no longer exist"
num_olddirs=${#olddirs[*]}
1
0

[tor-browser/tor-browser-78.1.0esr-10.0-1] Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by gk@torproject.org 07 Aug '20
by gk@torproject.org 07 Aug '20
07 Aug '20
commit 71c1388fe467b9a8ebc85aa511cc932fb1bb5aa2
Author: Mike Perry <mikeperry-git(a)torproject.org>
Date: Fri May 5 03:41:57 2017 -0700
Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
eBay and Amazon don't treat Tor users very well. Accounts often get locked and
payments reversed.
Also:
Bug 16322: Update DuckDuckGo search engine
We are replacing the clearnet URL with an onion service one (thanks to a
patch by a cypherpunk) and are removing the duplicated DDG search
engine. Duplicating DDG happend due to bug 1061736 where Mozilla
included DDG itself into Firefox. Interestingly, this caused breaking
the DDG search if JavaScript is disabled as the Mozilla engine, which
gets loaded earlier, does not use the html version of the search page.
Moreover, the Mozilla engine tracked where the users were searching from
by adding a respective parameter to the search query. We got rid of that
feature as well.
Also:
This fixes bug 20809: the DuckDuckGo team has changed its server-side
code in a way that lets users with JavaScript enabled use the default
landing page while those without JavaScript available get redirected
directly to the non-JS page. We adapt the search engine URLs
accordingly.
Also fixes bug 29798 by making sure we only specify the Google search
engine we actually ship an .xml file for.
Also regression tests.
---
browser/app/profile/000-tor-browser.js | 9 +-
.../search/extensions/ddg-onion/favicon.ico | Bin 0 -> 973 bytes
.../search/extensions/ddg-onion/manifest.json | 26 ++++
.../components/search/extensions/ddg/favicon.ico | Bin 5430 -> 0 bytes
.../components/search/extensions/ddg/favicon.png | Bin 0 -> 1150 bytes
.../components/search/extensions/ddg/manifest.json | 44 +------
.../extensions/google/_locales/b-1-d/messages.json | 23 ----
.../extensions/google/_locales/b-1-e/messages.json | 23 ----
.../extensions/google/_locales/b-d/messages.json | 23 ----
.../extensions/google/_locales/b-e/messages.json | 23 ----
.../extensions/google/_locales/en/messages.json | 24 ----
.../search/extensions/google/manifest.json | 17 ++-
browser/components/search/extensions/list.json | 141 ++++++---------------
.../search/extensions/startpage/favicon.png | Bin 0 -> 1150 bytes
.../search/extensions/startpage/manifest.json | 26 ++++
.../search/extensions/twitter/favicon.ico | Bin 0 -> 1650 bytes
.../search/extensions/twitter/manifest.json | 26 ++++
.../extensions/wikipedia/_locales/NN/messages.json | 20 ---
.../extensions/wikipedia/_locales/NO/messages.json | 20 ---
.../extensions/wikipedia/_locales/af/messages.json | 20 ---
.../extensions/wikipedia/_locales/an/messages.json | 20 ---
.../extensions/wikipedia/_locales/ar/messages.json | 20 ---
.../wikipedia/_locales/ast/messages.json | 20 ---
.../extensions/wikipedia/_locales/az/messages.json | 20 ---
.../wikipedia/_locales/be-tarask/messages.json | 20 ---
.../extensions/wikipedia/_locales/be/messages.json | 20 ---
.../extensions/wikipedia/_locales/bg/messages.json | 20 ---
.../extensions/wikipedia/_locales/bn/messages.json | 20 ---
.../extensions/wikipedia/_locales/br/messages.json | 20 ---
.../extensions/wikipedia/_locales/bs/messages.json | 20 ---
.../extensions/wikipedia/_locales/ca/messages.json | 20 ---
.../extensions/wikipedia/_locales/cy/messages.json | 20 ---
.../extensions/wikipedia/_locales/cz/messages.json | 20 ---
.../extensions/wikipedia/_locales/da/messages.json | 20 ---
.../extensions/wikipedia/_locales/de/messages.json | 20 ---
.../wikipedia/_locales/dsb/messages.json | 20 ---
.../extensions/wikipedia/_locales/el/messages.json | 20 ---
.../extensions/wikipedia/_locales/en/messages.json | 20 ---
.../extensions/wikipedia/_locales/eo/messages.json | 20 ---
.../extensions/wikipedia/_locales/es/messages.json | 20 ---
.../extensions/wikipedia/_locales/et/messages.json | 20 ---
.../extensions/wikipedia/_locales/eu/messages.json | 20 ---
.../extensions/wikipedia/_locales/fa/messages.json | 20 ---
.../extensions/wikipedia/_locales/fi/messages.json | 20 ---
.../extensions/wikipedia/_locales/fr/messages.json | 20 ---
.../wikipedia/_locales/fy-NL/messages.json | 20 ---
.../wikipedia/_locales/ga-IE/messages.json | 20 ---
.../extensions/wikipedia/_locales/gd/messages.json | 20 ---
.../extensions/wikipedia/_locales/gl/messages.json | 20 ---
.../extensions/wikipedia/_locales/gn/messages.json | 20 ---
.../extensions/wikipedia/_locales/gu/messages.json | 20 ---
.../extensions/wikipedia/_locales/he/messages.json | 20 ---
.../extensions/wikipedia/_locales/hi/messages.json | 20 ---
.../extensions/wikipedia/_locales/hr/messages.json | 20 ---
.../wikipedia/_locales/hsb/messages.json | 20 ---
.../extensions/wikipedia/_locales/hu/messages.json | 20 ---
.../extensions/wikipedia/_locales/hy/messages.json | 20 ---
.../extensions/wikipedia/_locales/ia/messages.json | 20 ---
.../extensions/wikipedia/_locales/id/messages.json | 20 ---
.../extensions/wikipedia/_locales/is/messages.json | 20 ---
.../extensions/wikipedia/_locales/it/messages.json | 20 ---
.../extensions/wikipedia/_locales/ja/messages.json | 20 ---
.../extensions/wikipedia/_locales/ka/messages.json | 20 ---
.../wikipedia/_locales/kab/messages.json | 20 ---
.../extensions/wikipedia/_locales/kk/messages.json | 20 ---
.../extensions/wikipedia/_locales/km/messages.json | 20 ---
.../extensions/wikipedia/_locales/kn/messages.json | 20 ---
.../extensions/wikipedia/_locales/kr/messages.json | 20 ---
.../wikipedia/_locales/lij/messages.json | 20 ---
.../extensions/wikipedia/_locales/lo/messages.json | 20 ---
.../extensions/wikipedia/_locales/lt/messages.json | 20 ---
.../wikipedia/_locales/ltg/messages.json | 20 ---
.../extensions/wikipedia/_locales/lv/messages.json | 20 ---
.../extensions/wikipedia/_locales/mk/messages.json | 20 ---
.../extensions/wikipedia/_locales/mr/messages.json | 20 ---
.../extensions/wikipedia/_locales/ms/messages.json | 20 ---
.../extensions/wikipedia/_locales/my/messages.json | 20 ---
.../extensions/wikipedia/_locales/ne/messages.json | 20 ---
.../extensions/wikipedia/_locales/nl/messages.json | 20 ---
.../extensions/wikipedia/_locales/oc/messages.json | 20 ---
.../extensions/wikipedia/_locales/pa/messages.json | 20 ---
.../extensions/wikipedia/_locales/pl/messages.json | 20 ---
.../extensions/wikipedia/_locales/pt/messages.json | 20 ---
.../extensions/wikipedia/_locales/rm/messages.json | 20 ---
.../extensions/wikipedia/_locales/ro/messages.json | 20 ---
.../extensions/wikipedia/_locales/ru/messages.json | 20 ---
.../extensions/wikipedia/_locales/si/messages.json | 20 ---
.../extensions/wikipedia/_locales/sk/messages.json | 20 ---
.../extensions/wikipedia/_locales/sl/messages.json | 20 ---
.../extensions/wikipedia/_locales/sq/messages.json | 20 ---
.../extensions/wikipedia/_locales/sr/messages.json | 20 ---
.../wikipedia/_locales/sv-SE/messages.json | 20 ---
.../extensions/wikipedia/_locales/ta/messages.json | 20 ---
.../extensions/wikipedia/_locales/te/messages.json | 20 ---
.../extensions/wikipedia/_locales/th/messages.json | 20 ---
.../extensions/wikipedia/_locales/tl/messages.json | 20 ---
.../extensions/wikipedia/_locales/tr/messages.json | 20 ---
.../extensions/wikipedia/_locales/uk/messages.json | 20 ---
.../extensions/wikipedia/_locales/ur/messages.json | 20 ---
.../extensions/wikipedia/_locales/uz/messages.json | 20 ---
.../extensions/wikipedia/_locales/vi/messages.json | 20 ---
.../extensions/wikipedia/_locales/wo/messages.json | 20 ---
.../wikipedia/_locales/zh-CN/messages.json | 20 ---
.../wikipedia/_locales/zh-TW/messages.json | 20 ---
.../search/extensions/wikipedia/manifest.json | 17 ++-
.../components/search/extensions/yahoo/favicon.ico | Bin 0 -> 5430 bytes
.../search/extensions/yahoo/manifest.json | 28 ++++
.../search/extensions/youtube/favicon.ico | Bin 0 -> 1150 bytes
.../search/extensions/youtube/manifest.json | 26 ++++
tbb-tests/browser_tor_omnibox.js | 14 ++
110 files changed, 211 insertions(+), 2019 deletions(-)
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index 7540f75d071f..aec44b1f933b 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -262,15 +262,20 @@ pref("browser.uiCustomization.state", "{\"placements\":{\"widget-overflow-fixed-
// Putting the search engine prefs into this file to fix #11236.
// Default search engine
-pref("browser.search.defaultenginename", "Search");
+pref("browser.search.defaultenginename", "data:text/plain,browser.search.defaultenginename=DuckDuckGo");
+// Make sure we use the same search engine regardless of locale
+pref("browser.search.geoSpecificDefaults", false);
// Search engine order (order displayed in the search bar dropdown)
// Somewhat surprisingly we get some random behavior if we specify more than
// two search engines as below. See
// https://bugzilla.mozilla.org/show_bug.cgi?id=1126722 for details.
-pref("browser.search.order.extra.1", "Search");
+pref("browser.search.order.extra.1", "DuckDuckGo");
pref("browser.search.order.extra.2", "YouTube");
+// Use old search config based on list.json
+pref("browser.search.modernConfig", false);
+
// Enforce certificate pinning, see: https://bugs.torproject.org/16206
pref("security.cert_pinning.enforcement_level", 2);
diff --git a/browser/components/search/extensions/ddg-onion/favicon.ico b/browser/components/search/extensions/ddg-onion/favicon.ico
new file mode 100644
index 000000000000..13c325f6585f
Binary files /dev/null and b/browser/components/search/extensions/ddg-onion/favicon.ico differ
diff --git a/browser/components/search/extensions/ddg-onion/manifest.json b/browser/components/search/extensions/ddg-onion/manifest.json
new file mode 100644
index 000000000000..294496b78368
--- /dev/null
+++ b/browser/components/search/extensions/ddg-onion/manifest.json
@@ -0,0 +1,26 @@
+{
+ "name": "DuckDuckGoOnion",
+ "description": "Duck Duck Go Onion",
+ "manifest_version": 2,
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "id": "ddg-onion(a)search.mozilla.org"
+ }
+ },
+ "hidden": true,
+ "icons": {
+ "16": "favicon.ico"
+ },
+ "web_accessible_resources": [
+ "favicon.ico"
+ ],
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "name": "DuckDuckGoOnion",
+ "search_url": "https://3g2upl4pq6kufc4m.onion",
+ "search_form": "https://3g2upl4pq6kufc4m.onion",
+ "search_url_post_params": "q={searchTerms}"
+ }
+ }
+}
\ No newline at end of file
diff --git a/browser/components/search/extensions/ddg/favicon.ico b/browser/components/search/extensions/ddg/favicon.ico
deleted file mode 100644
index dda80dfd88d5..000000000000
Binary files a/browser/components/search/extensions/ddg/favicon.ico and /dev/null differ
diff --git a/browser/components/search/extensions/ddg/favicon.png b/browser/components/search/extensions/ddg/favicon.png
new file mode 100644
index 000000000000..c853b95b89ef
Binary files /dev/null and b/browser/components/search/extensions/ddg/favicon.png differ
diff --git a/browser/components/search/extensions/ddg/manifest.json b/browser/components/search/extensions/ddg/manifest.json
index b15330b16bf5..77400611ee20 100644
--- a/browser/components/search/extensions/ddg/manifest.json
+++ b/browser/components/search/extensions/ddg/manifest.json
@@ -10,51 +10,19 @@
},
"hidden": true,
"icons": {
- "16": "favicon.ico"
+ "16": "favicon.png"
},
"web_accessible_resources": [
- "favicon.ico"
+ "favicon.png"
],
"chrome_settings_overrides": {
"search_provider": {
"name": "DuckDuckGo",
- "search_url": "https://duckduckgo.com/",
- "search_form": "https://duckduckgo.com/?q={searchTerms}",
- "search_url_get_params": "q={searchTerms}",
- "params": [
- {
- "name": "t",
- "condition": "purpose",
- "purpose": "contextmenu",
- "value": "ffcm"
- },
- {
- "name": "t",
- "condition": "purpose",
- "purpose": "keyword",
- "value": "ffab"
- },
- {
- "name": "t",
- "condition": "purpose",
- "purpose": "searchbar",
- "value": "ffsb"
- },
- {
- "name": "t",
- "condition": "purpose",
- "purpose": "homepage",
- "value": "ffhp"
- },
- {
- "name": "t",
- "condition": "purpose",
- "purpose": "newtab",
- "value": "ffnt"
- }
- ],
+ "search_url": "https://duckduckgo.com",
+ "search_form": "https://duckduckgo.com",
+ "search_url_post_params": "q={searchTerms}",
"suggest_url": "https://ac.duckduckgo.com/ac/",
"suggest_url_get_params": "q={searchTerms}&type=list"
}
}
-}
\ No newline at end of file
+}
diff --git a/browser/components/search/extensions/google/_locales/b-1-d/messages.json b/browser/components/search/extensions/google/_locales/b-1-d/messages.json
deleted file mode 100644
index 1b9d05307d64..000000000000
--- a/browser/components/search/extensions/google/_locales/b-1-d/messages.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "extensionName": {
- "message": "Google"
- },
- "extensionDescription": {
- "message": "Google Search"
- },
- "searchUrl": {
- "message": "https://www.google.com/search"
- },
- "searchForm": {
- "message": "https://www.google.com/search?client=firefox-b-1-d&q={searchTerms}"
- },
- "suggestUrl": {
- "message": "https://www.google.com/complete/search?client=firefox&q={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "client=firefox-b-1-d&q={searchTerms}"
- },
- "channelPref": {
- "message": "google_channel_us"
- }
-}
diff --git a/browser/components/search/extensions/google/_locales/b-1-e/messages.json b/browser/components/search/extensions/google/_locales/b-1-e/messages.json
deleted file mode 100644
index b470cd844331..000000000000
--- a/browser/components/search/extensions/google/_locales/b-1-e/messages.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "extensionName": {
- "message": "Google"
- },
- "extensionDescription": {
- "message": "Google Search"
- },
- "searchUrl": {
- "message": "https://www.google.com/search"
- },
- "searchForm": {
- "message": "https://www.google.com/search?client=firefox-b-1-e&q={searchTerms}"
- },
- "suggestUrl": {
- "message": "https://www.google.com/complete/search?client=firefox&q={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "client=firefox-b-1-e&q={searchTerms}"
- },
- "channelPref": {
- "message": "google_channel_us"
- }
-}
diff --git a/browser/components/search/extensions/google/_locales/b-d/messages.json b/browser/components/search/extensions/google/_locales/b-d/messages.json
deleted file mode 100644
index a6423089d9f9..000000000000
--- a/browser/components/search/extensions/google/_locales/b-d/messages.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "extensionName": {
- "message": "Google"
- },
- "extensionDescription": {
- "message": "Google Search"
- },
- "searchUrl": {
- "message": "https://www.google.com/search"
- },
- "searchForm": {
- "message": "https://www.google.com/search?client=firefox-b-d&q={searchTerms}"
- },
- "suggestUrl": {
- "message": "https://www.google.com/complete/search?client=firefox&q={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "client=firefox-b-d&q={searchTerms}"
- },
- "channelPref": {
- "message": "google_channel_row"
- }
-}
diff --git a/browser/components/search/extensions/google/_locales/b-e/messages.json b/browser/components/search/extensions/google/_locales/b-e/messages.json
deleted file mode 100644
index 70939ee00074..000000000000
--- a/browser/components/search/extensions/google/_locales/b-e/messages.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "extensionName": {
- "message": "Google"
- },
- "extensionDescription": {
- "message": "Google Search"
- },
- "searchUrl": {
- "message": "https://www.google.com/search"
- },
- "searchForm": {
- "message": "https://www.google.com/search?client=firefox-b-e&q={searchTerms}"
- },
- "suggestUrl": {
- "message": "https://www.google.com/complete/search?client=firefox&q={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "client=firefox-b-e&q={searchTerms}"
- },
- "channelPref": {
- "message": "google_channel_row"
- }
-}
diff --git a/browser/components/search/extensions/google/_locales/en/messages.json b/browser/components/search/extensions/google/_locales/en/messages.json
deleted file mode 100644
index aeca0ef128b3..000000000000
--- a/browser/components/search/extensions/google/_locales/en/messages.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "extensionName": {
- "message": "Google"
- },
- "extensionDescription": {
- "message": "Google Search"
- },
- "searchUrl": {
- "message": "https://www.google.com/search"
- },
- "searchForm": {
- "message": "https://www.google.com/search?client=firefox-b-d&q={searchTerms}"
- },
- "suggestUrl": {
- "message": "https://www.google.com/complete/search?client=firefox&q={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "client=firefox-b-d&q={searchTerms}"
- },
- "channelPref": {
- "message": "google_channel_row"
- }
-
-}
diff --git a/browser/components/search/extensions/google/manifest.json b/browser/components/search/extensions/google/manifest.json
index d51213b52d22..b62de30cb7fa 100644
--- a/browser/components/search/extensions/google/manifest.json
+++ b/browser/components/search/extensions/google/manifest.json
@@ -1,6 +1,6 @@
{
- "name": "__MSG_extensionName__",
- "description": "__MSG_extensionDescription__",
+ "name": "Google",
+ "description": "Google Search",
"manifest_version": 2,
"version": "1.0",
"applications": {
@@ -9,7 +9,6 @@
}
},
"hidden": true,
- "default_locale": "en",
"icons": {
"16": "favicon.ico"
},
@@ -18,18 +17,18 @@
],
"chrome_settings_overrides": {
"search_provider": {
- "name": "__MSG_extensionName__",
- "search_url": "__MSG_searchUrl__",
- "search_form": "__MSG_searchForm__",
- "suggest_url": "__MSG_suggestUrl__",
+ "name": "Google",
+ "search_url": "https://www.google.com/search",
+ "search_form": "https://www.google.com/search?client=firefox-b-d&q={searchTerms}",
+ "suggest_url": "https://www.google.com/complete/search?client=firefox&q={searchTerms}",
"params": [
{
"name": "channel",
"condition": "pref",
- "pref": "__MSG_channelPref__"
+ "pref": "google_channel_row"
}
],
- "search_url_get_params": "__MSG_searchUrlGetParams__"
+ "search_url_get_params": "client=firefox-b-d&q={searchTerms}"
}
}
}
diff --git a/browser/components/search/extensions/list.json b/browser/components/search/extensions/list.json
index 52b2da3ada2d..04f198072b3d 100644
--- a/browser/components/search/extensions/list.json
+++ b/browser/components/search/extensions/list.json
@@ -1,86 +1,20 @@
{
"default": {
- "searchDefault": "Google",
- "searchOrder": ["Google", "Bing"],
+ "searchDefault": "DuckDuckGo",
+ "searchOrder": ["DuckDuckGo", "YouTube", "Google"],
"visibleDefaultEngines": [
- "google-b-d", "amazondotcom", "bing", "ddg", "ebay", "wikipedia"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
},
"regionOverrides": {
- "US": {
- "google-b-d": "google-b-1-d"
- },
- "CA": {
- "ebay": "ebay-ca",
- "ebay-fr": "ebay-ca",
- "amazondotcom": "amazon-ca",
- "amazon-france": "amazon-ca"
- },
- "AT": {
- "ebay-de": "ebay-at"
- },
- "AU": {
- "ebay": "ebay-au",
- "ebay-uk": "ebay-au",
- "amazondotcom": "amazon-au",
- "amazon-en-GB": "amazon-au"
- },
- "BE": {
- "ebay": "ebay-be",
- "ebay-nl": "ebay-be",
- "ebay-fr": "ebay-be"
- },
- "CH": {
- "ebay": "ebay-ch",
- "ebay-de": "ebay-ch",
- "ebay-fr": "ebay-ch"
- },
- "FR": {
- "amazondotcom": "amazon-france"
- },
- "IE": {
- "ebay": "ebay-ie",
- "ebay-uk": "ebay-ie"
- },
- "NL": {
- "ebay": "ebay-nl"
- },
- "GB": {
- "ebay": "ebay-uk",
- "amazondotcom": "amazon-en-GB"
- }
},
"locales": {
"en-US": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "amazondotcom", "bing", "ddg", "ebay", "wikipedia"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
},
- "KZ": {
- "visibleDefaultEngines": [
- "amazondotcom", "bing", "google-b-d", "wikipedia", "ddg", "yandex-en"
- ],
- "searchDefault": "Yandex"
- },
- "BY": {
- "visibleDefaultEngines": [
- "amazondotcom", "bing", "google-b-d", "wikipedia", "ddg", "yandex-en"
- ],
- "searchDefault": "Yandex"
- },
- "RU": {
- "visibleDefaultEngines": [
- "amazondotcom", "bing", "google-b-d", "wikipedia", "ddg", "yandex-en"
- ],
- "searchDefault": "Yandex"
- },
- "TR": {
- "visibleDefaultEngines": [
- "amazondotcom", "bing", "google-b-d", "wikipedia", "ddg", "yandex-en"
- ],
- "searchDefault": "Yandex"
- },
"experimental-hidden": {
"visibleDefaultEngines": [
"amazon-ca", "amazon-au", "yandex-en", "google", "google-b-1-e", "google-b-e"
@@ -111,7 +45,7 @@
"ar": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ar"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -207,7 +141,7 @@
"ca": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "diec2", "ddg", "ebay-es", "wikipedia-ca"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -234,9 +168,8 @@
},
"cs": {
"default": {
- "searchOrder": ["Google", "Seznam"],
"visibleDefaultEngines": [
- "google-b-d", "seznam-cz", "ddg", "heureka-cz", "mapy-cz", "wikipedia-cz"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -250,14 +183,14 @@
"da": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "amazon-en-GB", "ddg", "wikipedia-da"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
"de": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "amazon-de", "bing", "ddg", "ebay-de", "ecosia", "leo_ende_de", "wikipedia-de"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -271,7 +204,7 @@
"el": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "amazon-en-GB", "bing", "ddg", "wikipedia-el"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -357,7 +290,7 @@
"es-AR": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "amazondotcom", "drae", "ddg", "mercadolibre-ar", "wikipedia-es"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -371,7 +304,7 @@
"es-ES": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "drae", "ddg", "ebay-es", "wikipedia-es"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -404,7 +337,7 @@
"fa": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "amazondotcom", "bing", "ddg", "wikipedia-fa"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -425,7 +358,7 @@
"fr": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "amazon-france", "ddg", "ebay-fr", "qwant", "wikipedia-fr"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -444,7 +377,7 @@
"ga-IE": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "amazon-en-GB", "ddg", "ebay-ie", "tearma", "wikipedia-ga-IE"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -479,7 +412,7 @@
"he": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "ddg", "wikipedia-he", "morfix-dic"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -507,7 +440,7 @@
"hu": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "ddg", "vatera", "wikipedia-hu"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -535,44 +468,42 @@
"id": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "ddg", "wikipedia-id"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
"is": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-is"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
"it": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "amazon-it", "ddg", "ebay-it", "wikipedia-it"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
"ja-JP-macos": {
"default": {
- "searchOrder": ["Google", "Yahoo! JAPAN", "Bing", "Amazon.co.jp", "楽天市場", "ヤフオク!", "教えて!goo", "Wikipedia (ja)"],
"visibleDefaultEngines": [
- "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "wikipedia-ja", "ddg"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
"ja": {
"default": {
- "searchOrder": ["Google", "Yahoo! JAPAN", "Bing", "Amazon.co.jp", "楽天市場", "ヤフオク!", "教えて!goo", "Wikipedia (ja)"],
"visibleDefaultEngines": [
- "google-b-d", "yahoo-jp", "bing", "amazon-jp", "rakuten", "yahoo-jp-auctions", "oshiete-goo", "wikipedia-ja", "ddg"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
"ka": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ka"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -619,7 +550,7 @@
"ko": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "ddg", "naver-kr", "daum-kr", "wikipedia-kr"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -668,7 +599,7 @@
"mk": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-mk"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -696,7 +627,7 @@
"nb-NO": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "amazon-en-GB", "bing", "ddg", "gulesider-NO", "bok-NO", "qxl-NO", "wikipedia-NO"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -710,7 +641,7 @@
"nl": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "bolcom-nl", "ddg", "ebay-nl", "marktplaats-nl", "wikipedia-nl"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
},
"experimental-hidden": {
@@ -743,14 +674,14 @@
"pl": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "allegro-pl", "ddg", "pwn-pl", "wikipedia-pl", "wolnelektury-pl"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
"pt-BR": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "ddg", "mercadolivre", "wikipedia-pt"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -771,14 +702,14 @@
"ro": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "amazondotcom", "ddg", "wikipedia-ro"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
"ru": {
"default": {
"visibleDefaultEngines": [
- "yandex-ru", "google-b-d", "ddg", "ozonru", "priceru", "wikipedia-ru", "mailru"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
},
"RU": {
@@ -846,7 +777,7 @@
"sv-SE": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "bing", "allaannonser-sv-SE", "ddg", "prisjakt-sv-SE", "tyda-sv-SE", "wikipedia-sv-SE"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -881,7 +812,7 @@
"tr": {
"default": {
"visibleDefaultEngines": [
- "yandex-tr", "google-b-d", "ddg", "wikipedia-tr"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
},
"TR": {
@@ -928,7 +859,7 @@
"vi": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "coccoc", "ddg", "wikipedia-vi"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
},
@@ -949,7 +880,7 @@
"zh-CN": {
"default": {
"visibleDefaultEngines": [
- "baidu", "google-b-d", "bing", "ddg", "wikipedia-zh-CN", "amazondotcn"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
},
"CN": {
@@ -959,7 +890,7 @@
"zh-TW": {
"default": {
"visibleDefaultEngines": [
- "google-b-d", "ddg", "readmoo", "wikipedia-zh-TW"
+ "ddg", "ddg-onion", "google", "yahoo", "twitter", "wikipedia", "youtube", "startpage"
]
}
}
diff --git a/browser/components/search/extensions/startpage/favicon.png b/browser/components/search/extensions/startpage/favicon.png
new file mode 100644
index 000000000000..44b94a986fd2
Binary files /dev/null and b/browser/components/search/extensions/startpage/favicon.png differ
diff --git a/browser/components/search/extensions/startpage/manifest.json b/browser/components/search/extensions/startpage/manifest.json
new file mode 100644
index 000000000000..c9bd9e1848d0
--- /dev/null
+++ b/browser/components/search/extensions/startpage/manifest.json
@@ -0,0 +1,26 @@
+{
+ "name": "Startpage",
+ "description": "Start Page",
+ "manifest_version": 2,
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "id": "startpage(a)search.mozilla.org"
+ }
+ },
+ "hidden": true,
+ "icons": {
+ "16": "favicon.png"
+ },
+ "web_accessible_resources": [
+ "favicon.png"
+ ],
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "name": "Startpage",
+ "search_url": "https://startpage.com/rto/search",
+ "search_form": "https://startpage.com/rto/search/",
+ "search_url_post_params": "q={searchTerms}"
+ }
+ }
+}
\ No newline at end of file
diff --git a/browser/components/search/extensions/twitter/favicon.ico b/browser/components/search/extensions/twitter/favicon.ico
new file mode 100644
index 000000000000..e5aaff437912
Binary files /dev/null and b/browser/components/search/extensions/twitter/favicon.ico differ
diff --git a/browser/components/search/extensions/twitter/manifest.json b/browser/components/search/extensions/twitter/manifest.json
new file mode 100644
index 000000000000..59714e0e1045
--- /dev/null
+++ b/browser/components/search/extensions/twitter/manifest.json
@@ -0,0 +1,26 @@
+{
+ "name": "Twitter",
+ "description": "Realtime Twitter Search",
+ "manifest_version": 2,
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "id": "twitter(a)search.mozilla.org"
+ }
+ },
+ "hidden": true,
+ "icons": {
+ "16": "favicon.ico"
+ },
+ "web_accessible_resources": [
+ "favicon.ico"
+ ],
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "name": "Twitter",
+ "search_url": "https://twitter.com/search",
+ "search_form": "https://twitter.com/search?q={searchTerms}&partner=Firefox&source=desktop-s…",
+ "search_url_get_params": "q={searchTerms}&partner=Firefox&source=desktop-search"
+ }
+ }
+}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/NN/messages.json b/browser/components/search/extensions/wikipedia/_locales/NN/messages.json
deleted file mode 100644
index e4ee66bc780d..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/NN/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (nn)"
- },
- "extensionDescription": {
- "message": "Wikipedia, det frie oppslagsverket"
- },
- "searchUrl": {
- "message": "https://nn.wikipedia.org/wiki/Spesial:Søk"
- },
- "searchForm": {
- "message": "https://nn.wikipedia.org/wiki/Spesial:Søk?search={searchTerms}&sourceid=Moz…"
- },
- "suggestUrl": {
- "message": "https://nn.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/NO/messages.json b/browser/components/search/extensions/wikipedia/_locales/NO/messages.json
deleted file mode 100644
index ec016ac7337e..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/NO/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (no)"
- },
- "extensionDescription": {
- "message": "Wikipedia, den frie encyklopedi"
- },
- "searchUrl": {
- "message": "https://no.wikipedia.org/wiki/Spesial:Søk"
- },
- "searchForm": {
- "message": "https://no.wikipedia.org/wiki/Spesial:Søk?search={searchTerms}&sourceid=Moz…"
- },
- "suggestUrl": {
- "message": "https://no.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/af/messages.json b/browser/components/search/extensions/wikipedia/_locales/af/messages.json
deleted file mode 100644
index 8cf9de8ac9b3..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/af/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (af)"
- },
- "extensionDescription": {
- "message": "Wikipedia, die vrye ensiklopedie"
- },
- "searchUrl": {
- "message": "https://af.wikipedia.org/wiki/Spesiaal:Soek"
- },
- "searchForm": {
- "message": "https://af.wikipedia.org/wiki/Spesiaal:Soek?search={searchTerms}&sourceid=M…"
- },
- "suggestUrl": {
- "message": "https://af.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/an/messages.json b/browser/components/search/extensions/wikipedia/_locales/an/messages.json
deleted file mode 100644
index e8cce665c96e..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/an/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Biquipedia (an)"
- },
- "extensionDescription": {
- "message": "A enciclopedia Libre"
- },
- "searchUrl": {
- "message": "https://an.wikipedia.org/wiki/Especial:Mirar"
- },
- "searchForm": {
- "message": "https://an.wikipedia.org/wiki/Especial:Mirar?search={searchTerms}&sourceid=…"
- },
- "suggestUrl": {
- "message": "https://an.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ar/messages.json b/browser/components/search/extensions/wikipedia/_locales/ar/messages.json
deleted file mode 100644
index de90b2a2055e..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ar/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "ويكيبيديا (ar)"
- },
- "extensionDescription": {
- "message": "ويكيبيديا (ar)"
- },
- "searchUrl": {
- "message": "https://ar.wikipedia.org/wiki/خاص:بحث"
- },
- "searchForm": {
- "message": "https://ar.wikipedia.org/wiki/خاص:بحث?search={searchTerms}&sourceid=Mozilla…"
- },
- "suggestUrl": {
- "message": "https://ar.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ast/messages.json b/browser/components/search/extensions/wikipedia/_locales/ast/messages.json
deleted file mode 100644
index a127ba07f29b..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ast/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (ast)"
- },
- "extensionDescription": {
- "message": "La enciclopedia llibre"
- },
- "searchUrl": {
- "message": "https://ast.wikipedia.org/wiki/Especial:Gueta"
- },
- "searchForm": {
- "message": "https://ast.wikipedia.org/wiki/Especial:Gueta?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://ast.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/az/messages.json b/browser/components/search/extensions/wikipedia/_locales/az/messages.json
deleted file mode 100644
index f551a717e6d3..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/az/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Vikipediya (az)"
- },
- "extensionDescription": {
- "message": "Vikipediya, açıq ensiklopediya"
- },
- "searchUrl": {
- "message": "https://az.wikipedia.org/wiki/Xüsusi:Axtar"
- },
- "searchForm": {
- "message": "https://az.wikipedia.org/wiki/Xüsusi:Axtar?search={searchTerms}&sourceid=Mo…"
- },
- "suggestUrl": {
- "message": "https://az.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/be-tarask/messages.json b/browser/components/search/extensions/wikipedia/_locales/be-tarask/messages.json
deleted file mode 100644
index aecfecf2fb19..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/be-tarask/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Вікіпэдыя (be-tarask)"
- },
- "extensionDescription": {
- "message": "Вікіпэдыя, вольная энцыкляпэдыя"
- },
- "searchUrl": {
- "message": "https://be-tarask.wikipedia.org/wiki/Спэцыяльныя:Пошук"
- },
- "searchForm": {
- "message": "https://be-tarask.wikipedia.org/wiki/Спэцыяльныя:Пошук?search={searchTerms}…"
- },
- "suggestUrl": {
- "message": "https://be-tarask.wikipedia.org/w/api.php?action=opensearch&search={searchT…"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/be/messages.json b/browser/components/search/extensions/wikipedia/_locales/be/messages.json
deleted file mode 100644
index 6aa763451e67..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/be/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Вікіпедыя (be)"
- },
- "extensionDescription": {
- "message": "Вікіпедыя, свабодная энцыклапедыя"
- },
- "searchUrl": {
- "message": "https://be.wikipedia.org/wiki/Адмысловае:Search"
- },
- "searchForm": {
- "message": "https://be.wikipedia.org/wiki/Адмысловае:Search?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://be.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/bg/messages.json b/browser/components/search/extensions/wikipedia/_locales/bg/messages.json
deleted file mode 100644
index 896a85d66b87..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/bg/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Уикипедия (bg)"
- },
- "extensionDescription": {
- "message": "Уикипедия, свободната енциклоподия"
- },
- "searchUrl": {
- "message": "https://bg.wikipedia.org/wiki/Специални:Търсене"
- },
- "searchForm": {
- "message": "https://bg.wikipedia.org/wiki/Специални:Търсене?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://bg.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/bn/messages.json b/browser/components/search/extensions/wikipedia/_locales/bn/messages.json
deleted file mode 100644
index fe9887ed1938..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/bn/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "উইকিপিডিয়া (bn)"
- },
- "extensionDescription": {
- "message": "উইকিপিডিয়া, মুক্ত বিশ্বকোষ"
- },
- "searchUrl": {
- "message": "https://bn.wikipedia.org/wiki/বিশেষ:Search"
- },
- "searchForm": {
- "message": "https://bn.wikipedia.org/wiki/বিশেষ:Search?search={searchTerms}&sourceid=Mo…"
- },
- "suggestUrl": {
- "message": "https://bn.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/br/messages.json b/browser/components/search/extensions/wikipedia/_locales/br/messages.json
deleted file mode 100644
index 33869ce8e752..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/br/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (br)"
- },
- "extensionDescription": {
- "message": "Wikipedia, an holloueziadur digor"
- },
- "searchUrl": {
- "message": "https://br.wikipedia.org/wiki/Dibar:Klask"
- },
- "searchForm": {
- "message": "https://br.wikipedia.org/wiki/Dibar:Klask?search={searchTerms}&sourceid=Moz…"
- },
- "suggestUrl": {
- "message": "https://br.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/bs/messages.json b/browser/components/search/extensions/wikipedia/_locales/bs/messages.json
deleted file mode 100644
index 746150e3d8e8..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/bs/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (bs)"
- },
- "extensionDescription": {
- "message": "Slobodna enciklopedija"
- },
- "searchUrl": {
- "message": "https://bs.wikipedia.org/wiki/Posebno:Pretraga"
- },
- "searchForm": {
- "message": "https://bs.wikipedia.org/wiki/Posebno:Pretraga?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://bs.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ca/messages.json b/browser/components/search/extensions/wikipedia/_locales/ca/messages.json
deleted file mode 100644
index 151ec1a71ba5..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ca/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Viquipèdia (ca)"
- },
- "extensionDescription": {
- "message": "L'enciclopèdia lliure"
- },
- "searchUrl": {
- "message": "https://ca.wikipedia.org/wiki/Especial:Cerca"
- },
- "searchForm": {
- "message": "https://ca.wikipedia.org/wiki/Especial:Cerca?search={searchTerms}&sourceid=…"
- },
- "suggestUrl": {
- "message": "https://ca.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/cy/messages.json b/browser/components/search/extensions/wikipedia/_locales/cy/messages.json
deleted file mode 100644
index cfed7c73be34..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/cy/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wicipedia (cy)"
- },
- "extensionDescription": {
- "message": "Wicipedia, Y Gwyddioniadur Rhydd"
- },
- "searchUrl": {
- "message": "https://cy.wikipedia.org/wiki/Arbennig:Search"
- },
- "searchForm": {
- "message": "https://cy.wikipedia.org/wiki/Arbennig:Search?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://cy.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/cz/messages.json b/browser/components/search/extensions/wikipedia/_locales/cz/messages.json
deleted file mode 100644
index 12f7eb22d711..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/cz/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedie (cs)"
- },
- "extensionDescription": {
- "message": "Wikipedia, svobodná encyclopedie"
- },
- "searchUrl": {
- "message": "https://cs.wikipedia.org/wiki/Speciální:Hledání"
- },
- "searchForm": {
- "message": "https://cs.wikipedia.org/wiki/Speciální:Hledání?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://cs.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/da/messages.json b/browser/components/search/extensions/wikipedia/_locales/da/messages.json
deleted file mode 100644
index 801d5a5183cc..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/da/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (da)"
- },
- "extensionDescription": {
- "message": "Wikipedia, den frie encyklopædi"
- },
- "searchUrl": {
- "message": "https://da.wikipedia.org/wiki/Speciel:Søgning"
- },
- "searchForm": {
- "message": "https://da.wikipedia.org/wiki/Speciel:Søgning?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://da.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/de/messages.json b/browser/components/search/extensions/wikipedia/_locales/de/messages.json
deleted file mode 100644
index 0e6bbe8905ca..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/de/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (de)"
- },
- "extensionDescription": {
- "message": "Wikipedia, die freie Enzyklopädie"
- },
- "searchUrl": {
- "message": "https://de.wikipedia.org/wiki/Spezial:Suche"
- },
- "searchForm": {
- "message": "https://de.wikipedia.org/wiki/Spezial:Suche?search={searchTerms}&sourceid=M…"
- },
- "suggestUrl": {
- "message": "https://de.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/dsb/messages.json b/browser/components/search/extensions/wikipedia/_locales/dsb/messages.json
deleted file mode 100644
index ffca44b5f7fb..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/dsb/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedija (dsb)"
- },
- "extensionDescription": {
- "message": "Wikipedija, lichotna encyklopedija"
- },
- "searchUrl": {
- "message": "https://dsb.wikipedia.org/wiki/Specialne:Pytaś"
- },
- "searchForm": {
- "message": "https://dsb.wikipedia.org/wiki/Specialne:Pytaś?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://dsb.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/el/messages.json b/browser/components/search/extensions/wikipedia/_locales/el/messages.json
deleted file mode 100644
index 95b48f3d9ca7..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/el/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (el)"
- },
- "extensionDescription": {
- "message": "Βικιπαίδεια, η ελεύθερη εγκυκλοπαίδεια"
- },
- "searchUrl": {
- "message": "https://el.wikipedia.org/wiki/Ειδικό:Αναζήτηση"
- },
- "searchForm": {
- "message": "https://el.wikipedia.org/wiki/Ειδικό:Αναζήτηση?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://el.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/en/messages.json b/browser/components/search/extensions/wikipedia/_locales/en/messages.json
deleted file mode 100644
index 0de3c9a8071a..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/en/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (en)"
- },
- "extensionDescription": {
- "message": "Wikipedia, the Free Encyclopedia"
- },
- "searchUrl": {
- "message": "https://en.wikipedia.org/wiki/Special:Search"
- },
- "searchForm": {
- "message": "https://en.wikipedia.org/wiki/Special:Search?search={searchTerms}&sourceid=…"
- },
- "suggestUrl": {
- "message": "https://en.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/eo/messages.json b/browser/components/search/extensions/wikipedia/_locales/eo/messages.json
deleted file mode 100644
index 10aa88dd11ba..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/eo/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Vikipedio (eo)"
- },
- "extensionDescription": {
- "message": "Vikipedio, la libera enciklopedio"
- },
- "searchUrl": {
- "message": "https://eo.wikipedia.org/wiki/Specialaĵo:Serĉi"
- },
- "searchForm": {
- "message": "https://eo.wikipedia.org/wiki/Specialaĵo:Serĉi?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://eo.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/es/messages.json b/browser/components/search/extensions/wikipedia/_locales/es/messages.json
deleted file mode 100644
index 09ec1f757657..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/es/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (es)"
- },
- "extensionDescription": {
- "message": "Wikipedia, la enciclopedia libre"
- },
- "searchUrl": {
- "message": "https://es.wikipedia.org/wiki/Especial:Buscar"
- },
- "searchForm": {
- "message": "https://es.wikipedia.org/wiki/Especial:Buscar?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://es.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/et/messages.json b/browser/components/search/extensions/wikipedia/_locales/et/messages.json
deleted file mode 100644
index 91363fbb392b..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/et/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Vikipeedia (et)"
- },
- "extensionDescription": {
- "message": "Vikipeedia, vaba entsüklopeedia"
- },
- "searchUrl": {
- "message": "https://et.wikipedia.org/wiki/Eri:Otsimine"
- },
- "searchForm": {
- "message": "https://et.wikipedia.org/wiki/Eri:Otsimine?search={searchTerms}&sourceid=Mo…"
- },
- "suggestUrl": {
- "message": "https://et.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/eu/messages.json b/browser/components/search/extensions/wikipedia/_locales/eu/messages.json
deleted file mode 100644
index 1bd7027dec54..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/eu/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (eu)"
- },
- "extensionDescription": {
- "message": "Wikipedia, entziklopedia askea"
- },
- "searchUrl": {
- "message": "https://eu.wikipedia.org/wiki/Berezi:Bilatu"
- },
- "searchForm": {
- "message": "https://eu.wikipedia.org/wiki/Berezi:Bilatu?search={searchTerms}&sourceid=M…"
- },
- "suggestUrl": {
- "message": "https://eu.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/fa/messages.json b/browser/components/search/extensions/wikipedia/_locales/fa/messages.json
deleted file mode 100644
index 9fdc964a1e0b..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/fa/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "ویکیپدیا (fa)"
- },
- "extensionDescription": {
- "message": "ویکیپدیا، دانشنامهٔ آزاد"
- },
- "searchUrl": {
- "message": "https://fa.wikipedia.org/wiki/ویژه:جستجو"
- },
- "searchForm": {
- "message": "https://fa.wikipedia.org/wiki/ویژه:جستجو?search={searchTerms}&sourceid=Mozi…"
- },
- "suggestUrl": {
- "message": "https://fa.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/fi/messages.json b/browser/components/search/extensions/wikipedia/_locales/fi/messages.json
deleted file mode 100644
index 17a9cbe22c42..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/fi/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (fi)"
- },
- "extensionDescription": {
- "message": "Wikipedia (fi), vapaa tietosanakirja"
- },
- "searchUrl": {
- "message": "https://fi.wikipedia.org/wiki/Toiminnot:Haku"
- },
- "searchForm": {
- "message": "https://fi.wikipedia.org/wiki/Toiminnot:Haku?search={searchTerms}&sourceid=…"
- },
- "suggestUrl": {
- "message": "https://fi.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/fr/messages.json b/browser/components/search/extensions/wikipedia/_locales/fr/messages.json
deleted file mode 100644
index 33dcbe9dc502..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/fr/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipédia (fr)"
- },
- "extensionDescription": {
- "message": "Wikipédia, l'encyclopédie libre"
- },
- "searchUrl": {
- "message": "https://fr.wikipedia.org/wiki/Spécial:Recherche"
- },
- "searchForm": {
- "message": "https://fr.wikipedia.org/wiki/Spécial:Recherche?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://fr.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/fy-NL/messages.json b/browser/components/search/extensions/wikipedia/_locales/fy-NL/messages.json
deleted file mode 100644
index f350162fbbaf..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/fy-NL/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedy (fy)"
- },
- "extensionDescription": {
- "message": "De fergese ensyklopedy"
- },
- "searchUrl": {
- "message": "https://fy.wikipedia.org/wiki/Wiki:Sykje"
- },
- "searchForm": {
- "message": "https://fy.wikipedia.org/wiki/Wiki:Sykje?search={searchTerms}&sourceid=Mozi…"
- },
- "suggestUrl": {
- "message": "https://fy.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ga-IE/messages.json b/browser/components/search/extensions/wikipedia/_locales/ga-IE/messages.json
deleted file mode 100644
index 994ea723c6da..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ga-IE/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Vicipéid (ga)"
- },
- "extensionDescription": {
- "message": "Vicipéid, an Chiclipéid Shaor"
- },
- "searchUrl": {
- "message": "https://ga.wikipedia.org/wiki/Speisialta:Search"
- },
- "searchForm": {
- "message": "https://ga.wikipedia.org/wiki/Speisialta:Search?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://ga.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/gd/messages.json b/browser/components/search/extensions/wikipedia/_locales/gd/messages.json
deleted file mode 100644
index f16f16fb4a02..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/gd/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Uicipeid (gd)"
- },
- "extensionDescription": {
- "message": "Wikipedia, An leabhar mòr-eòlais"
- },
- "searchUrl": {
- "message": "https://gd.wikipedia.org/wiki/Sònraichte:Search"
- },
- "searchForm": {
- "message": "https://gd.wikipedia.org/wiki/Sònraichte:Search?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://gd.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/gl/messages.json b/browser/components/search/extensions/wikipedia/_locales/gl/messages.json
deleted file mode 100644
index 88880bffc3d9..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/gl/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (gl)"
- },
- "extensionDescription": {
- "message": "Wikipedia, a enciclopedia libre"
- },
- "searchUrl": {
- "message": "https://gl.wikipedia.org/wiki/Especial:Procurar"
- },
- "searchForm": {
- "message": "https://gl.wikipedia.org/wiki/Especial:Procurar?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://gl.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/gn/messages.json b/browser/components/search/extensions/wikipedia/_locales/gn/messages.json
deleted file mode 100644
index 5efc5ed74a95..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/gn/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Vikipetã (gn)"
- },
- "extensionDescription": {
- "message": "Vikipetã, opaite tembikuaa hekosãsóva renda"
- },
- "searchUrl": {
- "message": "https://gn.wikipedia.org/wiki/Mba'echĩchĩ:Buscar"
- },
- "searchForm": {
- "message": "https://gn.wikipedia.org/wiki/Mba'echĩchĩ:Buscar?search={searchTerms}&sourceid=Mozilla-search"
- },
- "suggestUrl": {
- "message": "https://gn.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/gu/messages.json b/browser/components/search/extensions/wikipedia/_locales/gu/messages.json
deleted file mode 100644
index 3d2f68826fc5..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/gu/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "વિકિપીડિયા (gu)"
- },
- "extensionDescription": {
- "message": "વીકીપીડિયા, મુક્ત એનસાયક્લોપીડિયા"
- },
- "searchUrl": {
- "message": "https://gu.wikipedia.org/wiki/વિશેષ:શોધ"
- },
- "searchForm": {
- "message": "https://gu.wikipedia.org/wiki/વિશેષ:શોધ?search={searchTerms}&sourceid=Mozil…"
- },
- "suggestUrl": {
- "message": "https://gu.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/he/messages.json b/browser/components/search/extensions/wikipedia/_locales/he/messages.json
deleted file mode 100644
index 1f8471e980f0..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/he/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "ויקיפדיה"
- },
- "extensionDescription": {
- "message": "ויקיפדיה"
- },
- "searchUrl": {
- "message": "https://he.wikipedia.org/wiki/מיוחד:חיפוש"
- },
- "searchForm": {
- "message": "https://he.wikipedia.org/wiki/מיוחד:חיפוש?search={searchTerms}&sourceid=Moz…"
- },
- "suggestUrl": {
- "message": "https://he.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/hi/messages.json b/browser/components/search/extensions/wikipedia/_locales/hi/messages.json
deleted file mode 100644
index f3b7d14eafa0..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/hi/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "विकिपीडिया (hi)"
- },
- "extensionDescription": {
- "message": "विकिपीडिया (हिन्दी)"
- },
- "searchUrl": {
- "message": "https://hi.wikipedia.org/wiki/विशेष:खोज"
- },
- "searchForm": {
- "message": "https://hi.wikipedia.org/wiki/विशेष:खोज?search={searchTerms}&sourceid=Mozil…"
- },
- "suggestUrl": {
- "message": "https://hi.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/hr/messages.json b/browser/components/search/extensions/wikipedia/_locales/hr/messages.json
deleted file mode 100644
index 18a6177efcca..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/hr/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedija (hr)"
- },
- "extensionDescription": {
- "message": "Wikipedija, slobodna enciklopedija"
- },
- "searchUrl": {
- "message": "https://hr.wikipedia.org/wiki/Posebno:Traži"
- },
- "searchForm": {
- "message": "https://hr.wikipedia.org/wiki/Posebno:Traži?search={searchTerms}&sourceid=M…"
- },
- "suggestUrl": {
- "message": "https://hr.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/hsb/messages.json b/browser/components/search/extensions/wikipedia/_locales/hsb/messages.json
deleted file mode 100644
index d4e62836e6e9..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/hsb/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedija (hsb)"
- },
- "extensionDescription": {
- "message": "Wikipedija, swobodna encyklopedija"
- },
- "searchUrl": {
- "message": "https://hsb.wikipedia.org/wiki/Specialnje:Pytać"
- },
- "searchForm": {
- "message": "https://hsb.wikipedia.org/wiki/Specialnje:Pytać?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://hsb.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/hu/messages.json b/browser/components/search/extensions/wikipedia/_locales/hu/messages.json
deleted file mode 100644
index 68300c48a6f3..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/hu/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipédia (hu)"
- },
- "extensionDescription": {
- "message": "Wikipedia, a szabad enciklopédia"
- },
- "searchUrl": {
- "message": "https://hu.wikipedia.org/wiki/Speciális:Keresés"
- },
- "searchForm": {
- "message": "https://hu.wikipedia.org/wiki/Speciális:Keresés?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://hu.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/hy/messages.json b/browser/components/search/extensions/wikipedia/_locales/hy/messages.json
deleted file mode 100644
index 56c2ae2c641b..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/hy/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (hy)"
- },
- "extensionDescription": {
- "message": "Վիքիփեդիա՝ ազատ հանրագիտարան"
- },
- "searchUrl": {
- "message": "https://hy.wikipedia.org/wiki/Սպասարկող:Որոնել"
- },
- "searchForm": {
- "message": "https://hy.wikipedia.org/wiki/Սպասարկող:Որոնել?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://hy.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ia/messages.json b/browser/components/search/extensions/wikipedia/_locales/ia/messages.json
deleted file mode 100644
index 6d997ae8fc81..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ia/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (ia)"
- },
- "extensionDescription": {
- "message": "Wikipedia, le encyclopedia libere"
- },
- "searchUrl": {
- "message": "https://ia.wikipedia.org/wiki/Special:Recerca"
- },
- "searchForm": {
- "message": "https://ia.wikipedia.org/wiki/Special:Recerca?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://ia.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/id/messages.json b/browser/components/search/extensions/wikipedia/_locales/id/messages.json
deleted file mode 100644
index 1d35e71b956d..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/id/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (id)"
- },
- "extensionDescription": {
- "message": "Wikipedia, ensiklopedia bebas"
- },
- "searchUrl": {
- "message": "https://id.wikipedia.org/wiki/Istimewa:Pencarian"
- },
- "searchForm": {
- "message": "https://id.wikipedia.org/wiki/Istimewa:Pencarian?search={searchTerms}&sourc…"
- },
- "suggestUrl": {
- "message": "https://id.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/is/messages.json b/browser/components/search/extensions/wikipedia/_locales/is/messages.json
deleted file mode 100644
index f722d88187de..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/is/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (is)"
- },
- "extensionDescription": {
- "message": "Wikipedia, the free encyclopedia"
- },
- "searchUrl": {
- "message": "https://is.wikipedia.org/wiki/Kerfissíða:Leit"
- },
- "searchForm": {
- "message": "https://is.wikipedia.org/wiki/Kerfissíða:Leit?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://is.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/it/messages.json b/browser/components/search/extensions/wikipedia/_locales/it/messages.json
deleted file mode 100644
index 2ca645740f87..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/it/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (it)"
- },
- "extensionDescription": {
- "message": "Wikipedia, l'enciclopedia libera"
- },
- "searchUrl": {
- "message": "https://it.wikipedia.org/wiki/Speciale:Ricerca"
- },
- "searchForm": {
- "message": "https://it.wikipedia.org/wiki/Speciale:Ricerca?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://it.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ja/messages.json b/browser/components/search/extensions/wikipedia/_locales/ja/messages.json
deleted file mode 100644
index 7215e68768f0..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ja/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (ja)"
- },
- "extensionDescription": {
- "message": "Wikipedia - フリー百科事典"
- },
- "searchUrl": {
- "message": "https://ja.wikipedia.org/wiki/特別:検索"
- },
- "searchForm": {
- "message": "https://ja.wikipedia.org/wiki/特別:検索?search={searchTerms}&sourceid=Mozilla-s…"
- },
- "suggestUrl": {
- "message": "https://ja.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ka/messages.json b/browser/components/search/extensions/wikipedia/_locales/ka/messages.json
deleted file mode 100644
index c460a093e5e4..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ka/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "ვიკიპედია (ka)"
- },
- "extensionDescription": {
- "message": "ვიკიპედია, თავისუფალი ენციკლოპედია"
- },
- "searchUrl": {
- "message": "https://ka.wikipedia.org/wiki/სპეციალური:ძიება"
- },
- "searchForm": {
- "message": "https://ka.wikipedia.org/wiki/სპეციალური:ძიება?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://ka.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/kab/messages.json b/browser/components/search/extensions/wikipedia/_locales/kab/messages.json
deleted file mode 100644
index 3cf743b616fe..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/kab/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (kab)"
- },
- "extensionDescription": {
- "message": "Wikipedia, tasanayt tilellit"
- },
- "searchUrl": {
- "message": "https://kab.wikipedia.org/wiki/Uslig:Search"
- },
- "searchForm": {
- "message": "https://kab.wikipedia.org/wiki/Uslig:Search?search={searchTerms}&sourceid=M…"
- },
- "suggestUrl": {
- "message": "https://kab.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/kk/messages.json b/browser/components/search/extensions/wikipedia/_locales/kk/messages.json
deleted file mode 100644
index 0844cca0d7e1..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/kk/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Уикипедия (kk)"
- },
- "extensionDescription": {
- "message": "Уикипедия (kk)"
- },
- "searchUrl": {
- "message": "https://kk.wikipedia.org/wiki/Арнайы:Іздеу"
- },
- "searchForm": {
- "message": "https://kk.wikipedia.org/wiki/Арнайы:Іздеу?search={searchTerms}&sourceid=Mo…"
- },
- "suggestUrl": {
- "message": "https://kk.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/km/messages.json b/browser/components/search/extensions/wikipedia/_locales/km/messages.json
deleted file mode 100644
index 0f0a0880e188..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/km/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "វីគីភីឌា (km)"
- },
- "extensionDescription": {
- "message": "វីគីភីឌា សព្វវចនាធិប្បាយសេរី"
- },
- "searchUrl": {
- "message": "https://km.wikipedia.org/wiki/ពិសេស:ស្វែងរក"
- },
- "searchForm": {
- "message": "https://km.wikipedia.org/wiki/ពិសេស:ស្វែងរក?search={searchTerms}&sourceid=M…"
- },
- "suggestUrl": {
- "message": "https://km.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/kn/messages.json b/browser/components/search/extensions/wikipedia/_locales/kn/messages.json
deleted file mode 100644
index 379ef20085a3..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/kn/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (kn)"
- },
- "extensionDescription": {
- "message": "Wikipedia, the free encyclopedia"
- },
- "searchUrl": {
- "message": "https://kn.wikipedia.org/wiki/ವಿಶೇಷ:Search"
- },
- "searchForm": {
- "message": "https://kn.wikipedia.org/wiki/ವಿಶೇಷ:Search?search={searchTerms}&sourceid=Mo…"
- },
- "suggestUrl": {
- "message": "https://kn.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/kr/messages.json b/browser/components/search/extensions/wikipedia/_locales/kr/messages.json
deleted file mode 100644
index 54296cac62bd..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/kr/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "위키백과 (ko)"
- },
- "extensionDescription": {
- "message": "Wikipedia, the free encyclopedia"
- },
- "searchUrl": {
- "message": "https://ko.wikipedia.org/wiki/특수기능:찾기"
- },
- "searchForm": {
- "message": "https://ko.wikipedia.org/wiki/특수기능:찾기?search={searchTerms}&sourceid=Mozilla…"
- },
- "suggestUrl": {
- "message": "https://ko.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/lij/messages.json b/browser/components/search/extensions/wikipedia/_locales/lij/messages.json
deleted file mode 100644
index cb90db5e4099..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/lij/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (lij)"
- },
- "extensionDescription": {
- "message": "Wikipedia, l'enciclopedia libera"
- },
- "searchUrl": {
- "message": "https://lij.wikipedia.org/wiki/Speçiale:Riçerca"
- },
- "searchForm": {
- "message": "https://lij.wikipedia.org/wiki/Speçiale:Riçerca?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://lij.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/lo/messages.json b/browser/components/search/extensions/wikipedia/_locales/lo/messages.json
deleted file mode 100644
index 712746ec6316..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/lo/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "ວິກິພີເດຍ (lo)"
- },
- "extensionDescription": {
- "message": "ວິກິພີເດຍ, ສາລານຸກົມເສລີ"
- },
- "searchUrl": {
- "message": "https://lo.wikipedia.org/wiki/ພິເສດ:ຊອກຫາ"
- },
- "searchForm": {
- "message": "https://lo.wikipedia.org/wiki/ພິເສດ:ຊອກຫາ?search={searchTerms}&sourceid=Moz…"
- },
- "suggestUrl": {
- "message": "https://lo.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/lt/messages.json b/browser/components/search/extensions/wikipedia/_locales/lt/messages.json
deleted file mode 100644
index c061bcc5224c..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/lt/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (lt)"
- },
- "extensionDescription": {
- "message": "Vikipedija, laisvoji enciklopedija"
- },
- "searchUrl": {
- "message": "https://lt.wikipedia.org/wiki/Specialus:Paieška"
- },
- "searchForm": {
- "message": "https://lt.wikipedia.org/wiki/Specialus:Paieška?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://lt.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ltg/messages.json b/browser/components/search/extensions/wikipedia/_locales/ltg/messages.json
deleted file mode 100644
index 0e02810ef3bf..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ltg/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Vikipedeja (ltg)"
- },
- "extensionDescription": {
- "message": "Vikipēdija, breivuo eņciklopedeja"
- },
- "searchUrl": {
- "message": "https://ltg.wikipedia.org/wiki/Seviškuo:Search"
- },
- "searchForm": {
- "message": "https://ltg.wikipedia.org/wiki/Seviškuo:Search?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://ltg.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/lv/messages.json b/browser/components/search/extensions/wikipedia/_locales/lv/messages.json
deleted file mode 100644
index f73814b8574f..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/lv/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Vikipēdija"
- },
- "extensionDescription": {
- "message": "Vikipēdija, brīvā enciklopēdija"
- },
- "searchUrl": {
- "message": "https://lv.wikipedia.org/wiki/Special:Search"
- },
- "searchForm": {
- "message": "https://lv.wikipedia.org/wiki/Special:Search?search={searchTerms}&sourceid=…"
- },
- "suggestUrl": {
- "message": "https://lv.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/mk/messages.json b/browser/components/search/extensions/wikipedia/_locales/mk/messages.json
deleted file mode 100644
index de7e06e1ac4a..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/mk/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Википедија (mk)"
- },
- "extensionDescription": {
- "message": "Википедија, слободната енциклопедија"
- },
- "searchUrl": {
- "message": "https://mk.wikipedia.org/wiki/Специјална:Барај"
- },
- "searchForm": {
- "message": "https://mk.wikipedia.org/wiki/Специјална:Барај?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://mk.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/mr/messages.json b/browser/components/search/extensions/wikipedia/_locales/mr/messages.json
deleted file mode 100644
index bd46dd83700c..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/mr/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "विकिपीडिया (mr)"
- },
- "extensionDescription": {
- "message": "विकिपीडिया, मोफत माहितीकोष"
- },
- "searchUrl": {
- "message": "https://mr.wikipedia.org/wiki/विशेष:शोधा"
- },
- "searchForm": {
- "message": "https://mr.wikipedia.org/wiki/विशेष:शोधा?search={searchTerms}&sourceid=Mozi…"
- },
- "suggestUrl": {
- "message": "https://mr.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ms/messages.json b/browser/components/search/extensions/wikipedia/_locales/ms/messages.json
deleted file mode 100644
index c817e82c7821..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ms/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (ms)"
- },
- "extensionDescription": {
- "message": "Wikipedia, ensiklopedia bebas"
- },
- "searchUrl": {
- "message": "https://ms.wikipedia.org/wiki/Khas:Gelintar"
- },
- "searchForm": {
- "message": "https://ms.wikipedia.org/wiki/Khas:Gelintar?search={searchTerms}&sourceid=M…"
- },
- "suggestUrl": {
- "message": "https://ms.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/my/messages.json b/browser/components/search/extensions/wikipedia/_locales/my/messages.json
deleted file mode 100644
index 62342d1b90ae..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/my/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (my)"
- },
- "extensionDescription": {
- "message": "အခမဲ့လွတ်လပ်စွယ်စုံကျမ်း"
- },
- "searchUrl": {
- "message": "https://my.wikipedia.org/wiki/Special:Search"
- },
- "searchForm": {
- "message": "https://my.wikipedia.org/wiki/Special:Search?search={searchTerms}&sourceid=…"
- },
- "suggestUrl": {
- "message": "https://my.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ne/messages.json b/browser/components/search/extensions/wikipedia/_locales/ne/messages.json
deleted file mode 100644
index eb22344341e4..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ne/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "विकिपीडिया (ne)"
- },
- "extensionDescription": {
- "message": "विकिपिडिया एक स्वतन्त्र विश्वकोष"
- },
- "searchUrl": {
- "message": "https://ne.wikipedia.org/wiki/विशेष:Search"
- },
- "searchForm": {
- "message": "https://ne.wikipedia.org/wiki/विशेष:Search?search={searchTerms}&sourceid=Mo…"
- },
- "suggestUrl": {
- "message": "https://ne.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/nl/messages.json b/browser/components/search/extensions/wikipedia/_locales/nl/messages.json
deleted file mode 100644
index c2a810c2ae30..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/nl/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (nl)"
- },
- "extensionDescription": {
- "message": "De vrije encyclopedie"
- },
- "searchUrl": {
- "message": "https://nl.wikipedia.org/wiki/Speciaal:Zoeken"
- },
- "searchForm": {
- "message": "https://nl.wikipedia.org/wiki/Speciaal:Zoeken?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://nl.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/oc/messages.json b/browser/components/search/extensions/wikipedia/_locales/oc/messages.json
deleted file mode 100644
index 3cadc3d68f07..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/oc/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipèdia (oc)"
- },
- "extensionDescription": {
- "message": "Wikipèdia, l'enciclopèdia liura"
- },
- "searchUrl": {
- "message": "https://oc.wikipedia.org/wiki/Especial:Recèrca"
- },
- "searchForm": {
- "message": "https://oc.wikipedia.org/wiki/Especial:Recèrca?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://oc.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/pa/messages.json b/browser/components/search/extensions/wikipedia/_locales/pa/messages.json
deleted file mode 100644
index dff38c2146fd..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/pa/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (pa)"
- },
- "extensionDescription": {
- "message": "ਵਿਕਿਪੀਡਿਆ, ਮੁਫ਼ਤ/ਮੁਕਤ ਸ਼ਬਦਕੋਸ਼"
- },
- "searchUrl": {
- "message": "https://pa.wikipedia.org/wiki/ਖ਼ਾਸ:ਖੋਜੋ"
- },
- "searchForm": {
- "message": "https://pa.wikipedia.org/wiki/ਖ਼ਾਸ:ਖੋਜੋ?search={searchTerms}&sourceid=Mozil…"
- },
- "suggestUrl": {
- "message": "https://pa.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/pl/messages.json b/browser/components/search/extensions/wikipedia/_locales/pl/messages.json
deleted file mode 100644
index 315aa0d9cbe1..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/pl/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (pl)"
- },
- "extensionDescription": {
- "message": "Wikipedia, wolna encyklopedia"
- },
- "searchUrl": {
- "message": "https://pl.wikipedia.org/wiki/Specjalna:Szukaj"
- },
- "searchForm": {
- "message": "https://pl.wikipedia.org/wiki/Specjalna:Szukaj?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://pl.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/pt/messages.json b/browser/components/search/extensions/wikipedia/_locales/pt/messages.json
deleted file mode 100644
index 4beaa97acc88..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/pt/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (pt)"
- },
- "extensionDescription": {
- "message": "Wikipédia, a enciclopédia livre"
- },
- "searchUrl": {
- "message": "https://pt.wikipedia.org/wiki/Especial:Pesquisar"
- },
- "searchForm": {
- "message": "https://pt.wikipedia.org/wiki/Especial:Pesquisar?search={searchTerms}&sourc…"
- },
- "suggestUrl": {
- "message": "https://pt.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/rm/messages.json b/browser/components/search/extensions/wikipedia/_locales/rm/messages.json
deleted file mode 100644
index 8258d5e43451..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/rm/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (rm)"
- },
- "extensionDescription": {
- "message": "Vichipedia, l'enciclopedia libra"
- },
- "searchUrl": {
- "message": "https://rm.wikipedia.org/wiki/Spezial:Search"
- },
- "searchForm": {
- "message": "https://rm.wikipedia.org/wiki/Spezial:Search?search={searchTerms}&sourceid=…"
- },
- "suggestUrl": {
- "message": "https://rm.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ro/messages.json b/browser/components/search/extensions/wikipedia/_locales/ro/messages.json
deleted file mode 100644
index 48865fd547e4..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ro/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (ro)"
- },
- "extensionDescription": {
- "message": "Wikipedia, enciclopedia liberă"
- },
- "searchUrl": {
- "message": "https://ro.wikipedia.org/wiki/Special:Căutare"
- },
- "searchForm": {
- "message": "https://ro.wikipedia.org/wiki/Special:Căutare?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://ro.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ru/messages.json b/browser/components/search/extensions/wikipedia/_locales/ru/messages.json
deleted file mode 100644
index 569467691d7c..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ru/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Википедия (ru)"
- },
- "extensionDescription": {
- "message": "Википедия, свободная энциклопедия"
- },
- "searchUrl": {
- "message": "https://ru.wikipedia.org/wiki/Служебная:Поиск"
- },
- "searchForm": {
- "message": "https://ru.wikipedia.org/wiki/Служебная:Поиск?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://ru.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/si/messages.json b/browser/components/search/extensions/wikipedia/_locales/si/messages.json
deleted file mode 100644
index 0406ae728d71..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/si/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (si)"
- },
- "extensionDescription": {
- "message": "Wikipedia, the free encyclopedia"
- },
- "searchUrl": {
- "message": "https://si.wikipedia.org/wiki/විශේෂ:ගවේෂණය"
- },
- "searchForm": {
- "message": "https://si.wikipedia.org/wiki/විශේෂ:ගවේෂණය?search={searchTerms}&sourceid=Mo…"
- },
- "suggestUrl": {
- "message": "https://si.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/sk/messages.json b/browser/components/search/extensions/wikipedia/_locales/sk/messages.json
deleted file mode 100644
index 5c2f75f8b031..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/sk/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipédia (sk)"
- },
- "extensionDescription": {
- "message": "Wikipédia, slobodná a otvorená encyklopédia"
- },
- "searchUrl": {
- "message": "https://sk.wikipedia.org/wiki/Špeciálne:Hľadanie"
- },
- "searchForm": {
- "message": "https://sk.wikipedia.org/wiki/Špeciálne:Hľadanie?search={searchTerms}&sourc…"
- },
- "suggestUrl": {
- "message": "https://sk.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/sl/messages.json b/browser/components/search/extensions/wikipedia/_locales/sl/messages.json
deleted file mode 100644
index 7385a2203474..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/sl/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedija (sl)"
- },
- "extensionDescription": {
- "message": "Wikipedija, prosta enciklopedija"
- },
- "searchUrl": {
- "message": "https://sl.wikipedia.org/wiki/Posebno:Iskanje"
- },
- "searchForm": {
- "message": "https://sl.wikipedia.org/wiki/Posebno:Iskanje?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://sl.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/sq/messages.json b/browser/components/search/extensions/wikipedia/_locales/sq/messages.json
deleted file mode 100644
index 68361d8ab294..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/sq/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (sq)"
- },
- "extensionDescription": {
- "message": "Wikipedia, enciklopedia e lirë"
- },
- "searchUrl": {
- "message": "https://sq.wikipedia.org/wiki/Speciale:Kërkim"
- },
- "searchForm": {
- "message": "https://sq.wikipedia.org/wiki/Speciale:Kërkim?search={searchTerms}&sourceid…"
- },
- "suggestUrl": {
- "message": "https://sq.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/sr/messages.json b/browser/components/search/extensions/wikipedia/_locales/sr/messages.json
deleted file mode 100644
index 50ebc0a197a1..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/sr/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Википедија (sr)"
- },
- "extensionDescription": {
- "message": "Претрага Википедије на српском језику"
- },
- "searchUrl": {
- "message": "https://sr.wikipedia.org/wiki/Посебно:Претражи"
- },
- "searchForm": {
- "message": "https://sr.wikipedia.org/wiki/Посебно:Претражи?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://sr.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/sv-SE/messages.json b/browser/components/search/extensions/wikipedia/_locales/sv-SE/messages.json
deleted file mode 100644
index 1edc3db80d98..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/sv-SE/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (sv)"
- },
- "extensionDescription": {
- "message": "Wikipedia, den fria encyklopedin"
- },
- "searchUrl": {
- "message": "https://sv.wikipedia.org/wiki/Special:Sök"
- },
- "searchForm": {
- "message": "https://sv.wikipedia.org/wiki/Special:Sök?search={searchTerms}&sourceid=Moz…"
- },
- "suggestUrl": {
- "message": "https://sv.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ta/messages.json b/browser/components/search/extensions/wikipedia/_locales/ta/messages.json
deleted file mode 100644
index 54397603b028..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ta/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "விக்கிப்பீடியா (ta)"
- },
- "extensionDescription": {
- "message": "விக்கிப்பீடியா (ta)"
- },
- "searchUrl": {
- "message": "https://ta.wikipedia.org/wiki/சிறப்பு:Search"
- },
- "searchForm": {
- "message": "https://ta.wikipedia.org/wiki/சிறப்பு:Search?search={searchTerms}&sourceid=…"
- },
- "suggestUrl": {
- "message": "https://ta.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/te/messages.json b/browser/components/search/extensions/wikipedia/_locales/te/messages.json
deleted file mode 100644
index c474be12a76f..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/te/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "వికీపీడియా (te)"
- },
- "extensionDescription": {
- "message": "వికీపీడియా (te)"
- },
- "searchUrl": {
- "message": "https://te.wikipedia.org/wiki/ప్రత్యేక:అన్వేషణ"
- },
- "searchForm": {
- "message": "https://te.wikipedia.org/wiki/ప్రత్యేక:అన్వేషణ?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://te.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/th/messages.json b/browser/components/search/extensions/wikipedia/_locales/th/messages.json
deleted file mode 100644
index 3d6aeb07ca2c..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/th/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "วิกิพีเดีย"
- },
- "extensionDescription": {
- "message": "วิกิพีเดีย สารานุกรมเสรี"
- },
- "searchUrl": {
- "message": "https://th.wikipedia.org/wiki/พิเศษ:ค้นหา"
- },
- "searchForm": {
- "message": "https://th.wikipedia.org/wiki/พิเศษ:ค้นหา?search={searchTerms}&sourceid=Moz…"
- },
- "suggestUrl": {
- "message": "https://th.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/tl/messages.json b/browser/components/search/extensions/wikipedia/_locales/tl/messages.json
deleted file mode 100644
index d55b03131f97..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/tl/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (tl)"
- },
- "extensionDescription": {
- "message": "Wikipedia, ang malayang ensiklopedya"
- },
- "searchUrl": {
- "message": "https://tl.wikipedia.org/wiki/Natatangi:Maghanap"
- },
- "searchForm": {
- "message": "https://tl.wikipedia.org/wiki/Natatangi:Maghanap?search={searchTerms}&sourc…"
- },
- "suggestUrl": {
- "message": "https://tl.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/tr/messages.json b/browser/components/search/extensions/wikipedia/_locales/tr/messages.json
deleted file mode 100644
index 878b28ab68b2..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/tr/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (tr)"
- },
- "extensionDescription": {
- "message": "Vikipedi, özgür ansiklopedi"
- },
- "searchUrl": {
- "message": "https://tr.wikipedia.org/wiki/Özel:Ara"
- },
- "searchForm": {
- "message": "https://tr.wikipedia.org/wiki/Özel:Ara?search={searchTerms}&sourceid=Mozill…"
- },
- "suggestUrl": {
- "message": "https://tr.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/uk/messages.json b/browser/components/search/extensions/wikipedia/_locales/uk/messages.json
deleted file mode 100644
index 2749b86304bf..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/uk/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Вікіпедія (uk)"
- },
- "extensionDescription": {
- "message": "Вікіпедія, вільна енциклопедія"
- },
- "searchUrl": {
- "message": "https://uk.wikipedia.org/wiki/Спеціальна:Пошук"
- },
- "searchForm": {
- "message": "https://uk.wikipedia.org/wiki/Спеціальна:Пошук?search={searchTerms}&sourcei…"
- },
- "suggestUrl": {
- "message": "https://uk.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/ur/messages.json b/browser/components/search/extensions/wikipedia/_locales/ur/messages.json
deleted file mode 100644
index dcc87e0c853c..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/ur/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "ویکیپیڈیا (ur)"
- },
- "extensionDescription": {
- "message": "ویکیپیڈیا آزاد دائرۃ المعارف"
- },
- "searchUrl": {
- "message": "https://ur.wikipedia.org/wiki/خاص:تلاش"
- },
- "searchForm": {
- "message": "https://ur.wikipedia.org/wiki/خاص:تلاش?search={searchTerms}&sourceid=Mozill…"
- },
- "suggestUrl": {
- "message": "https://ur.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/uz/messages.json b/browser/components/search/extensions/wikipedia/_locales/uz/messages.json
deleted file mode 100644
index 89a8f2a89bca..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/uz/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Vikipediya (uz)"
- },
- "extensionDescription": {
- "message": "Vikipediya, ochiq ensiklopediya"
- },
- "searchUrl": {
- "message": "https://uz.wikipedia.org/wiki/Maxsus:Search"
- },
- "searchForm": {
- "message": "https://uz.wikipedia.org/wiki/Maxsus:Search?search={searchTerms}&sourceid=M…"
- },
- "suggestUrl": {
- "message": "https://uz.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/vi/messages.json b/browser/components/search/extensions/wikipedia/_locales/vi/messages.json
deleted file mode 100644
index c0844e4feb14..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/vi/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (vi)"
- },
- "extensionDescription": {
- "message": "Wikipedia, bách khoa toàn thư mở"
- },
- "searchUrl": {
- "message": "https://vi.wikipedia.org/wiki/Đặc_biệt:Tìm_kiếm"
- },
- "searchForm": {
- "message": "https://vi.wikipedia.org/wiki/Đặc_biệt:Tìm_kiếm?search={searchTerms}&source…"
- },
- "suggestUrl": {
- "message": "https://vi.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/wo/messages.json b/browser/components/search/extensions/wikipedia/_locales/wo/messages.json
deleted file mode 100644
index 7efde3b1d0f4..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/wo/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (wo)"
- },
- "extensionDescription": {
- "message": "Wikipedia, Jimbulang bu Ubbeeku bi"
- },
- "searchUrl": {
- "message": "https://wo.wikipedia.org/wiki/Jagleel:Ceet"
- },
- "searchForm": {
- "message": "https://wo.wikipedia.org/wiki/Jagleel:Ceet?search={searchTerms}&sourceid=Mo…"
- },
- "suggestUrl": {
- "message": "https://wo.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/zh-CN/messages.json b/browser/components/search/extensions/wikipedia/_locales/zh-CN/messages.json
deleted file mode 100644
index 29047565a243..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/zh-CN/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "维基百科"
- },
- "extensionDescription": {
- "message": "维基百科,自由的百科全书"
- },
- "searchUrl": {
- "message": "https://zh.wikipedia.org/wiki/Special:搜索"
- },
- "searchForm": {
- "message": "https://zh.wikipedia.org/wiki/Special:搜索?search={searchTerms}&sourceid=Mozi…"
- },
- "suggestUrl": {
- "message": "https://zh.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/_locales/zh-TW/messages.json b/browser/components/search/extensions/wikipedia/_locales/zh-TW/messages.json
deleted file mode 100644
index a0e8d880ea26..000000000000
--- a/browser/components/search/extensions/wikipedia/_locales/zh-TW/messages.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extensionName": {
- "message": "Wikipedia (zh)"
- },
- "extensionDescription": {
- "message": "維基百科,自由的百科全書"
- },
- "searchUrl": {
- "message": "https://zh.wikipedia.org/wiki/Special:搜索"
- },
- "searchForm": {
- "message": "https://zh.wikipedia.org/wiki/Special:搜索?search={searchTerms}&sourceid=Mozi…"
- },
- "suggestUrl": {
- "message": "https://zh.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}"
- },
- "searchUrlGetParams": {
- "message": "search={searchTerms}&sourceid=Mozilla-search&variant=zh-tw"
- }
-}
\ No newline at end of file
diff --git a/browser/components/search/extensions/wikipedia/manifest.json b/browser/components/search/extensions/wikipedia/manifest.json
index 2f3e9aec3843..1bdf45ee3acb 100644
--- a/browser/components/search/extensions/wikipedia/manifest.json
+++ b/browser/components/search/extensions/wikipedia/manifest.json
@@ -1,6 +1,6 @@
{
- "name": "__MSG_extensionName__",
- "description": "__MSG_extensionDescription__",
+ "name": "Wikipedia (en)",
+ "description": "Wikipedia, the Free Encyclopedia",
"manifest_version": 2,
"version": "1.0",
"applications": {
@@ -9,7 +9,6 @@
}
},
"hidden": true,
- "default_locale": "en",
"icons": {
"16": "favicon.ico"
},
@@ -18,11 +17,11 @@
],
"chrome_settings_overrides": {
"search_provider": {
- "name": "__MSG_extensionName__",
- "search_url": "__MSG_searchUrl__",
- "search_form": "__MSG_searchForm__",
- "suggest_url": "__MSG_suggestUrl__",
- "search_url_get_params": "__MSG_searchUrlGetParams__"
+ "name": "Wikipedia (en)",
+ "search_url": "https://en.wikipedia.org/wiki/Special:Search",
+ "search_form": "https://en.wikipedia.org/wiki/Special:Search?search={searchTerms}&sourceid=…",
+ "suggest_url": "https://en.wikipedia.org/w/api.php?action=opensearch&search={searchTerms}",
+ "search_url_get_params": "search={searchTerms}&sourceid=Mozilla-search"
}
}
-}
\ No newline at end of file
+}
diff --git a/browser/components/search/extensions/yahoo/favicon.ico b/browser/components/search/extensions/yahoo/favicon.ico
new file mode 100644
index 000000000000..9bd1d9f7c008
Binary files /dev/null and b/browser/components/search/extensions/yahoo/favicon.ico differ
diff --git a/browser/components/search/extensions/yahoo/manifest.json b/browser/components/search/extensions/yahoo/manifest.json
new file mode 100644
index 000000000000..e1f04a373c2e
--- /dev/null
+++ b/browser/components/search/extensions/yahoo/manifest.json
@@ -0,0 +1,28 @@
+{
+ "name": "Yahoo",
+ "description": "Yahoo Search",
+ "manifest_version": 2,
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "id": "yahoo(a)search.mozilla.org"
+ }
+ },
+ "hidden": true,
+ "icons": {
+ "16": "favicon.ico"
+ },
+ "web_accessible_resources": [
+ "favicon.ico"
+ ],
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "name": "Yahoo",
+ "search_url": "https://search.yahoo.com/yhs/search",
+ "search_form": "https://search.yahoo.com/yhs/search?p={searchTerms}&ei=UTF-8&hspart=mozilla",
+ "search_url_get_params": "p={searchTerms}&ei=UTF-8&hspart=mozilla",
+ "suggest_url": "https://search.yahoo.com/sugg/ff",
+ "suggest_url_get_params": "output=fxjson&appid=ffd&command={searchTerms}"
+ }
+ }
+}
diff --git a/browser/components/search/extensions/youtube/favicon.ico b/browser/components/search/extensions/youtube/favicon.ico
new file mode 100644
index 000000000000..977887dbbb84
Binary files /dev/null and b/browser/components/search/extensions/youtube/favicon.ico differ
diff --git a/browser/components/search/extensions/youtube/manifest.json b/browser/components/search/extensions/youtube/manifest.json
new file mode 100644
index 000000000000..6fbf8745bac2
--- /dev/null
+++ b/browser/components/search/extensions/youtube/manifest.json
@@ -0,0 +1,26 @@
+{
+ "name": "YouTube",
+ "description": "YouTube - Videos",
+ "manifest_version": 2,
+ "version": "1.0",
+ "applications": {
+ "gecko": {
+ "id": "youtube(a)search.mozilla.org"
+ }
+ },
+ "hidden": true,
+ "icons": {
+ "16": "favicon.ico"
+ },
+ "web_accessible_resources": [
+ "favicon.ico"
+ ],
+ "chrome_settings_overrides": {
+ "search_provider": {
+ "name": "YouTube",
+ "search_url": "https://www.youtube.com/results?search_query={searchTerms}&search=Search",
+ "search_form": "https://www.youtube.com/index",
+ "suggest_url": "https://suggestqueries.google.com/complete/search?output=firefox&ds=yt&q={s…"
+ }
+ }
+}
\ No newline at end of file
diff --git a/tbb-tests/browser_tor_omnibox.js b/tbb-tests/browser_tor_omnibox.js
new file mode 100644
index 000000000000..e18b2a84a3d8
--- /dev/null
+++ b/tbb-tests/browser_tor_omnibox.js
@@ -0,0 +1,14 @@
+// # Test Tor Omnibox
+// Check what search engines are installed in the search box.
+
+function test() {
+ // Grab engine IDs.
+ let browserSearchService = Components.classes["@mozilla.org/browser/search-service;1"]
+ .getService(Components.interfaces.nsIBrowserSearchService),
+ engineIDs = browserSearchService.getEngines().map(e => e.identifier);
+
+ // Check that we have the correct engines installed, in the right order.
+ is(engineIDs[0], "ddg", "Default search engine is duckduckgo");
+ is(engineIDs[1], "youtube", "Secondary search engine is youtube");
+ is(engineIDs[2], "google", "Google is third search engine");
+}
1
0

[tor-browser/tor-browser-78.1.0esr-10.0-1] Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#tor
by gk@torproject.org 07 Aug '20
by gk@torproject.org 07 Aug '20
07 Aug '20
commit 9e803c96c4c303a90113b027ae99492db1e18a07
Author: Richard Pospesel <richard(a)torproject.org>
Date: Mon Sep 16 15:25:39 2019 -0700
Bug 31286: Implementation of bridge, proxy, and firewall settings in about:preferences#tor
This patch adds a new about:preferences#tor page which allows modifying
bridge, proxy, and firewall settings from within Tor Browser. All of the
functionality present in tor-launcher's Network Configuration panel is
present:
- Setting built-in bridges
- Requesting bridges from BridgeDB via moat
- Using user-provided bridges
- Configuring SOCKS4, SOCKS5, and HTTP/HTTPS proxies
- Setting firewall ports
- Viewing and Copying Tor's logs
- The Networking Settings in General preferences has been removed
---
browser/components/moz.build | 1 +
browser/components/preferences/main.inc.xhtml | 55 --
browser/components/preferences/main.js | 14 -
browser/components/preferences/preferences.js | 9 +
browser/components/preferences/preferences.xhtml | 5 +
browser/components/preferences/privacy.js | 1 +
.../torpreferences/content/parseFunctions.jsm | 89 +++
.../torpreferences/content/requestBridgeDialog.jsm | 220 ++++++
.../content/requestBridgeDialog.xhtml | 35 +
.../torpreferences/content/torBridgeSettings.jsm | 325 ++++++++
.../torpreferences/content/torCategory.inc.xhtml | 9 +
.../torpreferences/content/torFirewallSettings.jsm | 72 ++
.../torpreferences/content/torLogDialog.jsm | 65 ++
.../torpreferences/content/torLogDialog.xhtml | 22 +
.../components/torpreferences/content/torPane.js | 857 +++++++++++++++++++++
.../torpreferences/content/torPane.xhtml | 123 +++
.../torpreferences/content/torPreferences.css | 77 ++
.../torpreferences/content/torPreferencesIcon.svg | 5 +
.../torpreferences/content/torProxySettings.jsm | 245 ++++++
browser/components/torpreferences/jar.mn | 14 +
browser/components/torpreferences/moz.build | 1 +
browser/modules/BridgeDB.jsm | 110 +++
browser/modules/TorProtocolService.jsm | 212 +++++
browser/modules/moz.build | 2 +
24 files changed, 2499 insertions(+), 69 deletions(-)
diff --git a/browser/components/moz.build b/browser/components/moz.build
index cb6eeb9164ef..09e209dc9c3b 100644
--- a/browser/components/moz.build
+++ b/browser/components/moz.build
@@ -58,6 +58,7 @@ DIRS += [
'syncedtabs',
'uitour',
'urlbar',
+ 'torpreferences',
'translation',
]
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
index f3502e87af98..37ac50ee940b 100644
--- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml
@@ -676,59 +676,4 @@
<label id="cfrFeaturesLearnMore" class="learnMore" data-l10n-id="browsing-cfr-recommendations-learn-more" is="text-link"/>
</hbox>
</groupbox>
-
-<hbox id="networkProxyCategory"
- class="subcategory"
- hidden="true"
- data-category="paneGeneral">
- <html:h1 data-l10n-id="network-settings-title"/>
-</hbox>
-
-<!-- Network Settings-->
-<groupbox id="connectionGroup" data-category="paneGeneral" hidden="true">
- <label class="search-header" hidden="true"><html:h2 data-l10n-id="network-settings-title"/></label>
-
- <hbox align="center">
- <hbox align="center" flex="1">
- <description id="connectionSettingsDescription" control="connectionSettings"/>
- <spacer width="5"/>
- <label id="connectionSettingsLearnMore" class="learnMore" is="text-link"
- data-l10n-id="network-proxy-connection-learn-more">
- </label>
- <separator orient="vertical"/>
- </hbox>
-
- <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
- <hbox>
- <button id="connectionSettings"
- is="highlightable-button"
- class="accessory-button"
- data-l10n-id="network-proxy-connection-settings"
- searchkeywords="doh trr"
- search-l10n-ids="
- connection-window.title,
- connection-proxy-option-no.label,
- connection-proxy-option-auto.label,
- connection-proxy-option-system.label,
- connection-proxy-option-manual.label,
- connection-proxy-http,
- connection-proxy-https,
- connection-proxy-ftp,
- connection-proxy-http-port,
- connection-proxy-socks,
- connection-proxy-socks4,
- connection-proxy-socks5,
- connection-proxy-noproxy,
- connection-proxy-noproxy-desc,
- connection-proxy-http-sharing.label,
- connection-proxy-autotype.label,
- connection-proxy-reload.label,
- connection-proxy-autologin.label,
- connection-proxy-socks-remote-dns.label,
- connection-dns-over-https.label,
- connection-dns-over-https-url-custom.label,
- " />
- </hbox>
- </hbox>
-</groupbox>
</html:template>
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index e2b0cf84f560..329cbeba163a 100644
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
@@ -361,15 +361,6 @@ var gMainPane = {
});
this.updatePerformanceSettingsBox({ duringChangeEvent: false });
this.displayUseSystemLocale();
- let connectionSettingsLink = document.getElementById(
- "connectionSettingsLearnMore"
- );
- let connectionSettingsUrl =
- Services.urlFormatter.formatURLPref("app.support.baseURL") +
- "prefs-connection-settings";
- connectionSettingsLink.setAttribute("href", connectionSettingsUrl);
- this.updateProxySettingsUI();
- initializeProxyUI(gMainPane);
if (Services.prefs.getBoolPref("intl.multilingual.enabled")) {
gMainPane.initBrowserLocale();
@@ -503,11 +494,6 @@ var gMainPane = {
"change",
gMainPane.updateHardwareAcceleration.bind(gMainPane)
);
- setEventListener(
- "connectionSettings",
- "command",
- gMainPane.showConnections
- );
setEventListener(
"browserContainersCheckbox",
"command",
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index 27e9763a1f9e..089533f20ade 100644
--- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js
@@ -13,6 +13,7 @@
/* import-globals-from findInPage.js */
/* import-globals-from ../../base/content/utilityOverlay.js */
/* import-globals-from ../../../toolkit/content/preferencesBindings.js */
+/* import-globals-from ../torpreferences/content/torPane.js */
"use strict";
@@ -91,6 +92,14 @@ function init_all() {
document.getElementById("template-paneSync").remove();
}
register_module("paneSearchResults", gSearchResultsPane);
+ if (gTorPane.enabled) {
+ document.getElementById("category-tor").hidden = false;
+ register_module("paneTor", gTorPane);
+ } else {
+ // Remove the pane from the DOM so it doesn't get incorrectly included in search results.
+ document.getElementById("template-paneTor").remove();
+ }
+
gSearchResultsPane.init();
gMainPane.preInit();
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index e593f2dacd1e..5e341331da49 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -13,6 +13,7 @@
<?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
<?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
<?xml-stylesheet href="chrome://browser/content/securitylevel/securityLevelPreferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
<!DOCTYPE html [
<!ENTITY % aboutTorDTD SYSTEM "chrome://torbutton/locale/aboutTor.dtd">
@@ -141,6 +142,9 @@
<image class="category-icon"/>
<label class="category-name" flex="1" data-l10n-id="pane-sync-title2"></label>
</richlistitem>
+
+#include ../torpreferences/content/torCategory.inc.xhtml
+
</richlistbox>
<spacer flex="1"/>
@@ -200,6 +204,7 @@
#include privacy.inc.xhtml
#include containers.inc.xhtml
#include sync.inc.xhtml
+#include ../torpreferences/content/torPane.xhtml
</vbox>
</vbox>
</vbox>
diff --git a/browser/components/preferences/privacy.js b/browser/components/preferences/privacy.js
index 81ded441b6e6..23fcffe7b5eb 100644
--- a/browser/components/preferences/privacy.js
+++ b/browser/components/preferences/privacy.js
@@ -77,6 +77,7 @@ XPCOMUtils.defineLazyGetter(this, "AlertsServiceDND", function() {
}
});
+// TODO: module import via ChromeUtils.defineModuleGetter
XPCOMUtils.defineLazyScriptGetter(
this,
["SecurityLevelPreferences"],
diff --git a/browser/components/torpreferences/content/parseFunctions.jsm b/browser/components/torpreferences/content/parseFunctions.jsm
new file mode 100644
index 000000000000..954759de63a5
--- /dev/null
+++ b/browser/components/torpreferences/content/parseFunctions.jsm
@@ -0,0 +1,89 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "parsePort",
+ "parseAddrPort",
+ "parseUsernamePassword",
+ "parseAddrPortList",
+ "parseBridgeStrings",
+ "parsePortList",
+];
+
+// expects a string representation of an integer from 1 to 65535
+let parsePort = function(aPort) {
+ // ensure port string is a valid positive integer
+ const validIntRegex = /^[0-9]+$/;
+ if (!validIntRegex.test(aPort)) {
+ throw new Error(`Invalid PORT string : '${aPort}'`);
+ }
+
+ // ensure port value is on valid range
+ let port = Number.parseInt(aPort);
+ if (port < 1 || port > 65535) {
+ throw new Error(
+ `Invalid PORT value, needs to be on range [1,65535] : '${port}'`
+ );
+ }
+
+ return port;
+};
+// expects a string in the format: "ADDRESS:PORT"
+let parseAddrPort = function(aAddrColonPort) {
+ let tokens = aAddrColonPort.split(":");
+ if (tokens.length != 2) {
+ throw new Error(`Invalid ADDRESS:PORT string : '${aAddrColonPort}'`);
+ }
+ let address = tokens[0];
+ let port = parsePort(tokens[1]);
+ return [address, port];
+};
+
+// expects a string in the format: "USERNAME:PASSWORD"
+// split on the first colon and any subsequent go into password
+let parseUsernamePassword = function(aUsernameColonPassword) {
+ let colonIndex = aUsernameColonPassword.indexOf(":");
+ if (colonIndex < 0) {
+ // we don't log the contents of the potentially password containing string
+ throw new Error("Invalid USERNAME:PASSWORD string");
+ }
+
+ let username = aUsernameColonPassword.substring(0, colonIndex);
+ let password = aUsernameColonPassword.substring(colonIndex + 1);
+
+ return [username, password];
+};
+
+// expects a string in the format: ADDRESS:PORT,ADDRESS:PORT,...
+// returns array of ports (as ints)
+let parseAddrPortList = function(aAddrPortList) {
+ let addrPorts = aAddrPortList.split(",");
+ // parse ADDRESS:PORT string and only keep the port (second element in returned array)
+ let retval = addrPorts.map(addrPort => parseAddrPort(addrPort)[1]);
+ return retval;
+};
+
+// expects a '/n' or '/r/n' delimited bridge string, which we split and trim
+// each bridge string can also optionally have 'bridge' at the beginning ie:
+// bridge $(type) $(address):$(port) $(certificate)
+// we strip out the 'bridge' prefix here
+let parseBridgeStrings = function(aBridgeStrings) {
+
+ // replace carriage returns ('\r') with new lines ('\n')
+ aBridgeStrings = aBridgeStrings.replace(/\r/g, "\n");
+ // then replace contiguous new lines ('\n') with a single one
+ aBridgeStrings = aBridgeStrings.replace(/[\n]+/g, "\n");
+
+ // split on the newline and for each bridge string: trim, remove starting 'bridge' string
+ // finally discard entries that are empty strings; empty strings could occur if we receive
+ // a new line containing only whitespace
+ let splitStrings = aBridgeStrings.split("\n");
+ return splitStrings.map(val => val.trim().replace(/^bridge\s+/i, ""))
+ .filter(bridgeString => bridgeString != "");
+};
+
+// expecting a ',' delimited list of ints with possible white space between
+// returns an array of ints
+let parsePortList = function(aPortListString) {
+ let splitStrings = aPortListString.split(",");
+ return splitStrings.map(val => parsePort(val.trim()));
+};
diff --git a/browser/components/torpreferences/content/requestBridgeDialog.jsm b/browser/components/torpreferences/content/requestBridgeDialog.jsm
new file mode 100644
index 000000000000..027e6a152655
--- /dev/null
+++ b/browser/components/torpreferences/content/requestBridgeDialog.jsm
@@ -0,0 +1,220 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["RequestBridgeDialog"];
+
+const { BridgeDB } = ChromeUtils.import("resource:///modules/BridgeDB.jsm");
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+class RequestBridgeDialog {
+ constructor() {
+ this._dialog = null;
+ this._submitCommand = null;
+ this._submitButton = null;
+ this._dialogDescription = null;
+ this._captchaImage = null;
+ this._captchaEntryTextbox = null;
+ this._captchaRefreshCommand = null;
+ this._captchaRefreshButton = null;
+ this._incorrectCaptchaHbox = null;
+ this._incorrectCaptchaLabel = null;
+ this._bridges = [];
+ this._proxyURI = null;
+ }
+
+ static get selectors() {
+ return {
+ submitButton:
+ "accept" /* not really a selector but a key for dialog's getButton */,
+ dialogDescription: "description#torPreferences-requestBridge-description",
+ submitCommand: "command#torPreferences-requestBridge-submitCommand",
+ captchaImage: "image#torPreferences-requestBridge-captchaImage",
+ captchaEntryTextbox:
+ "input#torPreferences-requestBridge-captchaTextbox",
+ refreshCaptchaCommand:
+ "command#torPreferences-requestBridge-refreshCaptchaCommand",
+ refreshCaptchaButton:
+ "button#torPreferences-requestBridge-refreshCaptchaButton",
+ incorrectCaptchaHbox:
+ "hbox#torPreferences-requestBridge-incorrectCaptchaHbox",
+ incorrectCaptchaLabel:
+ "label#torPreferences-requestBridge-incorrectCaptchaError",
+ };
+ }
+
+ _populateXUL(dialog) {
+ const selectors = RequestBridgeDialog.selectors;
+
+ this._dialog = dialog;
+ this._dialog.setAttribute(
+ "title",
+ TorStrings.settings.requestBridgeDialogTitle
+ );
+ // user may have opened a Request Bridge dialog in another tab, so update the
+ // CAPTCHA image or close out the dialog if we have a bridge list
+ this._dialog.addEventListener("focusin", () => {
+ const uri = BridgeDB.currentCaptchaImage;
+ const bridges = BridgeDB.currentBridges;
+
+ // new captcha image
+ if (uri) {
+ this._setcaptchaImage(uri);
+ } else if (bridges) {
+ this._bridges = bridges;
+ this._submitButton.disabled = false;
+ this._dialog.acceptDialog();
+ }
+ });
+
+ this._submitCommand = this._dialog.querySelector(selectors.submitCommand);
+
+ this._submitButton = this._dialog.getButton(selectors.submitButton);
+ this._submitButton.setAttribute("label", TorStrings.settings.submitCaptcha);
+ this._submitButton.setAttribute("command", this._submitCommand.id);
+ this._submitButton.disabled = true;
+
+ this._dialogDescription = this._dialog.querySelector(
+ selectors.dialogDescription
+ );
+ this._dialogDescription.textContent =
+ TorStrings.settings.contactingBridgeDB;
+
+ this._captchaImage = this._dialog.querySelector(selectors.captchaImage);
+
+ // request captcha from bridge db
+ BridgeDB.requestNewCaptchaImage(this._proxyURI).then(uri => {
+ this._setcaptchaImage(uri);
+ });
+
+ this._captchaEntryTextbox = this._dialog.querySelector(
+ selectors.captchaEntryTextbox
+ );
+ this._captchaEntryTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.captchaTextboxPlaceholder
+ );
+ this._captchaEntryTextbox.disabled = true;
+ this._captchaEntryTextbox.onkeypress = evt => {
+ const ENTER_KEY = 13;
+ if (evt.keyCode == ENTER_KEY) {
+ // logically same as pressing the 'submit' button of the parent dialog
+ this.onSubmitCaptcha();
+ return false;
+ }
+ return true;
+ };
+ // disable submit if entry textbox is empty
+ this._captchaEntryTextbox.oninput = () => {
+ this._submitButton.disabled = this._captchaEntryTextbox.value == "";
+ };
+
+ this._captchaRefreshCommand = this._dialog.querySelector(
+ selectors.refreshCaptchaCommand
+ );
+ this._captchaRefreshButton = this._dialog.querySelector(
+ selectors.refreshCaptchaButton
+ );
+ this._captchaRefreshButton.setAttribute(
+ "command",
+ this._captchaRefreshCommand.id
+ );
+ this._captchaRefreshButton.disabled = true;
+
+ this._incorrectCaptchaHbox = this._dialog.querySelector(
+ selectors.incorrectCaptchaHbox
+ );
+ this._incorrectCaptchaLabel = this._dialog.querySelector(
+ selectors.incorrectCaptchaLabel
+ );
+ this._incorrectCaptchaLabel.setAttribute(
+ "value",
+ TorStrings.settings.incorrectCaptcha
+ );
+
+ return true;
+ }
+
+ _setcaptchaImage(uri) {
+ if (uri != this._captchaImage.src) {
+ this._captchaImage.src = uri;
+ this._dialogDescription.textContent = TorStrings.settings.solveTheCaptcha;
+ this._setUIDisabled(false);
+ this._captchaEntryTextbox.focus();
+ this._captchaEntryTextbox.select();
+ }
+ }
+
+ _setUIDisabled(disabled) {
+ this._submitButton.disabled = this._captchaGuessIsEmpty() || disabled;
+ this._captchaEntryTextbox.disabled = disabled;
+ this._captchaRefreshButton.disabled = disabled;
+ }
+
+ _captchaGuessIsEmpty() {
+ return this._captchaEntryTextbox.value == "";
+ }
+
+ init(window, dialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(dialog);
+ }, 0);
+ }
+
+ close() {
+ BridgeDB.close();
+ }
+
+ /*
+ Event Handlers
+ */
+ onSubmitCaptcha() {
+ let captchaText = this._captchaEntryTextbox.value.trim();
+ // noop if the field is empty
+ if (captchaText == "") {
+ return;
+ }
+
+ // freeze ui while we make request
+ this._setUIDisabled(true);
+ this._incorrectCaptchaHbox.style.visibility = "hidden";
+
+ BridgeDB.submitCaptchaGuess(captchaText)
+ .then(aBridges => {
+ this._bridges = aBridges;
+
+ this._submitButton.disabled = false;
+ this._dialog.acceptDialog();
+ })
+ .catch(aError => {
+ this._bridges = [];
+ this._setUIDisabled(false);
+ this._incorrectCaptchaHbox.style.visibility = "visible";
+ });
+ }
+
+ onRefreshCaptcha() {
+ this._setUIDisabled(true);
+ this._captchaImage.src = "";
+ this._dialogDescription.textContent =
+ TorStrings.settings.contactingBridgeDB;
+ this._captchaEntryTextbox.value = "";
+ this._incorrectCaptchaHbox.style.visibility = "hidden";
+
+ BridgeDB.requestNewCaptchaImage(this._proxyURI).then(uri => {
+ this._setcaptchaImage(uri);
+ });
+ }
+
+ openDialog(gSubDialog, aProxyURI, aCloseCallback) {
+ this._proxyURI = aProxyURI;
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/requestBridgeDialog.xhtml",
+ "resizable=yes",
+ this,
+ () => {
+ this.close();
+ aCloseCallback(this._bridges);
+ }
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/requestBridgeDialog.xhtml b/browser/components/torpreferences/content/requestBridgeDialog.xhtml
new file mode 100644
index 000000000000..1081194caf50
--- /dev/null
+++ b/browser/components/torpreferences/content/requestBridgeDialog.xhtml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<dialog id="torPreferences-requestBridge-dialog" type="child" class="prefwindow"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="Request Bridge"
+ buttons="cancel,accept"
+ role="dialog">
+ <command id="torPreferences-requestBridge-submitCommand" oncommand="requestBridgeDialog.onSubmitCaptcha();"/>
+ <!-- ok, so ​ is a zero-width space. We need to have *something* in the innerText so that XUL knows how tall the
+ description node is so that it can determine how large to make the dialog element's inner draw area. If we have
+ nothing in the innerText, then it collapse to 0 height, and the contents of the dialog ends up partially hidden >:( -->
+ <description id="torPreferences-requestBridge-description">​</description>
+ <!-- init to transparent 400x125 png -->
+ <image id="torPreferences-requestBridge-captchaImage" flex="1"/>
+ <hbox id="torPreferences-requestBridge-inputHbox">
+ <html:input id="torPreferences-requestBridge-captchaTextbox" type="text" style="-moz-box-flex: 1;"/>
+ <command id="torPreferences-requestBridge-refreshCaptchaCommand" oncommand="requestBridgeDialog.onRefreshCaptcha();"/>
+ <button id="torPreferences-requestBridge-refreshCaptchaButton" image="chrome://browser/skin/reload.svg"/>
+ </hbox>
+ <hbox id="torPreferences-requestBridge-incorrectCaptchaHbox" align="center">
+ <image id="torPreferences-requestBridge-errorIcon" />
+ <label id="torPreferences-requestBridge-incorrectCaptchaError" flex="1"/>
+ </hbox>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let requestBridgeDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-requestBridge-dialog");
+ requestBridgeDialog.init(window, dialog);
+ ]]></script>
+</dialog>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torBridgeSettings.jsm b/browser/components/torpreferences/content/torBridgeSettings.jsm
new file mode 100644
index 000000000000..ceb61d3ec972
--- /dev/null
+++ b/browser/components/torpreferences/content/torBridgeSettings.jsm
@@ -0,0 +1,325 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "TorBridgeSource",
+ "TorBridgeSettings",
+ "makeTorBridgeSettingsNone",
+ "makeTorBridgeSettingsBuiltin",
+ "makeTorBridgeSettingsBridgeDB",
+ "makeTorBridgeSettingsUserProvided",
+];
+
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+const TorBridgeSource = {
+ NONE: "NONE",
+ BUILTIN: "BUILTIN",
+ BRIDGEDB: "BRIDGEDB",
+ USERPROVIDED: "USERPROVIDED",
+};
+
+class TorBridgeSettings {
+ constructor() {
+ this._bridgeSource = TorBridgeSource.NONE;
+ this._selectedDefaultBridgeType = null;
+ this._bridgeStrings = [];
+ }
+
+ get selectedDefaultBridgeType() {
+ if (this._bridgeSource == TorBridgeSource.BUILTIN) {
+ return this._selectedDefaultBridgeType;
+ }
+ return undefined;
+ }
+
+ get bridgeSource() {
+ return this._bridgeSource;
+ }
+
+ // for display
+ get bridgeStrings() {
+ return this._bridgeStrings.join("\n");
+ }
+
+ // raw
+ get bridgeStringsArray() {
+ return this._bridgeStrings;
+ }
+
+ static get defaultBridgeTypes() {
+ if (TorBridgeSettings._defaultBridgeTypes) {
+ return TorBridgeSettings._defaultBridgeTypes;
+ }
+
+ let bridgeListBranch = Services.prefs.getBranch(
+ TorStrings.preferenceBranches.defaultBridge
+ );
+ let bridgePrefs = bridgeListBranch.getChildList("", {});
+
+ // an unordered set for shoving bridge types into
+ let bridgeTypes = new Set();
+ // look for keys ending in ".N" and treat string before that as the bridge type
+ const pattern = /\.[0-9]+$/;
+ for (const key of bridgePrefs) {
+ const offset = key.search(pattern);
+ if (offset != -1) {
+ const bt = key.substring(0, offset);
+ bridgeTypes.add(bt);
+ }
+ }
+
+ // recommended bridge type goes first in the list
+ let recommendedBridgeType = Services.prefs.getCharPref(
+ TorStrings.preferenceKeys.recommendedBridgeType,
+ null
+ );
+
+ let retval = [];
+ if (recommendedBridgeType && bridgeTypes.has(recommendedBridgeType)) {
+ retval.push(recommendedBridgeType);
+ }
+
+ for (const bridgeType of bridgeTypes.values()) {
+ if (bridgeType != recommendedBridgeType) {
+ retval.push(bridgeType);
+ }
+ }
+
+ // cache off
+ TorBridgeSettings._defaultBridgeTypes = retval;
+ return retval;
+ }
+
+ _readDefaultBridges(aBridgeType) {
+ let bridgeBranch = Services.prefs.getBranch(
+ TorStrings.preferenceBranches.defaultBridge
+ );
+ let bridgeBranchPrefs = bridgeBranch.getChildList("", {});
+
+ let retval = [];
+
+ // regex matches against strings ending in ".N" where N is a positive integer
+ let pattern = /\.[0-9]+$/;
+ for (const key of bridgeBranchPrefs) {
+ // verify the location of the match is the correct offset required for aBridgeType
+ // to fit, and that the string begins with aBridgeType
+ if (
+ key.search(pattern) == aBridgeType.length &&
+ key.startsWith(aBridgeType)
+ ) {
+ let bridgeStr = bridgeBranch.getCharPref(key);
+ retval.push(bridgeStr);
+ }
+ }
+
+ // fisher-yates shuffle
+ // shuffle so that Tor Browser users don't all try the built-in bridges in the same order
+ for (let i = retval.length - 1; i > 0; --i) {
+ // number n such that 0.0 <= n < 1.0
+ const n = Math.random();
+ // integer j such that 0 <= j <= i
+ const j = Math.floor(n * (i + 1));
+
+ // swap values at indices i and j
+ const tmp = retval[i];
+ retval[i] = retval[j];
+ retval[j] = tmp;
+ }
+
+ return retval;
+ }
+
+ _readBridgeDBBridges() {
+ let bridgeBranch = Services.prefs.getBranch(
+ `${TorStrings.preferenceBranches.bridgeDBBridges}`
+ );
+ let bridgeBranchPrefs = bridgeBranch.getChildList("", {});
+ // the child prefs do not come in any particular order so sort the keys
+ // so the values can be compared to what we get out off torrc
+ bridgeBranchPrefs.sort();
+
+ // just assume all of the prefs under the parent point to valid bridge string
+ let retval = bridgeBranchPrefs.map(key =>
+ bridgeBranch.getCharPref(key).trim()
+ );
+
+ return retval;
+ }
+
+ _readTorrcBridges() {
+ let bridgeList = TorProtocolService.readStringArraySetting(
+ TorStrings.configKeys.bridgeList
+ );
+
+ let retval = [];
+ for (const line of bridgeList) {
+ let trimmedLine = line.trim();
+ if (trimmedLine) {
+ retval.push(trimmedLine);
+ }
+ }
+
+ return retval;
+ }
+
+ // analagous to initBridgeSettings()
+ readSettings() {
+ // restore to defaults
+ this._bridgeSource = TorBridgeSource.NONE;
+ this._selectedDefaultBridgeType = null;
+ this._bridgeStrings = [];
+
+ // So the way tor-launcher determines the origin of the configured bridges is a bit
+ // weird and depends on inferring our scenario based on some firefox prefs and the
+ // relationship between the saved list of bridges in about:config vs the list saved in torrc
+
+ // first off, if "extensions.torlauncher.default_bridge_type" is set to one of our
+ // builtin default types (obfs4, meek-azure, snowflake, etc) then we provide the
+ // bridges in "extensions.torlauncher.default_bridge.*" (filtered by our default_bridge_type)
+
+ // next, we compare the list of bridges saved in torrc to the bridges stored in the
+ // "extensions.torlauncher.bridgedb_bridge."" branch. If they match *exactly* then we assume
+ // the bridges were retrieved from BridgeDB and use those. If the torrc list is empty then we know
+ // we have no bridge settings
+
+ // finally, if none of the previous conditions are not met, it is assumed the bridges stored in
+ // torrc are user-provided
+
+ // what we should(?) do once we excise tor-launcher entirely is explicitly store an int/enum in
+ // about:config that tells us which scenario we are in so we don't have to guess
+
+ let defaultBridgeType = Services.prefs.getCharPref(
+ TorStrings.preferenceKeys.defaultBridgeType,
+ null
+ );
+
+ // check if source is BUILTIN
+ if (defaultBridgeType) {
+ this._bridgeStrings = this._readDefaultBridges(defaultBridgeType);
+ this._bridgeSource = TorBridgeSource.BUILTIN;
+ this._selectedDefaultBridgeType = defaultBridgeType;
+ return;
+ }
+
+ let torrcBridges = this._readTorrcBridges();
+
+ // no stored bridges means no bridge is in use
+ if (torrcBridges.length == 0) {
+ this._bridgeStrings = [];
+ this._bridgeSource = TorBridgeSource.NONE;
+ return;
+ }
+
+ let bridgedbBridges = this._readBridgeDBBridges();
+
+ // if these two lists are equal then we got our bridges from bridgedb
+ // ie: same element in identical order
+ let arraysEqual = (left, right) => {
+ if (left.length != right.length) {
+ return false;
+ }
+ const length = left.length;
+ for (let i = 0; i < length; ++i) {
+ if (left[i] != right[i]) {
+ return false;
+ }
+ }
+ return true;
+ };
+
+ // agreement between prefs and torrc means bridgedb bridges
+ if (arraysEqual(torrcBridges, bridgedbBridges)) {
+ this._bridgeStrings = torrcBridges;
+ this._bridgeSource = TorBridgeSource.BRIDGEDB;
+ return;
+ }
+
+ // otherwise they must be user provided
+ this._bridgeStrings = torrcBridges;
+ this._bridgeSource = TorBridgeSource.USERPROVIDED;
+ }
+
+ writeSettings() {
+ let settingsObject = new Map();
+
+ // init tor bridge settings to null
+ settingsObject.set(TorStrings.configKeys.useBridges, null);
+ settingsObject.set(TorStrings.configKeys.bridgeList, null);
+
+ // clear bridge related firefox prefs
+ Services.prefs.setCharPref(TorStrings.preferenceKeys.defaultBridgeType, "");
+ let bridgeBranch = Services.prefs.getBranch(
+ `${TorStrings.preferenceBranches.bridgeDBBridges}`
+ );
+ let bridgeBranchPrefs = bridgeBranch.getChildList("", {});
+ for (const pref of bridgeBranchPrefs) {
+ Services.prefs.clearUserPref(
+ `${TorStrings.preferenceBranches.bridgeDBBridges}${pref}`
+ );
+ }
+
+ switch (this._bridgeSource) {
+ case TorBridgeSource.BUILTIN:
+ // set builtin bridge type to use in prefs
+ Services.prefs.setCharPref(
+ TorStrings.preferenceKeys.defaultBridgeType,
+ this._selectedDefaultBridgeType
+ );
+ break;
+ case TorBridgeSource.BRIDGEDB:
+ // save bridges off to prefs
+ for (let i = 0; i < this.bridgeStringsArray.length; ++i) {
+ Services.prefs.setCharPref(
+ `${TorStrings.preferenceBranches.bridgeDBBridges}${i}`,
+ this.bridgeStringsArray[i]
+ );
+ }
+ break;
+ }
+
+ // write over our bridge list if bridges are enabled
+ if (this._bridgeSource != TorBridgeSource.NONE) {
+ settingsObject.set(TorStrings.configKeys.useBridges, true);
+ settingsObject.set(
+ TorStrings.configKeys.bridgeList,
+ this.bridgeStringsArray
+ );
+ }
+ TorProtocolService.writeSettings(settingsObject);
+ }
+}
+
+function makeTorBridgeSettingsNone() {
+ return new TorBridgeSettings();
+}
+
+function makeTorBridgeSettingsBuiltin(aBridgeType) {
+ let retval = new TorBridgeSettings();
+ retval._bridgeSource = TorBridgeSource.BUILTIN;
+ retval._selectedDefaultBridgeType = aBridgeType;
+ retval._bridgeStrings = retval._readDefaultBridges(aBridgeType);
+
+ return retval;
+}
+
+function makeTorBridgeSettingsBridgeDB(aBridges) {
+ let retval = new TorBridgeSettings();
+ retval._bridgeSource = TorBridgeSource.BRIDGEDB;
+ retval._selectedDefaultBridgeType = null;
+ retval._bridgeStrings = aBridges;
+
+ return retval;
+}
+
+function makeTorBridgeSettingsUserProvided(aBridges) {
+ let retval = new TorBridgeSettings();
+ retval._bridgeSource = TorBridgeSource.USERPROVIDED;
+ retval._selectedDefaultBridgeType = null;
+ retval._bridgeStrings = aBridges;
+
+ return retval;
+}
diff --git a/browser/components/torpreferences/content/torCategory.inc.xhtml b/browser/components/torpreferences/content/torCategory.inc.xhtml
new file mode 100644
index 000000000000..abe56200f571
--- /dev/null
+++ b/browser/components/torpreferences/content/torCategory.inc.xhtml
@@ -0,0 +1,9 @@
+<richlistitem id="category-tor"
+ class="category"
+ value="paneTor"
+ helpTopic="prefs-tor"
+ align="center"
+ hidden="true">
+ <image class="category-icon"/>
+ <label id="torPreferences-labelCategory" class="category-name" flex="1" value="Tor"/>
+</richlistitem>
diff --git a/browser/components/torpreferences/content/torFirewallSettings.jsm b/browser/components/torpreferences/content/torFirewallSettings.jsm
new file mode 100644
index 000000000000..e77f18ef2fae
--- /dev/null
+++ b/browser/components/torpreferences/content/torFirewallSettings.jsm
@@ -0,0 +1,72 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "TorFirewallSettings",
+ "makeTorFirewallSettingsNone",
+ "makeTorFirewallSettingsCustom",
+];
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+const { parseAddrPortList } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/parseFunctions.jsm"
+);
+
+class TorFirewallSettings {
+ constructor() {
+ this._allowedPorts = [];
+ }
+
+ get portsConfigurationString() {
+ let portStrings = this._allowedPorts.map(port => `*:${port}`);
+ return portStrings.join(",");
+ }
+
+ get commaSeparatedListString() {
+ return this._allowedPorts.join(",");
+ }
+
+ get hasPorts() {
+ return this._allowedPorts.length > 0;
+ }
+
+ readSettings() {
+ let addressPortList = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.reachableAddresses
+ );
+
+ let allowedPorts = [];
+ if (addressPortList) {
+ allowedPorts = parseAddrPortList(addressPortList);
+ }
+ this._allowedPorts = allowedPorts;
+ }
+
+ writeSettings() {
+ let settingsObject = new Map();
+
+ // init to null so Tor daemon resets if no ports
+ settingsObject.set(TorStrings.configKeys.reachableAddresses, null);
+
+ if (this._allowedPorts.length > 0) {
+ settingsObject.set(
+ TorStrings.configKeys.reachableAddresses,
+ this.portsConfigurationString
+ );
+ }
+
+ TorProtocolService.writeSettings(settingsObject);
+ }
+}
+
+function makeTorFirewallSettingsNone() {
+ return new TorFirewallSettings();
+}
+
+function makeTorFirewallSettingsCustom(aPortsList) {
+ let retval = new TorFirewallSettings();
+ retval._allowedPorts = aPortsList;
+ return retval;
+}
diff --git a/browser/components/torpreferences/content/torLogDialog.jsm b/browser/components/torpreferences/content/torLogDialog.jsm
new file mode 100644
index 000000000000..70e49ac048f8
--- /dev/null
+++ b/browser/components/torpreferences/content/torLogDialog.jsm
@@ -0,0 +1,65 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["TorLogDialog"];
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+class TorLogDialog {
+ constructor() {
+ this._dialog = null;
+ this._logTextarea = null;
+ this._copyLogButton = null;
+ }
+
+ static get selectors() {
+ return {
+ copyLogButton: "extra1",
+ logTextarea: "textarea#torPreferences-torDialog-textarea",
+ };
+ }
+
+ _populateXUL(aDialog) {
+ this._dialog = aDialog;
+ this._dialog.setAttribute("title", TorStrings.settings.torLogDialogTitle);
+
+ this._logTextarea = this._dialog.querySelector(
+ TorLogDialog.selectors.logTextarea
+ );
+
+ this._copyLogButton = this._dialog.getButton(
+ TorLogDialog.selectors.copyLogButton
+ );
+ this._copyLogButton.setAttribute("label", TorStrings.settings.copyLog);
+ this._copyLogButton.addEventListener("command", () => {
+ this.copyTorLog();
+ });
+
+ this._logTextarea.value = TorProtocolService.getLog();
+ }
+
+ init(window, aDialog) {
+ // defer to later until firefox has populated the dialog with all our elements
+ window.setTimeout(() => {
+ this._populateXUL(aDialog);
+ }, 0);
+ }
+
+ copyTorLog() {
+ // Copy tor log messages to the system clipboard.
+ let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(
+ Ci.nsIClipboardHelper
+ );
+ clipboard.copyString(this._logTextarea.value);
+ }
+
+ openDialog(gSubDialog) {
+ gSubDialog.open(
+ "chrome://browser/content/torpreferences/torLogDialog.xhtml",
+ "resizable=yes",
+ this
+ );
+ }
+}
diff --git a/browser/components/torpreferences/content/torLogDialog.xhtml b/browser/components/torpreferences/content/torLogDialog.xhtml
new file mode 100644
index 000000000000..ae0f4b294204
--- /dev/null
+++ b/browser/components/torpreferences/content/torLogDialog.xhtml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/preferences/preferences.css"?>
+<?xml-stylesheet href="chrome://browser/content/torpreferences/torPreferences.css"?>
+
+<dialog id="torPreferences-torLog-dialog" type="child" class="prefwindow"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ buttons="accept,extra1"
+ role="dialog">
+ <html:textarea
+ id="torPreferences-torDialog-textarea"
+ multiline="true"
+ readonly="true"/>
+ <script type="application/javascript"><![CDATA[
+ "use strict";
+
+ let torLogDialog = window.arguments[0];
+ let dialog = document.getElementById("torPreferences-torLog-dialog");
+ torLogDialog.init(window, dialog);
+ ]]></script>
+</dialog>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torPane.js b/browser/components/torpreferences/content/torPane.js
new file mode 100644
index 000000000000..49054b5dac6a
--- /dev/null
+++ b/browser/components/torpreferences/content/torPane.js
@@ -0,0 +1,857 @@
+"use strict";
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+
+const {
+ TorBridgeSource,
+ TorBridgeSettings,
+ makeTorBridgeSettingsNone,
+ makeTorBridgeSettingsBuiltin,
+ makeTorBridgeSettingsBridgeDB,
+ makeTorBridgeSettingsUserProvided,
+} = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torBridgeSettings.jsm"
+);
+
+const {
+ TorProxyType,
+ TorProxySettings,
+ makeTorProxySettingsNone,
+ makeTorProxySettingsSocks4,
+ makeTorProxySettingsSocks5,
+ makeTorProxySettingsHTTPS,
+} = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torProxySettings.jsm"
+);
+const {
+ TorFirewallSettings,
+ makeTorFirewallSettingsNone,
+ makeTorFirewallSettingsCustom,
+} = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torFirewallSettings.jsm"
+);
+
+const { TorLogDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/torLogDialog.jsm"
+);
+
+const { RequestBridgeDialog } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/requestBridgeDialog.jsm"
+);
+
+ChromeUtils.defineModuleGetter(
+ this,
+ "TorStrings",
+ "resource:///modules/TorStrings.jsm"
+);
+
+const { parsePort, parseBridgeStrings, parsePortList } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/parseFunctions.jsm"
+);
+
+/*
+ Tor Pane
+
+ Code for populating the XUL in about:preferences#tor, handling input events, interfacing with tor-launcher
+*/
+const gTorPane = (function() {
+ /* CSS selectors for all of the Tor Network DOM elements we need to access */
+ const selectors = {
+ category: {
+ title: "label#torPreferences-labelCategory",
+ },
+ torPreferences: {
+ header: "h1#torPreferences-header",
+ description: "span#torPreferences-description",
+ learnMore: "label#torPreferences-learnMore",
+ },
+ bridges: {
+ header: "h2#torPreferences-bridges-header",
+ description: "span#torPreferences-bridges-description",
+ learnMore: "label#torPreferences-bridges-learnMore",
+ useBridgeCheckbox: "checkbox#torPreferences-bridges-toggle",
+ bridgeSelectionRadiogroup:
+ "radiogroup#torPreferences-bridges-bridgeSelection",
+ builtinBridgeOption: "radio#torPreferences-bridges-radioBuiltin",
+ builtinBridgeList: "menulist#torPreferences-bridges-builtinList",
+ requestBridgeOption: "radio#torPreferences-bridges-radioRequestBridge",
+ requestBridgeButton: "button#torPreferences-bridges-buttonRequestBridge",
+ requestBridgeTextarea:
+ "textarea#torPreferences-bridges-textareaRequestBridge",
+ provideBridgeOption: "radio#torPreferences-bridges-radioProvideBridge",
+ provideBridgeDescription:
+ "description#torPreferences-bridges-descriptionProvideBridge",
+ provideBridgeTextarea:
+ "textarea#torPreferences-bridges-textareaProvideBridge",
+ },
+ advanced: {
+ header: "h2#torPreferences-advanced-header",
+ description: "span#torPreferences-advanced-description",
+ learnMore: "label#torPreferences-advanced-learnMore",
+ useProxyCheckbox: "checkbox#torPreferences-advanced-toggleProxy",
+ proxyTypeLabel: "label#torPreferences-localProxy-type",
+ proxyTypeList: "menulist#torPreferences-localProxy-builtinList",
+ proxyAddressLabel: "label#torPreferences-localProxy-address",
+ proxyAddressTextbox: "input#torPreferences-localProxy-textboxAddress",
+ proxyPortLabel: "label#torPreferences-localProxy-port",
+ proxyPortTextbox: "input#torPreferences-localProxy-textboxPort",
+ proxyUsernameLabel: "label#torPreferences-localProxy-username",
+ proxyUsernameTextbox: "input#torPreferences-localProxy-textboxUsername",
+ proxyPasswordLabel: "label#torPreferences-localProxy-password",
+ proxyPasswordTextbox: "input#torPreferences-localProxy-textboxPassword",
+ useFirewallCheckbox: "checkbox#torPreferences-advanced-toggleFirewall",
+ firewallAllowedPortsLabel: "label#torPreferences-advanced-allowedPorts",
+ firewallAllowedPortsTextbox:
+ "input#torPreferences-advanced-textboxAllowedPorts",
+ torLogsLabel: "label#torPreferences-torLogs",
+ torLogsButton: "button#torPreferences-buttonTorLogs",
+ },
+ }; /* selectors */
+
+ let retval = {
+ // cached frequently accessed DOM elements
+ _useBridgeCheckbox: null,
+ _bridgeSelectionRadiogroup: null,
+ _builtinBridgeOption: null,
+ _builtinBridgeMenulist: null,
+ _requestBridgeOption: null,
+ _requestBridgeButton: null,
+ _requestBridgeTextarea: null,
+ _provideBridgeOption: null,
+ _provideBridgeTextarea: null,
+ _useProxyCheckbox: null,
+ _proxyTypeLabel: null,
+ _proxyTypeMenulist: null,
+ _proxyAddressLabel: null,
+ _proxyAddressTextbox: null,
+ _proxyPortLabel: null,
+ _proxyPortTextbox: null,
+ _proxyUsernameLabel: null,
+ _proxyUsernameTextbox: null,
+ _proxyPasswordLabel: null,
+ _proxyPasswordTextbox: null,
+ _useFirewallCheckbox: null,
+ _allowedPortsLabel: null,
+ _allowedPortsTextbox: null,
+
+ // tor network settings
+ _bridgeSettings: null,
+ _proxySettings: null,
+ _firewallSettings: null,
+
+ // disables the provided list of elements
+ _setElementsDisabled(elements, disabled) {
+ for (let currentElement of elements) {
+ currentElement.disabled = disabled;
+ }
+ },
+
+ // populate xul with strings and cache the relevant elements
+ _populateXUL() {
+ // saves tor settings to disk when navigate away from about:preferences
+ window.addEventListener("blur", val => {
+ TorProtocolService.flushSettings();
+ });
+
+ document
+ .querySelector(selectors.category.title)
+ .setAttribute("value", TorStrings.settings.categoryTitle);
+
+ let prefpane = document.getElementById("mainPrefPane");
+
+ // Heading
+ prefpane.querySelector(selectors.torPreferences.header).innerText =
+ TorStrings.settings.torPreferencesHeading;
+ prefpane.querySelector(selectors.torPreferences.description).textContent =
+ TorStrings.settings.torPreferencesDescription;
+ {
+ let learnMore = prefpane.querySelector(
+ selectors.torPreferences.learnMore
+ );
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute(
+ "href",
+ TorStrings.settings.learnMoreTorBrowserURL
+ );
+ }
+
+ // Bridge setup
+ prefpane.querySelector(selectors.bridges.header).innerText =
+ TorStrings.settings.bridgesHeading;
+ prefpane.querySelector(selectors.bridges.description).textContent =
+ TorStrings.settings.bridgesDescription;
+ {
+ let learnMore = prefpane.querySelector(selectors.bridges.learnMore);
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute("href", TorStrings.settings.learnMoreBridgesURL);
+ }
+
+ this._useBridgeCheckbox = prefpane.querySelector(
+ selectors.bridges.useBridgeCheckbox
+ );
+ this._useBridgeCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.useBridge
+ );
+ this._useBridgeCheckbox.addEventListener("command", e => {
+ const checked = this._useBridgeCheckbox.checked;
+ gTorPane.onToggleBridge(checked).onUpdateBridgeSettings();
+ });
+ this._bridgeSelectionRadiogroup = prefpane.querySelector(
+ selectors.bridges.bridgeSelectionRadiogroup
+ );
+ this._bridgeSelectionRadiogroup.value = TorBridgeSource.BUILTIN;
+ this._bridgeSelectionRadiogroup.addEventListener("command", e => {
+ const value = this._bridgeSelectionRadiogroup.value;
+ gTorPane.onSelectBridgeOption(value).onUpdateBridgeSettings();
+ });
+
+ // Builtin bridges
+ this._builtinBridgeOption = prefpane.querySelector(
+ selectors.bridges.builtinBridgeOption
+ );
+ this._builtinBridgeOption.setAttribute(
+ "label",
+ TorStrings.settings.selectBridge
+ );
+ this._builtinBridgeOption.setAttribute("value", TorBridgeSource.BUILTIN);
+ this._builtinBridgeMenulist = prefpane.querySelector(
+ selectors.bridges.builtinBridgeList
+ );
+ this._builtinBridgeMenulist.addEventListener("command", e => {
+ gTorPane.onUpdateBridgeSettings();
+ });
+
+ // Request bridge
+ this._requestBridgeOption = prefpane.querySelector(
+ selectors.bridges.requestBridgeOption
+ );
+ this._requestBridgeOption.setAttribute(
+ "label",
+ TorStrings.settings.requestBridgeFromTorProject
+ );
+ this._requestBridgeOption.setAttribute("value", TorBridgeSource.BRIDGEDB);
+ this._requestBridgeButton = prefpane.querySelector(
+ selectors.bridges.requestBridgeButton
+ );
+ this._requestBridgeButton.setAttribute(
+ "label",
+ TorStrings.settings.requestNewBridge
+ );
+ this._requestBridgeButton.addEventListener("command", () =>
+ gTorPane.onRequestBridge()
+ );
+ this._requestBridgeTextarea = prefpane.querySelector(
+ selectors.bridges.requestBridgeTextarea
+ );
+
+ // Provide a bridge
+ this._provideBridgeOption = prefpane.querySelector(
+ selectors.bridges.provideBridgeOption
+ );
+ this._provideBridgeOption.setAttribute(
+ "label",
+ TorStrings.settings.provideBridge
+ );
+ this._provideBridgeOption.setAttribute(
+ "value",
+ TorBridgeSource.USERPROVIDED
+ );
+ prefpane.querySelector(
+ selectors.bridges.provideBridgeDescription
+ ).textContent = TorStrings.settings.provideBridgeDirections;
+ this._provideBridgeTextarea = prefpane.querySelector(
+ selectors.bridges.provideBridgeTextarea
+ );
+ this._provideBridgeTextarea.setAttribute(
+ "placeholder",
+ TorStrings.settings.provideBridgePlaceholder
+ );
+ this._provideBridgeTextarea.addEventListener("blur", () => {
+ gTorPane.onUpdateBridgeSettings();
+ });
+
+ // Advanced setup
+ prefpane.querySelector(selectors.advanced.header).innerText =
+ TorStrings.settings.advancedHeading;
+ prefpane.querySelector(selectors.advanced.description).textContent =
+ TorStrings.settings.advancedDescription;
+ {
+ let learnMore = prefpane.querySelector(selectors.advanced.learnMore);
+ learnMore.setAttribute("value", TorStrings.settings.learnMore);
+ learnMore.setAttribute(
+ "href",
+ TorStrings.settings.learnMoreNetworkSettingsURL
+ );
+ }
+
+ // Local Proxy
+ this._useProxyCheckbox = prefpane.querySelector(
+ selectors.advanced.useProxyCheckbox
+ );
+ this._useProxyCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.useLocalProxy
+ );
+ this._useProxyCheckbox.addEventListener("command", e => {
+ const checked = this._useProxyCheckbox.checked;
+ gTorPane.onToggleProxy(checked).onUpdateProxySettings();
+ });
+ this._proxyTypeLabel = prefpane.querySelector(
+ selectors.advanced.proxyTypeLabel
+ );
+ this._proxyTypeLabel.setAttribute("value", TorStrings.settings.proxyType);
+
+ let mockProxies = [
+ {
+ value: TorProxyType.SOCKS4,
+ label: TorStrings.settings.proxyTypeSOCKS4,
+ },
+ {
+ value: TorProxyType.SOCKS5,
+ label: TorStrings.settings.proxyTypeSOCKS5,
+ },
+ { value: TorProxyType.HTTPS, label: TorStrings.settings.proxyTypeHTTP },
+ ];
+ this._proxyTypeMenulist = prefpane.querySelector(
+ selectors.advanced.proxyTypeList
+ );
+ this._proxyTypeMenulist.addEventListener("command", e => {
+ const value = this._proxyTypeMenulist.value;
+ gTorPane.onSelectProxyType(value).onUpdateProxySettings();
+ });
+ for (let currentProxy of mockProxies) {
+ let menuEntry = document.createXULElement("menuitem");
+ menuEntry.setAttribute("value", currentProxy.value);
+ menuEntry.setAttribute("label", currentProxy.label);
+ this._proxyTypeMenulist
+ .querySelector("menupopup")
+ .appendChild(menuEntry);
+ }
+
+ this._proxyAddressLabel = prefpane.querySelector(
+ selectors.advanced.proxyAddressLabel
+ );
+ this._proxyAddressLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyAddress
+ );
+ this._proxyAddressTextbox = prefpane.querySelector(
+ selectors.advanced.proxyAddressTextbox
+ );
+ this._proxyAddressTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyAddressPlaceholder
+ );
+ this._proxyAddressTextbox.addEventListener("blur", () => {
+ gTorPane.onUpdateProxySettings();
+ });
+ this._proxyPortLabel = prefpane.querySelector(
+ selectors.advanced.proxyPortLabel
+ );
+ this._proxyPortLabel.setAttribute("value", TorStrings.settings.proxyPort);
+ this._proxyPortTextbox = prefpane.querySelector(
+ selectors.advanced.proxyPortTextbox
+ );
+ this._proxyPortTextbox.addEventListener("blur", () => {
+ gTorPane.onUpdateProxySettings();
+ });
+ this._proxyUsernameLabel = prefpane.querySelector(
+ selectors.advanced.proxyUsernameLabel
+ );
+ this._proxyUsernameLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyUsername
+ );
+ this._proxyUsernameTextbox = prefpane.querySelector(
+ selectors.advanced.proxyUsernameTextbox
+ );
+ this._proxyUsernameTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyUsernamePasswordPlaceholder
+ );
+ this._proxyUsernameTextbox.addEventListener("blur", () => {
+ gTorPane.onUpdateProxySettings();
+ });
+ this._proxyPasswordLabel = prefpane.querySelector(
+ selectors.advanced.proxyPasswordLabel
+ );
+ this._proxyPasswordLabel.setAttribute(
+ "value",
+ TorStrings.settings.proxyPassword
+ );
+ this._proxyPasswordTextbox = prefpane.querySelector(
+ selectors.advanced.proxyPasswordTextbox
+ );
+ this._proxyPasswordTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.proxyUsernamePasswordPlaceholder
+ );
+ this._proxyPasswordTextbox.addEventListener("blur", () => {
+ gTorPane.onUpdateProxySettings();
+ });
+
+ // Local firewall
+ this._useFirewallCheckbox = prefpane.querySelector(
+ selectors.advanced.useFirewallCheckbox
+ );
+ this._useFirewallCheckbox.setAttribute(
+ "label",
+ TorStrings.settings.useFirewall
+ );
+ this._useFirewallCheckbox.addEventListener("command", e => {
+ const checked = this._useFirewallCheckbox.checked;
+ gTorPane.onToggleFirewall(checked).onUpdateFirewallSettings();
+ });
+ this._allowedPortsLabel = prefpane.querySelector(
+ selectors.advanced.firewallAllowedPortsLabel
+ );
+ this._allowedPortsLabel.setAttribute(
+ "value",
+ TorStrings.settings.allowedPorts
+ );
+ this._allowedPortsTextbox = prefpane.querySelector(
+ selectors.advanced.firewallAllowedPortsTextbox
+ );
+ this._allowedPortsTextbox.setAttribute(
+ "placeholder",
+ TorStrings.settings.allowedPortsPlaceholder
+ );
+ this._allowedPortsTextbox.addEventListener("blur", () => {
+ gTorPane.onUpdateFirewallSettings();
+ });
+
+ // Tor logs
+ prefpane
+ .querySelector(selectors.advanced.torLogsLabel)
+ .setAttribute("value", TorStrings.settings.showTorDaemonLogs);
+ let torLogsButton = prefpane.querySelector(
+ selectors.advanced.torLogsButton
+ );
+ torLogsButton.setAttribute("label", TorStrings.settings.showLogs);
+ torLogsButton.addEventListener("command", () => {
+ gTorPane.onViewTorLogs();
+ });
+
+ // Disable all relevant elements by default
+ this._setElementsDisabled(
+ [
+ this._builtinBridgeOption,
+ this._builtinBridgeMenulist,
+ this._requestBridgeOption,
+ this._requestBridgeButton,
+ this._requestBridgeTextarea,
+ this._provideBridgeOption,
+ this._provideBridgeTextarea,
+ this._proxyTypeLabel,
+ this._proxyTypeMenulist,
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ this._allowedPortsLabel,
+ this._allowedPortsTextbox,
+ ],
+ true
+ );
+
+ // load bridge settings
+ let torBridgeSettings = new TorBridgeSettings();
+ torBridgeSettings.readSettings();
+
+ // populate the bridge list
+ for (let currentBridge of TorBridgeSettings.defaultBridgeTypes) {
+ let menuEntry = document.createXULElement("menuitem");
+ menuEntry.setAttribute("value", currentBridge);
+ menuEntry.setAttribute("label", currentBridge);
+ this._builtinBridgeMenulist
+ .querySelector("menupopup")
+ .appendChild(menuEntry);
+ }
+
+ this.onSelectBridgeOption(torBridgeSettings.bridgeSource);
+ this.onToggleBridge(
+ torBridgeSettings.bridgeSource != TorBridgeSource.NONE
+ );
+ switch (torBridgeSettings.bridgeSource) {
+ case TorBridgeSource.NONE:
+ break;
+ case TorBridgeSource.BUILTIN:
+ this._builtinBridgeMenulist.value =
+ torBridgeSettings.selectedDefaultBridgeType;
+ break;
+ case TorBridgeSource.BRIDGEDB:
+ this._requestBridgeTextarea.value = torBridgeSettings.bridgeStrings;
+ break;
+ case TorBridgeSource.USERPROVIDED:
+ this._provideBridgeTextarea.value = torBridgeSettings.bridgeStrings;
+ break;
+ }
+
+ this._bridgeSettings = torBridgeSettings;
+
+ // load proxy settings
+ let torProxySettings = new TorProxySettings();
+ torProxySettings.readSettings();
+
+ if (torProxySettings.type != TorProxyType.NONE) {
+ this.onToggleProxy(true);
+ this.onSelectProxyType(torProxySettings.type);
+ this._proxyAddressTextbox.value = torProxySettings.address;
+ this._proxyPortTextbox.value = torProxySettings.port;
+ this._proxyUsernameTextbox.value = torProxySettings.username;
+ this._proxyPasswordTextbox.value = torProxySettings.password;
+ }
+
+ this._proxySettings = torProxySettings;
+
+ // load firewall settings
+ let torFirewallSettings = new TorFirewallSettings();
+ torFirewallSettings.readSettings();
+
+ if (torFirewallSettings.hasPorts) {
+ this.onToggleFirewall(true);
+ this._allowedPortsTextbox.value =
+ torFirewallSettings.commaSeparatedListString;
+ }
+
+ this._firewallSettings = torFirewallSettings;
+ },
+
+ init() {
+ this._populateXUL();
+ },
+
+ // whether the page should be present in about:preferences
+ get enabled() {
+ return TorProtocolService.ownsTorDaemon;
+ },
+
+ //
+ // Callbacks
+ //
+
+ // callback when using bridges toggled
+ onToggleBridge(enabled) {
+ this._useBridgeCheckbox.checked = enabled;
+ let disabled = !enabled;
+
+ // first disable all the bridge related elements
+ this._setElementsDisabled(
+ [
+ this._builtinBridgeOption,
+ this._builtinBridgeMenulist,
+ this._requestBridgeOption,
+ this._requestBridgeButton,
+ this._requestBridgeTextarea,
+ this._provideBridgeOption,
+ this._provideBridgeTextarea,
+ ],
+ disabled
+ );
+
+ // and selectively re-enable based on the radiogroup's current value
+ if (enabled) {
+ this.onSelectBridgeOption(this._bridgeSelectionRadiogroup.value);
+ } else {
+ this.onSelectBridgeOption(TorBridgeSource.NONE);
+ }
+ return this;
+ },
+
+ // callback when a bridge option is selected
+ onSelectBridgeOption(source) {
+ // disable all of the bridge elements under radio buttons
+ this._setElementsDisabled(
+ [
+ this._builtinBridgeMenulist,
+ this._requestBridgeButton,
+ this._requestBridgeTextarea,
+ this._provideBridgeTextarea,
+ ],
+ true
+ );
+
+ if (source != TorBridgeSource.NONE) {
+ this._bridgeSelectionRadiogroup.value = source;
+ }
+
+ switch (source) {
+ case TorBridgeSource.BUILTIN: {
+ this._setElementsDisabled([this._builtinBridgeMenulist], false);
+ break;
+ }
+ case TorBridgeSource.BRIDGEDB: {
+ this._setElementsDisabled(
+ [this._requestBridgeButton, this._requestBridgeTextarea],
+ false
+ );
+ break;
+ }
+ case TorBridgeSource.USERPROVIDED: {
+ this._setElementsDisabled([this._provideBridgeTextarea], false);
+ break;
+ }
+ }
+ return this;
+ },
+
+ // called when the request bridge button is activated
+ onRequestBridge() {
+ let requestBridgeDialog = new RequestBridgeDialog();
+ requestBridgeDialog.openDialog(
+ gSubDialog,
+ this._proxySettings.proxyURI,
+ aBridges => {
+ if (aBridges.length > 0) {
+ let bridgeSettings = makeTorBridgeSettingsBridgeDB(aBridges);
+ bridgeSettings.writeSettings();
+ this._bridgeSettings = bridgeSettings;
+
+ this._requestBridgeTextarea.value = bridgeSettings.bridgeStrings;
+ }
+ }
+ );
+ return this;
+ },
+
+ // pushes bridge settings from UI to tor
+ onUpdateBridgeSettings() {
+ let bridgeSettings = null;
+
+ let source = this._useBridgeCheckbox.checked
+ ? this._bridgeSelectionRadiogroup.value
+ : TorBridgeSource.NONE;
+ switch (source) {
+ case TorBridgeSource.NONE: {
+ bridgeSettings = makeTorBridgeSettingsNone();
+ break;
+ }
+ case TorBridgeSource.BUILTIN: {
+ // if there is a built-in bridge already selected, use that
+ let bridgeType = this._builtinBridgeMenulist.value;
+ if (bridgeType) {
+ bridgeSettings = makeTorBridgeSettingsBuiltin(bridgeType);
+ } else {
+ bridgeSettings = makeTorBridgeSettingsNone();
+ }
+ break;
+ }
+ case TorBridgeSource.BRIDGEDB: {
+ // if there are bridgedb bridges saved in the text area, use them
+ let bridgeStrings = this._requestBridgeTextarea.value;
+ if (bridgeStrings) {
+ let bridgeStringList = parseBridgeStrings(bridgeStrings);
+ bridgeSettings = makeTorBridgeSettingsBridgeDB(bridgeStringList);
+ } else {
+ bridgeSettings = makeTorBridgeSettingsNone();
+ }
+ break;
+ }
+ case TorBridgeSource.USERPROVIDED: {
+ // if bridges already exist in the text area, use them
+ let bridgeStrings = this._provideBridgeTextarea.value;
+ if (bridgeStrings) {
+ let bridgeStringList = parseBridgeStrings(bridgeStrings);
+ bridgeSettings = makeTorBridgeSettingsUserProvided(
+ bridgeStringList
+ );
+ } else {
+ bridgeSettings = makeTorBridgeSettingsNone();
+ }
+ break;
+ }
+ }
+ bridgeSettings.writeSettings();
+ this._bridgeSettings = bridgeSettings;
+ return this;
+ },
+
+ // callback when proxy is toggled
+ onToggleProxy(enabled) {
+ this._useProxyCheckbox.checked = enabled;
+ let disabled = !enabled;
+
+ this._setElementsDisabled(
+ [
+ this._proxyTypeLabel,
+ this._proxyTypeMenulist,
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ disabled
+ );
+ this.onSelectProxyType(this._proxyTypeMenulist.value);
+ return this;
+ },
+
+ // callback when proxy type is changed
+ onSelectProxyType(value) {
+ if (value == "") {
+ value = TorProxyType.NONE;
+ }
+ this._proxyTypeMenulist.value = value;
+ switch (value) {
+ case TorProxyType.NONE: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ true
+ ); // DISABLE
+
+ this._proxyAddressTextbox.value = "";
+ this._proxyPortTextbox.value = "";
+ this._proxyUsernameTextbox.value = "";
+ this._proxyPasswordTextbox.value = "";
+ break;
+ }
+ case TorProxyType.SOCKS4: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ ],
+ false
+ ); // ENABLE
+ this._setElementsDisabled(
+ [
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ true
+ ); // DISABLE
+
+ this._proxyUsernameTextbox.value = "";
+ this._proxyPasswordTextbox.value = "";
+ break;
+ }
+ case TorProxyType.SOCKS5:
+ case TorProxyType.HTTPS: {
+ this._setElementsDisabled(
+ [
+ this._proxyAddressLabel,
+ this._proxyAddressTextbox,
+ this._proxyPortLabel,
+ this._proxyPortTextbox,
+ this._proxyUsernameLabel,
+ this._proxyUsernameTextbox,
+ this._proxyPasswordLabel,
+ this._proxyPasswordTextbox,
+ ],
+ false
+ ); // ENABLE
+ break;
+ }
+ }
+ return this;
+ },
+
+ // pushes proxy settings from UI to tor
+ onUpdateProxySettings() {
+ const proxyType = this._useProxyCheckbox.checked
+ ? this._proxyTypeMenulist.value
+ : TorProxyType.NONE;
+ const addressString = this._proxyAddressTextbox.value;
+ const portString = this._proxyPortTextbox.value;
+ const usernameString = this._proxyUsernameTextbox.value;
+ const passwordString = this._proxyPasswordTextbox.value;
+
+ let proxySettings = null;
+
+ switch (proxyType) {
+ case TorProxyType.NONE:
+ proxySettings = makeTorProxySettingsNone();
+ break;
+ case TorProxyType.SOCKS4:
+ proxySettings = makeTorProxySettingsSocks4(
+ addressString,
+ parsePort(portString)
+ );
+ break;
+ case TorProxyType.SOCKS5:
+ proxySettings = makeTorProxySettingsSocks5(
+ addressString,
+ parsePort(portString),
+ usernameString,
+ passwordString
+ );
+ break;
+ case TorProxyType.HTTPS:
+ proxySettings = makeTorProxySettingsHTTPS(
+ addressString,
+ parsePort(portString),
+ usernameString,
+ passwordString
+ );
+ break;
+ }
+
+ proxySettings.writeSettings();
+ this._proxySettings = proxySettings;
+ return this;
+ },
+
+ // callback when firewall proxy is toggled
+ onToggleFirewall(enabled) {
+ this._useFirewallCheckbox.checked = enabled;
+ let disabled = !enabled;
+
+ this._setElementsDisabled(
+ [this._allowedPortsLabel, this._allowedPortsTextbox],
+ disabled
+ );
+
+ return this;
+ },
+
+ // pushes firewall settings from UI to tor
+ onUpdateFirewallSettings() {
+ let portListString = this._useFirewallCheckbox.checked
+ ? this._allowedPortsTextbox.value
+ : "";
+ let firewallSettings = null;
+
+ if (portListString) {
+ firewallSettings = makeTorFirewallSettingsCustom(
+ parsePortList(portListString)
+ );
+ } else {
+ firewallSettings = makeTorFirewallSettingsNone();
+ }
+
+ firewallSettings.writeSettings();
+ this._firewallSettings = firewallSettings;
+ return this;
+ },
+
+ onViewTorLogs() {
+ let torLogDialog = new TorLogDialog();
+ torLogDialog.openDialog(gSubDialog);
+ },
+ };
+ return retval;
+})(); /* gTorPane */
diff --git a/browser/components/torpreferences/content/torPane.xhtml b/browser/components/torpreferences/content/torPane.xhtml
new file mode 100644
index 000000000000..3c966b2b3726
--- /dev/null
+++ b/browser/components/torpreferences/content/torPane.xhtml
@@ -0,0 +1,123 @@
+<!-- Tor panel -->
+
+<script type="application/javascript"
+ src="chrome://browser/content/torpreferences/torPane.js"/>
+<html:template id="template-paneTor">
+<hbox id="torPreferencesCategory"
+ class="subcategory"
+ data-category="paneTor"
+ hidden="true">
+ <html:h1 id="torPreferences-header"/>
+</hbox>
+
+<groupbox data-category="paneTor"
+ hidden="true">
+ <description flex="1">
+ <html:span id="torPreferences-description" class="tail-with-learn-more"/>
+ <label id="torPreferences-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+</groupbox>
+
+<!-- Bridges -->
+<groupbox id="torPreferences-bridges-group"
+ data-category="paneTor"
+ hidden="true">
+ <html:h2 id="torPreferences-bridges-header"/>
+ <description flex="1">
+ <html:span id="torPreferences-bridges-description" class="tail-with-learn-more"/>
+ <label id="torPreferences-bridges-learnMore" class="learnMore text-link" is="text-link"/>
+ </description>
+ <checkbox id="torPreferences-bridges-toggle"/>
+ <radiogroup id="torPreferences-bridges-bridgeSelection">
+ <hbox class="indent">
+ <radio id="torPreferences-bridges-radioBuiltin"/>
+ <spacer flex="1"/>
+ <menulist id="torPreferences-bridges-builtinList" class="torMarginFix">
+ <menupopup/>
+ </menulist>
+ </hbox>
+ <vbox class="indent">
+ <hbox>
+ <radio id="torPreferences-bridges-radioRequestBridge"/>
+ <space flex="1"/>
+ <button id="torPreferences-bridges-buttonRequestBridge" class="torMarginFix"/>
+ </hbox>
+ <html:textarea
+ id="torPreferences-bridges-textareaRequestBridge"
+ class="indent torMarginFix"
+ multiline="true"
+ rows="3"
+ readonly="true"/>
+ </vbox>
+ <hbox class="indent" flex="1">
+ <vbox flex="1">
+ <radio id="torPreferences-bridges-radioProvideBridge"/>
+ <description id="torPreferences-bridges-descriptionProvideBridge" class="indent"/>
+ <html:textarea
+ id="torPreferences-bridges-textareaProvideBridge"
+ class="indent torMarginFix"
+ multiline="true"
+ rows="3"/>
+ </vbox>
+ </hbox>
+ </radiogroup>
+</groupbox>
+
+<!-- Advanced -->
+<groupbox id="torPreferences-advanced-group"
+ data-category="paneTor"
+ hidden="true">
+ <html:h2 id="torPreferences-advanced-header"/>
+ <description flex="1">
+ <html:span id="torPreferences-advanced-description" class="tail-with-learn-more"/>
+ <label id="torPreferences-advanced-learnMore" class="learnMore text-link" is="text-link" style="display:none"/>
+ </description>
+ <box id="torPreferences-advanced-grid">
+ <!-- Local Proxy -->
+ <hbox class="torPreferences-advanced-checkbox-container">
+ <checkbox id="torPreferences-advanced-toggleProxy"/>
+ </hbox>
+ <hbox class="indent" align="center">
+ <label id="torPreferences-localProxy-type"/>
+ </hbox>
+ <hbox align="center">
+ <spacer flex="1"/>
+ <menulist id="torPreferences-localProxy-builtinList" class="torMarginFix">
+ <menupopup/>
+ </menulist>
+ </hbox>
+ <hbox class="indent" align="center">
+ <label id="torPreferences-localProxy-address"/>
+ </hbox>
+ <hbox align="center">
+ <html:input id="torPreferences-localProxy-textboxAddress" type="text" class="torMarginFix"/>
+ <label id="torPreferences-localProxy-port"/>
+ <!-- proxy-port-input class style pulled from preferences.css and used in the vanilla proxy setup menu -->
+ <html:input id="torPreferences-localProxy-textboxPort" class="proxy-port-input torMarginFix" hidespinbuttons="true" type="number" min="0" max="65535" maxlength="5"/>
+ </hbox>
+ <hbox class="indent" align="center">
+ <label id="torPreferences-localProxy-username"/>
+ </hbox>
+ <hbox align="center">
+ <html:input id="torPreferences-localProxy-textboxUsername" type="text" class="torMarginFix"/>
+ <label id="torPreferences-localProxy-password"/>
+ <html:input id="torPreferences-localProxy-textboxPassword" class="torMarginFix" type="password"/>
+ </hbox>
+ <!-- Firewall -->
+ <hbox class="torPreferences-advanced-checkbox-container">
+ <checkbox id="torPreferences-advanced-toggleFirewall"/>
+ </hbox>
+ <hbox class="indent" align="center">
+ <label id="torPreferences-advanced-allowedPorts"/>
+ </hbox>
+ <hbox align="center">
+ <html:input id="torPreferences-advanced-textboxAllowedPorts" type="text" class="torMarginFix" value="80,443"/>
+ </hbox>
+ </box>
+ <hbox id="torPreferences-torDaemon-hbox" align="center">
+ <label id="torPreferences-torLogs"/>
+ <spacer flex="1"/>
+ <button id="torPreferences-buttonTorLogs" class="torMarginFix"/>
+ </hbox>
+</groupbox>
+</html:template>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torPreferences.css b/browser/components/torpreferences/content/torPreferences.css
new file mode 100644
index 000000000000..4dac2c457823
--- /dev/null
+++ b/browser/components/torpreferences/content/torPreferences.css
@@ -0,0 +1,77 @@
+#category-tor > .category-icon {
+ list-style-image: url("chrome://browser/content/torpreferences/torPreferencesIcon.svg");
+}
+
+#torPreferences-advanced-grid {
+ display: grid;
+ grid-template-columns: auto 1fr;
+}
+
+.torPreferences-advanced-checkbox-container {
+ grid-column: 1 / 3;
+}
+
+#torPreferences-localProxy-textboxAddress,
+#torPreferences-localProxy-textboxUsername,
+#torPreferences-localProxy-textboxPassword,
+#torPreferences-advanced-textboxAllowedPorts {
+ -moz-box-flex: 1;
+}
+
+hbox#torPreferences-torDaemon-hbox {
+ margin-top: 20px;
+}
+
+description#torPreferences-requestBridge-description {
+ /*margin-bottom: 1em;*/
+ min-height: 2em;
+}
+
+image#torPreferences-requestBridge-captchaImage {
+ margin: 1em;
+ min-height: 125px;
+}
+
+button#torPreferences-requestBridge-refreshCaptchaButton {
+ min-width: initial;
+}
+
+dialog#torPreferences-requestBridge-dialog > hbox {
+ margin-bottom: 1em;
+}
+
+/*
+ Various elements that really should be lining up don't because they have inconsistent margins
+*/
+.torMarginFix {
+ margin-left : 4px;
+ margin-right : 4px;
+}
+
+/*
+ This hbox is hidden by css here by default so that the
+ xul dialog allocates enough screen space for the error message
+ element, otherwise it gets cut off since dialog's overflow is hidden
+*/
+hbox#torPreferences-requestBridge-incorrectCaptchaHbox {
+ visibility: hidden;
+}
+
+image#torPreferences-requestBridge-errorIcon {
+ list-style-image: url("chrome://browser/skin/warning.svg");
+}
+
+groupbox#torPreferences-bridges-group textarea {
+ white-space: pre;
+ overflow: auto;
+}
+
+textarea#torPreferences-torDialog-textarea {
+ -moz-box-flex: 1;
+ font-family: monospace;
+ font-size: 0.8em;
+ white-space: pre;
+ overflow: auto;
+ /* 10 lines */
+ min-height: 20em;
+}
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torPreferencesIcon.svg b/browser/components/torpreferences/content/torPreferencesIcon.svg
new file mode 100644
index 000000000000..d7895f1107c5
--- /dev/null
+++ b/browser/components/torpreferences/content/torPreferencesIcon.svg
@@ -0,0 +1,5 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <g fill="context-fill" fill-opacity="context-fill-opacity" fill-rule="nonzero">
+ <path d="M12.0246161,21.8174863 L12.0246161,20.3628098 C16.6324777,20.3495038 20.3634751,16.6108555 20.3634751,11.9996673 C20.3634751,7.38881189 16.6324777,3.65016355 12.0246161,3.63685757 L12.0246161,2.18218107 C17.4358264,2.1958197 21.8178189,6.58546322 21.8178189,11.9996673 C21.8178189,17.4142042 17.4358264,21.8041803 12.0246161,21.8174863 L12.0246161,21.8174863 Z M12.0246161,16.7259522 C14.623607,16.7123136 16.7272828,14.6023175 16.7272828,11.9996673 C16.7272828,9.39734991 14.623607,7.28735377 12.0246161,7.27371516 L12.0246161,5.81937131 C15.4272884,5.8326773 18.1819593,8.59400123 18.1819593,11.9996673 C18.1819593,15.4056661 15.4272884,18.1669901 12.0246161,18.1802961 L12.0246161,16.7259522 Z M12.0246161,9.45556355 C13.4187503,9.46886953 14.5454344,10.6022066 14.5454344,11.9996673 C14.5454344,13.3974608 13.4187503,14.5307978 12.0246161,14.5441038 L12.0246161,9.45556355 Z M0,11.9996673 C0,18.6273771 5.37229031,24 12,24 C18.6273771,24 24,18.6273771 24,11.9996673 C24,5.37229031
18.6273771,0 12,0 C5.37229031,0 0,5.37229031 0,11.9996673 Z"/>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/components/torpreferences/content/torProxySettings.jsm b/browser/components/torpreferences/content/torProxySettings.jsm
new file mode 100644
index 000000000000..98bb5e8d5cbf
--- /dev/null
+++ b/browser/components/torpreferences/content/torProxySettings.jsm
@@ -0,0 +1,245 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = [
+ "TorProxyType",
+ "TorProxySettings",
+ "makeTorProxySettingsNone",
+ "makeTorProxySettingsSocks4",
+ "makeTorProxySettingsSocks5",
+ "makeTorProxySettingsHTTPS",
+];
+
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+const { parseAddrPort, parseUsernamePassword } = ChromeUtils.import(
+ "chrome://browser/content/torpreferences/parseFunctions.jsm"
+);
+
+const TorProxyType = {
+ NONE: "NONE",
+ SOCKS4: "SOCKS4",
+ SOCKS5: "SOCKS5",
+ HTTPS: "HTTPS",
+};
+
+class TorProxySettings {
+ constructor() {
+ this._proxyType = TorProxyType.NONE;
+ this._proxyAddress = undefined;
+ this._proxyPort = undefined;
+ this._proxyUsername = undefined;
+ this._proxyPassword = undefined;
+ }
+
+ get type() {
+ return this._proxyType;
+ }
+ get address() {
+ return this._proxyAddress;
+ }
+ get port() {
+ return this._proxyPort;
+ }
+ get username() {
+ return this._proxyUsername;
+ }
+ get password() {
+ return this._proxyPassword;
+ }
+ get proxyURI() {
+ switch (this._proxyType) {
+ case TorProxyType.SOCKS4:
+ return `socks4a://${this._proxyAddress}:${this._proxyPort}`;
+ case TorProxyType.SOCKS5:
+ if (this._proxyUsername) {
+ return `socks5://${this._proxyUsername}:${this._proxyPassword}@${
+ this._proxyAddress
+ }:${this._proxyPort}`;
+ }
+ return `socks5://${this._proxyAddress}:${this._proxyPort}`;
+ case TorProxyType.HTTPS:
+ if (this._proxyUsername) {
+ return `http://${this._proxyUsername}:${this._proxyPassword}@${
+ this._proxyAddress
+ }:${this._proxyPort}`;
+ }
+ return `http://${this._proxyAddress}:${this._proxyPort}`;
+ }
+ return undefined;
+ }
+
+ // attempts to read proxy settings from Tor daemon
+ readSettings() {
+ // SOCKS4
+ {
+ let addressPort = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.socks4Proxy
+ );
+ if (addressPort) {
+ // address+port
+ let [proxyAddress, proxyPort] = parseAddrPort(addressPort);
+
+ this._proxyType = TorProxyType.SOCKS4;
+ this._proxyAddress = proxyAddress;
+ this._proxyPort = proxyPort;
+ this._proxyUsername = "";
+ this._proxyPassword = "";
+
+ return;
+ }
+ }
+
+ // SOCKS5
+ {
+ let addressPort = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.socks5Proxy
+ );
+
+ if (addressPort) {
+ // address+port
+ let [proxyAddress, proxyPort] = parseAddrPort(addressPort);
+ // username
+ let proxyUsername = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.socks5ProxyUsername
+ );
+ // password
+ let proxyPassword = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.socks5ProxyPassword
+ );
+
+ this._proxyType = TorProxyType.SOCKS5;
+ this._proxyAddress = proxyAddress;
+ this._proxyPort = proxyPort;
+ this._proxyUsername = proxyUsername;
+ this._proxyPassword = proxyPassword;
+
+ return;
+ }
+ }
+
+ // HTTP
+ {
+ let addressPort = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.httpsProxy
+ );
+
+ if (addressPort) {
+ // address+port
+ let [proxyAddress, proxyPort] = parseAddrPort(addressPort);
+
+ // username:password
+ let proxyAuthenticator = TorProtocolService.readStringSetting(
+ TorStrings.configKeys.httpsProxyAuthenticator
+ );
+
+ let [proxyUsername, proxyPassword] = ["", ""];
+ if (proxyAuthenticator) {
+ [proxyUsername, proxyPassword] = parseUsernamePassword(
+ proxyAuthenticator
+ );
+ }
+
+ this._proxyType = TorProxyType.HTTPS;
+ this._proxyAddress = proxyAddress;
+ this._proxyPort = proxyPort;
+ this._proxyUsername = proxyUsername;
+ this._proxyPassword = proxyPassword;
+ }
+ }
+ // no proxy settings
+ } /* TorProxySettings::ReadFromTor() */
+
+ // attempts to write proxy settings to Tor daemon
+ // throws on error
+ writeSettings() {
+ let settingsObject = new Map();
+
+ // init proxy related settings to null so Tor daemon resets them
+ settingsObject.set(TorStrings.configKeys.socks4Proxy, null);
+ settingsObject.set(TorStrings.configKeys.socks5Proxy, null);
+ settingsObject.set(TorStrings.configKeys.socks5ProxyUsername, null);
+ settingsObject.set(TorStrings.configKeys.socks5ProxyPassword, null);
+ settingsObject.set(TorStrings.configKeys.httpsProxy, null);
+ settingsObject.set(TorStrings.configKeys.httpsProxyAuthenticator, null);
+
+ switch (this._proxyType) {
+ case TorProxyType.SOCKS4:
+ settingsObject.set(
+ TorStrings.configKeys.socks4Proxy,
+ `${this._proxyAddress}:${this._proxyPort}`
+ );
+ break;
+ case TorProxyType.SOCKS5:
+ settingsObject.set(
+ TorStrings.configKeys.socks5Proxy,
+ `${this._proxyAddress}:${this._proxyPort}`
+ );
+ settingsObject.set(
+ TorStrings.configKeys.socks5ProxyUsername,
+ this._proxyUsername
+ );
+ settingsObject.set(
+ TorStrings.configKeys.socks5ProxyPassword,
+ this._proxyPassword
+ );
+ break;
+ case TorProxyType.HTTPS:
+ settingsObject.set(
+ TorStrings.configKeys.httpsProxy,
+ `${this._proxyAddress}:${this._proxyPort}`
+ );
+ settingsObject.set(
+ TorStrings.configKeys.httpsProxyAuthenticator,
+ `${this._proxyUsername}:${this._proxyPassword}`
+ );
+ break;
+ }
+
+ TorProtocolService.writeSettings(settingsObject);
+ } /* TorProxySettings::WriteToTor() */
+}
+
+// factory methods for our various supported proxies
+function makeTorProxySettingsNone() {
+ return new TorProxySettings();
+}
+
+function makeTorProxySettingsSocks4(aProxyAddress, aProxyPort) {
+ let retval = new TorProxySettings();
+ retval._proxyType = TorProxyType.SOCKS4;
+ retval._proxyAddress = aProxyAddress;
+ retval._proxyPort = aProxyPort;
+ return retval;
+}
+
+function makeTorProxySettingsSocks5(
+ aProxyAddress,
+ aProxyPort,
+ aProxyUsername,
+ aProxyPassword
+) {
+ let retval = new TorProxySettings();
+ retval._proxyType = TorProxyType.SOCKS5;
+ retval._proxyAddress = aProxyAddress;
+ retval._proxyPort = aProxyPort;
+ retval._proxyUsername = aProxyUsername;
+ retval._proxyPassword = aProxyPassword;
+ return retval;
+}
+
+function makeTorProxySettingsHTTPS(
+ aProxyAddress,
+ aProxyPort,
+ aProxyUsername,
+ aProxyPassword
+) {
+ let retval = new TorProxySettings();
+ retval._proxyType = TorProxyType.HTTPS;
+ retval._proxyAddress = aProxyAddress;
+ retval._proxyPort = aProxyPort;
+ retval._proxyUsername = aProxyUsername;
+ retval._proxyPassword = aProxyPassword;
+ return retval;
+}
diff --git a/browser/components/torpreferences/jar.mn b/browser/components/torpreferences/jar.mn
new file mode 100644
index 000000000000..857bc9ee3eac
--- /dev/null
+++ b/browser/components/torpreferences/jar.mn
@@ -0,0 +1,14 @@
+browser.jar:
+ content/browser/torpreferences/parseFunctions.jsm (content/parseFunctions.jsm)
+ content/browser/torpreferences/requestBridgeDialog.xhtml (content/requestBridgeDialog.xhtml)
+ content/browser/torpreferences/requestBridgeDialog.jsm (content/requestBridgeDialog.jsm)
+ content/browser/torpreferences/torBridgeSettings.jsm (content/torBridgeSettings.jsm)
+ content/browser/torpreferences/torCategory.inc.xhtml (content/torCategory.inc.xhtml)
+ content/browser/torpreferences/torFirewallSettings.jsm (content/torFirewallSettings.jsm)
+ content/browser/torpreferences/torLogDialog.jsm (content/torLogDialog.jsm)
+ content/browser/torpreferences/torLogDialog.xhtml (content/torLogDialog.xhtml)
+ content/browser/torpreferences/torPane.js (content/torPane.js)
+ content/browser/torpreferences/torPane.xhtml (content/torPane.xhtml)
+ content/browser/torpreferences/torPreferences.css (content/torPreferences.css)
+ content/browser/torpreferences/torPreferencesIcon.svg (content/torPreferencesIcon.svg)
+ content/browser/torpreferences/torProxySettings.jsm (content/torProxySettings.jsm)
diff --git a/browser/components/torpreferences/moz.build b/browser/components/torpreferences/moz.build
new file mode 100644
index 000000000000..7e103239c8d6
--- /dev/null
+++ b/browser/components/torpreferences/moz.build
@@ -0,0 +1 @@
+JAR_MANIFESTS += ['jar.mn']
diff --git a/browser/modules/BridgeDB.jsm b/browser/modules/BridgeDB.jsm
new file mode 100644
index 000000000000..2caa26b4e2e0
--- /dev/null
+++ b/browser/modules/BridgeDB.jsm
@@ -0,0 +1,110 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["BridgeDB"];
+
+const { TorLauncherBridgeDB } = ChromeUtils.import(
+ "resource://torlauncher/modules/tl-bridgedb.jsm"
+);
+const { TorProtocolService } = ChromeUtils.import(
+ "resource:///modules/TorProtocolService.jsm"
+);
+const { TorStrings } = ChromeUtils.import("resource:///modules/TorStrings.jsm");
+
+var BridgeDB = {
+ _moatRequestor: null,
+ _currentCaptchaInfo: null,
+ _bridges: null,
+
+ get currentCaptchaImage() {
+ if (this._currentCaptchaInfo) {
+ return this._currentCaptchaInfo.captchaImage;
+ }
+ return null;
+ },
+
+ get currentBridges() {
+ return this._bridges;
+ },
+
+ submitCaptchaGuess(aCaptchaSolution) {
+ if (this._moatRequestor && this._currentCaptchaInfo) {
+ return this._moatRequestor
+ .finishFetch(
+ this._currentCaptchaInfo.transport,
+ this._currentCaptchaInfo.challenge,
+ aCaptchaSolution
+ )
+ .then(aBridgeInfo => {
+ this._moatRequestor.close();
+ this._moatRequestor = null;
+ this._currentCaptchaInfo = null;
+ this._bridges = aBridgeInfo.bridges;
+ // array of bridge strings
+ return this._bridges;
+ });
+ }
+
+ return new Promise((aResponse, aReject) => {
+ aReject(new Error("Invalid _moatRequestor or _currentCaptchaInfo"));
+ });
+ },
+
+ requestNewCaptchaImage(aProxyURI) {
+ // close and clear out existing state on captcha request
+ this.close();
+
+ let transportPlugins = TorProtocolService.readStringArraySetting(
+ TorStrings.configKeys.clientTransportPlugin
+ );
+
+ let meekClientPath;
+ let meekTransport; // We support both "meek" and "meek_lite".
+ let meekClientArgs;
+ // TODO: shouldn't this early out once meek settings are found?
+ for (const line of transportPlugins) {
+ // Parse each ClientTransportPlugin line and look for the meek or
+ // meek_lite transport. This code works a lot like the Tor daemon's
+ // parse_transport_line() function.
+ let tokens = line.split(" ");
+ if (tokens.length > 2 && tokens[1] == "exec") {
+ let transportArray = tokens[0].split(",").map(aStr => aStr.trim());
+ let transport = transportArray.find(
+ aTransport => aTransport === "meek"
+ );
+ if (!transport) {
+ transport = transportArray.find(
+ aTransport => aTransport === "meek_lite"
+ );
+ }
+ if (transport) {
+ meekTransport = transport;
+ meekClientPath = tokens[2];
+ meekClientArgs = tokens.slice(3);
+ }
+ }
+ }
+
+ this._moatRequestor = TorLauncherBridgeDB.createMoatRequestor();
+
+ return this._moatRequestor
+ .init(aProxyURI, meekTransport, meekClientPath, meekClientArgs)
+ .then(() => {
+ // TODO: get this from TorLauncherUtil
+ let bridgeType = "obfs4";
+ return this._moatRequestor.fetchBridges([bridgeType]);
+ })
+ .then(aCaptchaInfo => {
+ // cache off the current captcha info as the challenge is needed for response
+ this._currentCaptchaInfo = aCaptchaInfo;
+ return aCaptchaInfo.captchaImage;
+ });
+ },
+
+ close() {
+ if (this._moatRequestor) {
+ this._moatRequestor.close();
+ this._moatRequestor = null;
+ }
+ this._currentCaptchaInfo = null;
+ },
+};
diff --git a/browser/modules/TorProtocolService.jsm b/browser/modules/TorProtocolService.jsm
new file mode 100644
index 000000000000..b4e6ed9a3253
--- /dev/null
+++ b/browser/modules/TorProtocolService.jsm
@@ -0,0 +1,212 @@
+"use strict";
+
+var EXPORTED_SYMBOLS = ["TorProtocolService"];
+
+const { TorLauncherUtil } = ChromeUtils.import(
+ "resource://torlauncher/modules/tl-util.jsm"
+);
+
+var TorProtocolService = {
+ _tlps: Cc["@torproject.org/torlauncher-protocol-service;1"].getService(
+ Ci.nsISupports
+ ).wrappedJSObject,
+
+ // maintain a map of tor settings set by Tor Browser so that we don't
+ // repeatedly set the same key/values over and over
+ // this map contains string keys to primitive or array values
+ _settingsCache: new Map(),
+
+ _typeof(aValue) {
+ switch (typeof aValue) {
+ case "boolean":
+ return "boolean";
+ case "string":
+ return "string";
+ case "object":
+ if (aValue == null) {
+ return "null";
+ } else if (Array.isArray(aValue)) {
+ return "array";
+ }
+ return "object";
+ }
+ return "unknown";
+ },
+
+ _assertValidSettingKey(aSetting) {
+ // ensure the 'key' is a string
+ if (typeof aSetting != "string") {
+ throw new Error(
+ `Expected setting of type string but received ${typeof aSetting}`
+ );
+ }
+ },
+
+ _assertValidSetting(aSetting, aValue) {
+ this._assertValidSettingKey(aSetting);
+
+ const valueType = this._typeof(aValue);
+ switch (valueType) {
+ case "boolean":
+ case "string":
+ case "null":
+ return;
+ case "array":
+ for (const element of aValue) {
+ if (typeof element != "string") {
+ throw new Error(
+ `Setting '${aSetting}' array contains value of invalid type '${typeof element}'`
+ );
+ }
+ }
+ return;
+ default:
+ throw new Error(
+ `Invalid object type received for setting '${aSetting}'`
+ );
+ }
+ },
+
+ // takes a Map containing tor settings
+ // throws on error
+ writeSettings(aSettingsObj) {
+ // only write settings that have changed
+ let newSettings = new Map();
+ for (const [setting, value] of aSettingsObj) {
+ let saveSetting = false;
+
+ // make sure we have valid data here
+ this._assertValidSetting(setting, value);
+
+ if (!this._settingsCache.has(setting)) {
+ // no cached setting, so write
+ saveSetting = true;
+ } else {
+ const cachedValue = this._settingsCache.get(setting);
+ if (value != cachedValue) {
+ // compare arrays member-wise
+ if (Array.isArray(value) && Array.isArray(cachedValue)) {
+ if (value.length != cachedValue.length) {
+ saveSetting = true;
+ } else {
+ const arrayLength = value.length;
+ for (let i = 0; i < arrayLength; ++i) {
+ if (value[i] != cachedValue[i]) {
+ saveSetting = true;
+ break;
+ }
+ }
+ }
+ } else {
+ // some other different values
+ saveSetting = true;
+ }
+ }
+ }
+
+ if (saveSetting) {
+ newSettings.set(setting, value);
+ }
+ }
+
+ // only write if new setting to save
+ if (newSettings.size > 0) {
+ // convert settingsObject map to js object for torlauncher-protocol-service
+ let settingsObject = {};
+ for (const [setting, value] of newSettings) {
+ settingsObject[setting] = value;
+ }
+
+ let errorObject = {};
+ if (!this._tlps.TorSetConfWithReply(settingsObject, errorObject)) {
+ throw new Error(errorObject.details);
+ }
+
+ // save settings to cache after successfully writing to Tor
+ for (const [setting, value] of newSettings) {
+ this._settingsCache.set(setting, value);
+ }
+ }
+ },
+
+ _readSetting(aSetting) {
+ this._assertValidSettingKey(aSetting);
+ let reply = this._tlps.TorGetConf(aSetting);
+ if (this._tlps.TorCommandSucceeded(reply)) {
+ return reply.lineArray;
+ }
+ throw new Error(reply.lineArray.join("\n"));
+ },
+
+ _readBoolSetting(aSetting) {
+ let lineArray = this._readSetting(aSetting);
+ if (lineArray.length != 1) {
+ throw new Error(
+ `Expected an array with length 1 but received array of length ${
+ lineArray.length
+ }`
+ );
+ }
+
+ let retval = lineArray[0];
+ switch (retval) {
+ case "0":
+ return false;
+ case "1":
+ return true;
+ default:
+ throw new Error(`Expected boolean (1 or 0) but received '${retval}'`);
+ }
+ },
+
+ _readStringSetting(aSetting) {
+ let lineArray = this._readSetting(aSetting);
+ if (lineArray.length != 1) {
+ throw new Error(
+ `Expected an array with length 1 but received array of length ${
+ lineArray.length
+ }`
+ );
+ }
+ return lineArray[0];
+ },
+
+ _readStringArraySetting(aSetting) {
+ let lineArray = this._readSetting(aSetting);
+ return lineArray;
+ },
+
+ readBoolSetting(aSetting) {
+ let value = this._readBoolSetting(aSetting);
+ this._settingsCache.set(aSetting, value);
+ return value;
+ },
+
+ readStringSetting(aSetting) {
+ let value = this._readStringSetting(aSetting);
+ this._settingsCache.set(aSetting, value);
+ return value;
+ },
+
+ readStringArraySetting(aSetting) {
+ let value = this._readStringArraySetting(aSetting);
+ this._settingsCache.set(aSetting, value);
+ return value;
+ },
+
+ // writes current tor settings to disk
+ flushSettings() {
+ this._tlps.TorSendCommand("SAVECONF");
+ },
+
+ getLog() {
+ let countObj = { value: 0 };
+ let torLog = this._tlps.TorGetLog(countObj);
+ return torLog;
+ },
+
+ // true if we launched and control tor, false if using system tor
+ get ownsTorDaemon() {
+ return TorLauncherUtil.shouldStartAndOwnTor;
+ },
+};
diff --git a/browser/modules/moz.build b/browser/modules/moz.build
index 61fe5371e48f..5fb78d1c07a8 100644
--- a/browser/modules/moz.build
+++ b/browser/modules/moz.build
@@ -128,6 +128,7 @@ EXTRA_JS_MODULES += [
'AboutNewTab.jsm',
'AppUpdater.jsm',
'AsyncTabSwitcher.jsm',
+ 'BridgeDB.jsm',
'BrowserUsageTelemetry.jsm',
'BrowserWindowTracker.jsm',
'ContentCrashHandlers.jsm',
@@ -154,6 +155,7 @@ EXTRA_JS_MODULES += [
'TabUnloader.jsm',
'ThemeVariableMap.jsm',
'TopSiteAttribution.jsm',
+ 'TorProtocolService.jsm',
'TorStrings.jsm',
'TransientPrefs.jsm',
'webrtcUI.jsm',
1
0

[tor-browser/tor-browser-78.1.0esr-10.0-1] Bug 26961: New user onboarding.
by gk@torproject.org 07 Aug '20
by gk@torproject.org 07 Aug '20
07 Aug '20
commit 0847734e24272f92a130508090eb068274a0ae60
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Aug 8 11:34:40 2018 -0400
Bug 26961: New user onboarding.
Reuse the Firefox onboarding mechanism with minimal changes.
Localizable strings are pulled in from Torbutton (if Torbutton is
not installed, we lack about:tor and no tour will be shown).
Replace SVG images with PNGs (see bug 27002),
For defense in depth, omit include OnboardingTelemetry.jsm entirely.
Added support for the following UITour page event:
torBrowserOpenSecuritySettings
Also fix bug 27403: the onboarding bubble is not always displayed.
Arthur suggested to make the onboarding bubble visible on displays with
less than 960px width available, so we choose 200px instead.
Also fix bug 28628: Change onboarding Security panel to open new
Security Level panel.
Also fix bug 27484: Improve navigation within onboarding.
Bug 27082: enable a limited UITour
Disallow access to UITour functionality from all pages other than
about:home, about:newtab, and about:tor.
Implement a whitelist mechanism for page actions.
Bug 26962 - implement new features onboarding (part 1).
Add an "Explore" button to the "Circuit Display" panel within new user
onboarding which opens the DuckDuckGo .onion and then guides users through
a short circuit display tutorial.
Allow a few additional UITour actions while limiting as much as possible
how it can be used.
Tweak the UITour styles to match the Tor Browser branding.
All user interface strings are retrieved from Torbutton's
browserOnboarding.properties file.
Bug 27486 Avoid about:blank tabs when opening onboarding pages.
Instead of using a simple <a href>, programmatically open onboarding
web pages by using tabBrowser.addTab(). The same technique is now
used for "See My Path", "See FAQs", and "Visit an Onion".
Bug 29768: Introduce new features to users
Add an "update" tour for the Tor Browser 8.5 release that contains two
panels: Toolbar and Security (with appropriate description text and
images).
Display an attention-grabbing dot on the onboarding text bubble when
the update tour is active. The animation lasts for 14 seconds.
Bug 31768: Introduce toolbar and network settings changes in onboarding
Update the "Tor Network" onboarding page to include a note that
settings can now be accessed via the application preferences and
add an "Adjust Your Tor Network Settings" action button which opens
about:preferences#tor.
Replace the Tor Browser 8.5 "update" onboarding tour with a 9.0 one
that includes the revised "Tor Network" page and a revised "Toolbar"
page. The latter explains that Torbutton's toolbar item has been
removed ("Goodbye Onion Button") and explains how to access the
New Identity feature using the hamburger menu and new toolbar item.
Bug 34321 - Add Learn More onboarding item
---
browser/app/permissions | 13 +-
browser/app/profile/000-tor-browser.js | 6 +
browser/components/uitour/UITour-lib.js | 7 +
browser/components/uitour/UITour.jsm | 78 ++-
browser/components/uitour/UITourChild.jsm | 33 +-
browser/extensions/onboarding/api.js | 43 +-
.../extensions/onboarding/content/Onboarding.jsm | 387 +++++++++++-
.../extensions/onboarding/content/img/close.png | Bin 0 -> 798 bytes
.../onboarding/content/img/figure_addons.svg | 1 -
.../onboarding/content/img/figure_customize.svg | 561 -----------------
.../onboarding/content/img/figure_default.svg | 1 -
.../onboarding/content/img/figure_library.svg | 689 ---------------------
.../onboarding/content/img/figure_performance.svg | 1 -
.../onboarding/content/img/figure_private.svg | 1 -
.../onboarding/content/img/figure_screenshots.svg | 191 ------
.../onboarding/content/img/figure_singlesearch.svg | 1 -
.../onboarding/content/img/figure_sync.svg | 1 -
.../content/img/figure_tor-circuit-display.png | Bin 0 -> 26334 bytes
.../content/img/figure_tor-expect-differences.png | Bin 0 -> 22290 bytes
.../onboarding/content/img/figure_tor-network.png | Bin 0 -> 11982 bytes
.../content/img/figure_tor-onion-services.png | Bin 0 -> 40968 bytes
.../onboarding/content/img/figure_tor-privacy.png | Bin 0 -> 35527 bytes
.../content/img/figure_tor-security-level.png | Bin 0 -> 11263 bytes
.../onboarding/content/img/figure_tor-security.png | Bin 0 -> 24554 bytes
.../content/img/figure_tor-toolbar-layout.png | Bin 0 -> 13269 bytes
.../onboarding/content/img/figure_tor-welcome.png | Bin 0 -> 48405 bytes
.../onboarding/content/img/icons_addons.svg | 1 -
.../onboarding/content/img/icons_customize.svg | 1 -
.../onboarding/content/img/icons_default.svg | 1 -
.../onboarding/content/img/icons_library.svg | 1 -
.../onboarding/content/img/icons_no-icon.png | Bin 0 -> 673 bytes
.../onboarding/content/img/icons_performance.svg | 1 -
.../onboarding/content/img/icons_private.svg | 1 -
.../onboarding/content/img/icons_screenshots.svg | 1 -
.../onboarding/content/img/icons_singlesearch.svg | 1 -
.../onboarding/content/img/icons_sync.svg | 1 -
.../onboarding/content/img/icons_tour-complete.png | Bin 0 -> 694 bytes
.../onboarding/content/img/icons_tour-complete.svg | 4 +-
.../onboarding/content/img/watermark.svg | 1 -
.../content/onboarding-tor-circuit-display.js | 283 +++++++++
.../onboarding/content/onboarding-tour-agent.js | 13 +
.../extensions/onboarding/content/onboarding.css | 150 ++++-
.../extensions/onboarding/content/onboarding.js | 3 +-
browser/extensions/onboarding/jar.mn | 9 +-
browser/themes/shared/UITour.inc.css | 28 +-
intl/strres/nsStringBundle.cpp | 1 +
46 files changed, 935 insertions(+), 1580 deletions(-)
diff --git a/browser/app/permissions b/browser/app/permissions
index 3ff3d84bc4dc..06d71cd6e88c 100644
--- a/browser/app/permissions
+++ b/browser/app/permissions
@@ -7,13 +7,9 @@
# See PermissionManager.cpp for more...
# UITour
-# Bug 1557153: www.mozilla.org gets a special workaround in UITourChild.jsm
-origin uitour 1 https://www.mozilla.org
-origin uitour 1 https://monitor.firefox.com
-origin uitour 1 https://screenshots.firefox.com
-origin uitour 1 https://support.mozilla.org
-origin uitour 1 about:home
-origin uitour 1 about:newtab
+# DuckDuckGo .onion (used for circuit display onboarding).
+origin uitour 1 https://3g2upl4pq6kufc4m.onion
+origin uitour 1 about:tor
# XPInstall
origin install 1 https://addons.mozilla.org
@@ -21,6 +17,3 @@ origin install 1 https://addons.mozilla.org
# Remote troubleshooting
origin remote-troubleshooting 1 https://support.mozilla.org
-# addon install
-origin install 1 https://private-network.firefox.com
-origin install 1 https://fpn.firefox.com
diff --git a/browser/app/profile/000-tor-browser.js b/browser/app/profile/000-tor-browser.js
index aec44b1f933b..e86252ccd98c 100644
--- a/browser/app/profile/000-tor-browser.js
+++ b/browser/app/profile/000-tor-browser.js
@@ -306,6 +306,12 @@ pref("browser.download.panel.shown", true);
// Treat .onions as secure
pref("dom.securecontext.whitelist_onions", true);
+// Onboarding.
+pref("browser.onboarding.tourset-version", 5);
+pref("browser.onboarding.newtour", "welcome,privacy,tor-network-9.0,circuit-display,security,expect-differences,onion-services,learn-more");
+pref("browser.onboarding.updatetour", "learn-more");
+pref("browser.onboarding.skip-tour-button.hide", true);
+
// prefs to disable jump-list entries in the taskbar on Windows (see bug #12885)
#ifdef XP_WIN
// this pref changes the app's set AUMID to be dependent on the profile path, rather than
diff --git a/browser/components/uitour/UITour-lib.js b/browser/components/uitour/UITour-lib.js
index c7ca285429b5..f68b2285fd90 100644
--- a/browser/components/uitour/UITour-lib.js
+++ b/browser/components/uitour/UITour-lib.js
@@ -805,6 +805,13 @@ if (typeof Mozilla == "undefined") {
Mozilla.UITour.closeTab = function() {
_sendEvent("closeTab");
};
+
+ /**
+ * @summary Opens the Security Level Panel.
+ */
+ Mozilla.UITour.torBrowserOpenSecurityLevelPanel = function() {
+ _sendEvent("torBrowserOpenSecurityLevelPanel");
+ };
})();
// Make this library Require-able.
diff --git a/browser/components/uitour/UITour.jsm b/browser/components/uitour/UITour.jsm
index 2e0a178bf425..c3ab6d9b2b56 100644
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -68,6 +68,28 @@ ChromeUtils.defineModuleGetter(
// See LOG_LEVELS in Console.jsm. Common examples: "All", "Info", "Warn", & "Error".
const PREF_LOG_LEVEL = "browser.uitour.loglevel";
+const TOR_BROWSER_PAGE_ACTIONS_ALLOWED = new Set([
+ "showInfo", // restricted to TOR_BROWSER_TARGETS_ALLOWED
+ "showMenu", // restricted to TOR_BROWSER_MENUS_ALLOWED
+ "hideMenu", // restricted to TOR_BROWSER_MENUS_ALLOWED
+ "showHighlight", // restricted to TOR_BROWSER_TARGETS_ALLOWED
+ "hideHighlight", // restricted to TOR_BROWSER_TARGETS_ALLOWED
+ "openPreferences",
+ "closeTab",
+ "torBrowserOpenSecurityLevelPanel",
+]);
+
+const TOR_BROWSER_TARGETS_ALLOWED = new Set([
+ "torBrowser-newIdentityButton",
+ "torBrowser-circuitDisplay",
+ "torBrowser-circuitDisplay-diagram",
+ "torBrowser-circuitDisplay-newCircuitButton",
+]);
+
+const TOR_BROWSER_MENUS_ALLOWED = new Set([
+ "controlCenter",
+]);
+
const BACKGROUND_PAGE_ACTIONS_ALLOWED = new Set([
"forceShowReaderIcon",
"getConfiguration",
@@ -111,6 +133,17 @@ var UITour = {
highlightEffects: ["random", "wobble", "zoom", "color"],
targets: new Map([
+ ["torBrowser-circuitDisplay", {
+ query: "#identity-icon",
+ }],
+ ["torBrowser-circuitDisplay-diagram",
+ torBrowserCircuitDisplayTarget("circuit-display-nodes")],
+ ["torBrowser-circuitDisplay-newCircuitButton",
+ torBrowserCircuitDisplayTarget("circuit-reload-button")],
+ ["torBrowser-newIdentityButton", {
+ query: "#new-identity-button",
+ }],
+
[
"accountStatus",
{
@@ -361,6 +394,11 @@ var UITour = {
return false;
}
+ if (!TOR_BROWSER_PAGE_ACTIONS_ALLOWED.has(action)) {
+ log.warn("Ignoring disallowed action:", action);
+ return false;
+ }
+
switch (action) {
case "registerPageID": {
break;
@@ -695,6 +733,14 @@ var UITour = {
this.showProtectionReport(window, browser);
break;
}
+
+ case "torBrowserOpenSecurityLevelPanel": {
+ let securityLevelButton =
+ window.document.getElementById("security-level-button");
+ if (securityLevelButton)
+ securityLevelButton.click();
+ break;
+ }
}
// For performance reasons, only call initForBrowser if we did something
@@ -918,10 +964,7 @@ var UITour = {
// This function is copied to UITourListener.
isSafeScheme(aURI) {
- let allowedSchemes = new Set(["https", "about"]);
- if (!Services.prefs.getBoolPref("browser.uitour.requireSecure")) {
- allowedSchemes.add("http");
- }
+ let allowedSchemes = new Set(["about", "https"]);
if (!allowedSchemes.has(aURI.scheme)) {
log.error("Unsafe scheme:", aURI.scheme);
@@ -970,7 +1013,10 @@ var UITour = {
return Promise.reject("Invalid target name specified");
}
- let targetObject = this.targets.get(aTargetName);
+ let targetObject;
+ if (TOR_BROWSER_TARGETS_ALLOWED.has(aTargetName)) {
+ targetObject = this.targets.get(aTargetName);
+ }
if (!targetObject) {
log.warn(
"getTarget: The specified target name is not in the allowed set"
@@ -1476,6 +1522,10 @@ var UITour = {
},
showMenu(aWindow, aMenuName, aOpenCallback = null, aOptions = {}) {
+ if (!TOR_BROWSER_MENUS_ALLOWED.has(aMenuName)) {
+ return;
+ }
+
log.debug("showMenu:", aMenuName);
function openMenuButton(aMenuBtn) {
if (!aMenuBtn || !aMenuBtn.hasMenu() || aMenuBtn.open) {
@@ -1579,6 +1629,10 @@ var UITour = {
},
hideMenu(aWindow, aMenuName) {
+ if (!TOR_BROWSER_MENUS_ALLOWED.has(aMenuName)) {
+ return;
+ }
+
log.debug("hideMenu:", aMenuName);
function closeMenuButton(aMenuBtn) {
if (aMenuBtn && aMenuBtn.hasMenu()) {
@@ -2122,6 +2176,20 @@ var UITour = {
},
};
+function torBrowserCircuitDisplayTarget(aElemID) {
+ return {
+ infoPanelPosition: "rightcenter topleft",
+ query(aDocument) {
+ let popup = aDocument.defaultView.gIdentityHandler._identityPopup;
+ if (popup.state != "open") {
+ return null;
+ }
+ let element = aDocument.getElementById(aElemID);
+ return UITour.isElementVisible(element) ? element : null;
+ },
+ };
+}
+
UITour.init();
/**
diff --git a/browser/components/uitour/UITourChild.jsm b/browser/components/uitour/UITourChild.jsm
index e2e763c8f4c1..02caae849de8 100644
--- a/browser/components/uitour/UITourChild.jsm
+++ b/browser/components/uitour/UITourChild.jsm
@@ -25,36 +25,9 @@ class UITourChild extends JSWindowActorChild {
});
}
- isTestingOrigin(aURI) {
- if (
- Services.prefs.getPrefType(PREF_TEST_WHITELIST) !=
- Services.prefs.PREF_STRING
- ) {
- return false;
- }
-
- // Add any testing origins (comma-seperated) to the whitelist for the session.
- for (let origin of Services.prefs
- .getCharPref(PREF_TEST_WHITELIST)
- .split(",")) {
- try {
- let testingURI = Services.io.newURI(origin);
- if (aURI.prePath == testingURI.prePath) {
- return true;
- }
- } catch (ex) {
- Cu.reportError(ex);
- }
- }
- return false;
- }
-
// This function is copied from UITour.jsm.
isSafeScheme(aURI) {
- let allowedSchemes = new Set(["https", "about"]);
- if (!Services.prefs.getBoolPref("browser.uitour.requireSecure")) {
- allowedSchemes.add("http");
- }
+ let allowedSchemes = new Set(["about", "https"]);
if (!allowedSchemes.has(aURI.scheme)) {
return false;
@@ -90,9 +63,7 @@ class UITourChild extends JSWindowActorChild {
return true;
}
- // Bug 1557153: To allow Skyline messaging, workaround for UNKNOWN_ACTION
- // overriding browser/app/permissions default
- return uri.host == "www.mozilla.org" || this.isTestingOrigin(uri);
+ return false;
}
receiveMessage(aMessage) {
diff --git a/browser/extensions/onboarding/api.js b/browser/extensions/onboarding/api.js
index c40800577976..d7dffaaaac19 100644
--- a/browser/extensions/onboarding/api.js
+++ b/browser/extensions/onboarding/api.js
@@ -8,7 +8,6 @@
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyModuleGetters(this, {
OnboardingTourType: "resource://onboarding/modules/OnboardingTourType.jsm",
- OnboardingTelemetry: "resource://onboarding/modules/OnboardingTelemetry.jsm",
Services: "resource://gre/modules/Services.jsm",
UIState: "resource://services-sync/UIState.jsm",
});
@@ -21,7 +20,11 @@ const RESOURCE_HOST = "onboarding";
const {PREF_STRING, PREF_BOOL, PREF_INT} = Ci.nsIPrefBranch;
-const BROWSER_READY_NOTIFICATION = "browser-delayed-startup-finished";
+// In Tor Browser we initialize onboarding upon "final-ui-startup" instead
+// of waiting for "browser-delayed-startup-finished"; otherwise, on first
+// run the onboarding frame script's "onload" listener is installed too
+// late to detect that about:tor is loaded.
+const BROWSER_READY_NOTIFICATION = "final-ui-startup";
const BROWSER_SESSION_STORE_NOTIFICATION = "sessionstore-windows-restored";
const PREF_WHITELIST = [
["browser.onboarding.enabled", PREF_BOOL],
@@ -33,6 +36,19 @@ const PREF_WHITELIST = [
];
[
+ // Tor Browser tours:
+ "onboarding-tour-tor-welcome",
+ "onboarding-tour-tor-privacy",
+ "onboarding-tour-tor-network-9-0",
+ "onboarding-tour-tor-circuit-display",
+ "onboarding-tour-tor-security",
+ "onboarding-tour-tor-expect-differences",
+ "onboarding-tour-tor-onion-services",
+ "onboarding-tour-tor-toolbar-update-9-0",
+ "onboarding-tour-tor-learn-more",
+#if 0
+// Firefox tours. To reduce conflicts when rebasing against newer Firefox
+// code, we use the preprocessor to omit this code block.
"onboarding-tour-addons",
"onboarding-tour-customize",
"onboarding-tour-default-browser",
@@ -42,6 +58,7 @@ const PREF_WHITELIST = [
"onboarding-tour-screenshots",
"onboarding-tour-singlesearch",
"onboarding-tour-sync",
+#endif
].forEach(tourId => PREF_WHITELIST.push([`browser.onboarding.tour.${tourId}.completed`, PREF_BOOL]));
let waitingForBrowserReady = true;
@@ -82,6 +99,21 @@ function setPrefs(prefs) {
});
}
+function openTorTab(aURL, aFrameScript) {
+ let win = Services.wm.getMostRecentWindow('navigator:browser');
+ if (win) {
+ let tabBrowser = win.gBrowser;
+ let triggeringPrincipal = Services.scriptSecurityManager.createNullPrincipal({});
+ let tab = tabBrowser.addTab(aURL, { triggeringPrincipal });
+ tabBrowser.selectedTab = tab;
+
+ if (aFrameScript) {
+ let b = tabBrowser.getBrowserForTab(tab);
+ b.messageManager.loadFrameScript(aFrameScript, true);
+ }
+ }
+}
+
/**
* syncTourChecker listens to and maintains the login status inside, and can be
* queried at any time once initialized.
@@ -155,6 +187,11 @@ function initContentMessageListener() {
isLoggedIn: syncTourChecker.isLoggedIn(),
});
break;
+ case "tor-open-tab":
+ openTorTab(msg.data.params.url, msg.data.params.frameScriptURL);
+ break;
+#if 0
+// No telemetry in Tor Browser.
case "ping-centre":
try {
OnboardingTelemetry.process(msg.data.params.data);
@@ -162,6 +199,7 @@ function initContentMessageListener() {
Cu.reportError(e);
}
break;
+#endif
}
});
}
@@ -173,7 +211,6 @@ function onBrowserReady() {
waitingForBrowserReady = false;
OnboardingTourType.check();
- OnboardingTelemetry.init(startupData);
Services.mm.loadFrameScript("resource://onboarding/onboarding.js", true, true);
initContentMessageListener();
}
diff --git a/browser/extensions/onboarding/content/Onboarding.jsm b/browser/extensions/onboarding/content/Onboarding.jsm
index de95a66632ab..b411a3039a3e 100644
--- a/browser/extensions/onboarding/content/Onboarding.jsm
+++ b/browser/extensions/onboarding/content/Onboarding.jsm
@@ -11,7 +11,10 @@ var EXPORTED_SYMBOLS = ["Onboarding"];
const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const ONBOARDING_CSS_URL = "resource://onboarding/onboarding.css";
-const BUNDLE_URI = "chrome://onboarding/locale/onboarding.properties";
+const TORBUTTON_BUNDLE_URI = "chrome://torbutton/locale/browserOnboarding.properties";
+const TORBROWSER_WELCOME_TOUR_NAME_KEY = "onboarding.tour-tor-welcome";
+const BUNDLE_URI = "chrome://torbutton/locale/onboarding.properties";
+const BROWSER_BUNDLE_URI = "chrome://browser/locale/browser.properties";
const UITOUR_JS_URI = "resource://onboarding/lib/UITour-lib.js";
const TOUR_AGENT_JS_URI = "resource://onboarding/onboarding-tour-agent.js";
const BRAND_SHORT_NAME = Services.strings
@@ -20,8 +23,8 @@ const BRAND_SHORT_NAME = Services.strings
const PROMPT_COUNT_PREF = "browser.onboarding.notification.prompt-count";
const NOTIFICATION_FINISHED_PREF = "browser.onboarding.notification.finished";
const ONBOARDING_DIALOG_ID = "onboarding-overlay-dialog";
-const ONBOARDING_MIN_WIDTH_PX = 960;
-const SPEECH_BUBBLE_MIN_WIDTH_PX = 1365;
+const ONBOARDING_MIN_WIDTH_PX = 200;
+const SPEECH_BUBBLE_MIN_WIDTH_PX = 200;
const SPEECH_BUBBLE_NEWTOUR_STRING_ID = "onboarding.overlay-icon-tooltip2";
const SPEECH_BUBBLE_UPDATETOUR_STRING_ID = "onboarding.overlay-icon-tooltip-updated2";
const ICON_STATE_WATERMARK = "watermark";
@@ -82,6 +85,194 @@ function createOnboardingTourButton(div, buttonId, l10nId, buttonElementTagName
return aside;
}
+// Tor Browser tours:
+var onboardingTourset = {
+ // Tour items for new users:
+ "welcome": {
+ id: "onboarding-tour-tor-welcome",
+ tourNameId: TORBROWSER_WELCOME_TOUR_NAME_KEY,
+ instantComplete: true,
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-tor-welcome.title", "onboarding.tour-tor-welcome.description");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-welcome.png");
+ createOnboardingTourButton(div,
+ "onboarding-tour-tor-welcome-button", "onboarding.tour-tor-welcome.next-button");
+
+ return div;
+ },
+ },
+ "privacy": {
+ id: "onboarding-tour-tor-privacy",
+ tourNameId: "onboarding.tour-tor-privacy",
+ instantComplete: true,
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-tor-privacy.title", "onboarding.tour-tor-privacy.description");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-privacy.png");
+ createOnboardingTourButton(div,
+ "onboarding-tour-tor-privacy-button", "onboarding.tour-tor-privacy.button");
+
+ return div;
+ },
+ },
+ // In Tor Browser 9.0, we replaced the Tor Network panel with an updated one.
+ "tor-network-9.0": {
+ id: "onboarding-tour-tor-network-9-0",
+ tourNameId: "onboarding.tour-tor-network",
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ let desc = createOnboardingTourDescription(div,
+ "onboarding.tour-tor-network.title", "onboarding.tour-tor-network.description");
+ let additionalDesc = win.document.createElement("p");
+ additionalDesc.className = "onboarding-tour-description-para2";
+ additionalDesc.setAttribute("data-l10n-id",
+ "onboarding.tour-tor-network.description-para2");
+ desc.appendChild(additionalDesc);
+
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-network.png");
+ let btnContainer = createOnboardingTourButton(div,
+ "onboarding-tour-tor-network-action-button", "onboarding.tour-tor-network.action-button");
+ btnContainer.className = "onboarding-tour-tor-action-button-container";
+
+ // The next button (right side) is a "Done" button if we are displaying
+ // the tour to users who updated their browser; otherwise, it is a
+ // button that takes the user to the next onboarding page.
+ let nextBtnID, nextBtnL10nID;
+ if (this._tourType === "update") {
+ // Using the onion services IDs here seems like a mistake, but it
+ // provides the functionality and translated string ("Done") we need.
+ nextBtnID = "onboarding-tour-tor-onion-services-next-button";
+ nextBtnL10nID = "onboarding.tour-tor-onion-services.next-button";
+ } else {
+ nextBtnID = "onboarding-tour-tor-network-button";
+ nextBtnL10nID = "onboarding.tour-tor-network.button";
+ }
+ createOnboardingTourButton(div, nextBtnID, nextBtnL10nID);
+ return div;
+ },
+ },
+ "circuit-display": {
+ id: "onboarding-tour-tor-circuit-display",
+ tourNameId: "onboarding.tour-tor-circuit-display",
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-tor-circuit-display.title", "onboarding.tour-tor-circuit-display.description");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-circuit-display.png");
+ let btnContainer = createOnboardingTourButton(div,
+ "onboarding-tour-tor-circuit-display-button", "onboarding.tour-tor-circuit-display.button");
+ btnContainer.className = "onboarding-tour-tor-action-button-container";
+ createOnboardingTourButton(div,
+ "onboarding-tour-tor-circuit-display-next-button", "onboarding.tour-tor-circuit-display.next-button");
+
+ return div;
+ },
+ },
+ "security": {
+ id: "onboarding-tour-tor-security",
+ tourNameId: "onboarding.tour-tor-security",
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ let desc = createOnboardingTourDescription(div,
+ "onboarding.tour-tor-security.title", "onboarding.tour-tor-security.description");
+ let additionalDesc = win.document.createElement("p");
+ additionalDesc.className = "onboarding-tour-description-suffix";
+ additionalDesc.setAttribute("data-l10n-id",
+ "onboarding.tour-tor-security.description-suffix");
+ desc.appendChild(additionalDesc);
+
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-security.png");
+ let btnContainer = createOnboardingTourButton(div,
+ "onboarding-tour-tor-security-button", "onboarding.tour-tor-security-level.button");
+ btnContainer.className = "onboarding-tour-tor-action-button-container";
+ createOnboardingTourButton(div,
+ "onboarding-tour-tor-security-next-button", "onboarding.tour-tor-security-level.next-button");
+
+ return div;
+ },
+ },
+ "expect-differences": {
+ id: "onboarding-tour-tor-expect-differences",
+ tourNameId: "onboarding.tour-tor-expect-differences",
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-tor-expect-differences.title", "onboarding.tour-tor-expect-differences.description");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-expect-differences.png");
+ let btnContainer = createOnboardingTourButton(div,
+ "onboarding-tour-tor-expect-differences-button", "onboarding.tour-tor-expect-differences.button");
+ btnContainer.className = "onboarding-tour-tor-action-button-container";
+ createOnboardingTourButton(div,
+ "onboarding-tour-tor-expect-differences-next-button", "onboarding.tour-tor-expect-differences.next-button");
+
+ return div;
+ },
+ },
+ "onion-services": {
+ id: "onboarding-tour-tor-onion-services",
+ tourNameId: "onboarding.tour-tor-onion-services",
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-tor-onion-services.title", "onboarding.tour-tor-onion-services.description");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-onion-services.png");
+ let btnContainer = createOnboardingTourButton(div,
+ "onboarding-tour-tor-onion-services-button", "onboarding.tour-tor-onion-services.button");
+ btnContainer.className = "onboarding-tour-tor-action-button-container";
+ createOnboardingTourButton(div,
+ "onboarding-tour-tor-onion-services-next-button", "onboarding.tour-tor-onion-services.next-button");
+
+ return div;
+ },
+ },
+ "learn-more": {
+ id: "onboarding-tour-tor-learn-more",
+ // Re-use "Learn More" string from Firefox langpacks
+ tourNameId: "getUserMedia.shareScreen.learnMoreLabel",
+ highlightId: "onboarding.tour-tor-update.prefix-new",
+ getPage(win) {
+ return win.document.createElement("div");
+ },
+ },
+ // Tour items for users who have updated their Tor Browser:
+ "toolbar-update-9.0": {
+ id: "onboarding-tour-tor-toolbar-update-9-0",
+ tourNameId: "onboarding.tour-tor-toolbar",
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ let desc = createOnboardingTourDescription(div,
+ "onboarding.tour-tor-toolbar-update-9.0.title", "onboarding.tour-tor-toolbar-update-9.0.description");
+ let additionalDesc = win.document.createElement("p");
+ additionalDesc.className = "onboarding-tour-description-para2";
+ additionalDesc.setAttribute("data-l10n-id",
+ "onboarding.tour-tor-toolbar-update-9.0.description-para2");
+ desc.appendChild(additionalDesc);
+
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_tor-toolbar-layout.png");
+ let btnContainer = createOnboardingTourButton(div,
+ "onboarding-tour-tor-toolbar-update-9-0-button", "onboarding.tour-tor-toolbar-update-9.0.button");
+ btnContainer.className = "onboarding-tour-tor-action-button-container";
+ createOnboardingTourButton(div,
+ "onboarding-tour-tor-toolbar-next-button", "onboarding.tour-tor-toolbar-update-9.0.next-button");
+
+ return div;
+ },
+ },
+};
+#if 0
+// Firefox tours. To reduce conflicts when rebasing against newer Firefox
+// code, we use the preprocessor to omit this code block.
/**
* Add any number of tours, key is the tourId, value should follow the format below
* "tourId": { // The short tour id which could be saved in pref
@@ -415,6 +606,7 @@ var onboardingTourset = {
},
},
};
+#endif
/**
* The script won't be initialized if we turned off onboarding by
@@ -473,7 +665,10 @@ class Onboarding {
// We want to create and append elements after CSS is loaded so
// no flash of style changes and no additional reflow.
await this._loadCSS();
- this._bundle = Services.strings.createBundle(BUNDLE_URI);
+ this._bundle = new _TorOnboardingStringBundle();
+ if (!this._bundle.inited) {
+ return;
+ }
this._loadJS(UITOUR_JS_URI);
@@ -515,7 +710,11 @@ class Onboarding {
}
_resizeUI() {
- this._windowWidth = this._window.document.body.getBoundingClientRect().width;
+ // In Tor Browser we check against innerWidth instead of against the
+ // body's bounding rect because about:tor keeps its body hidden until
+ // the Tor status is known, and the bounding rect is zero while the
+ // body is hidden.
+ this._windowWidth = this._window.innerWidth;
if (this._windowWidth < ONBOARDING_MIN_WIDTH_PX) {
// Don't show the overlay UI before we get to a better, responsive design.
this.destroy();
@@ -523,11 +722,18 @@ class Onboarding {
}
this._initUI();
- if (this._isFirstSession && this._windowWidth >= SPEECH_BUBBLE_MIN_WIDTH_PX) {
+ // For Tor Browser, show the "Let's get started" speech bubble until each
+ // tour item has been completed.
+ let isTourComplete = (ICON_STATE_WATERMARK ==
+ Services.prefs.getStringPref("browser.onboarding.state",
+ ICON_STATE_DEFAULT));
+ if ((!isTourComplete || this._isFirstSession) &&
+ this._windowWidth >= SPEECH_BUBBLE_MIN_WIDTH_PX) {
this._overlayIcon.classList.add("onboarding-speech-bubble");
} else {
this._overlayIcon.classList.remove("onboarding-speech-bubble");
}
+ this.updateAttentionDot();
}
_initUI() {
@@ -542,7 +748,10 @@ class Onboarding {
this._overlayIcon = this._renderOverlayButton();
this._overlayIcon.addEventListener("click", this);
this._overlayIcon.addEventListener("keypress", this);
- body.insertBefore(this._overlayIcon, body.firstChild);
+ let buttonContainer = this._window.document.createElement("div");
+ buttonContainer.id = "onboarding-overlay-button-container";
+ buttonContainer.appendChild(this._overlayIcon);
+ body.insertBefore(buttonContainer, body.firstChild);
this._overlay = this._renderOverlay();
this._overlay.addEventListener("click", this);
@@ -556,7 +765,8 @@ class Onboarding {
this._onIconStateChange(Services.prefs.getStringPref("browser.onboarding.state", ICON_STATE_DEFAULT));
// Doing tour notification takes some effort. Let's do it on idle.
- this._window.requestIdleCallback(() => this.showNotification());
+// For now, onboarding notifications are disabled in Tor Browser.
+// this._window.requestIdleCallback(() => this.showNotification());
}
_getTourIDList() {
@@ -698,19 +908,30 @@ class Onboarding {
({ id, classList } = target.firstChild);
}
+ const kOnionURL = "https://3g2upl4pq6kufc4m.onion/"; // DuckDuckGo
+ const kLearnMore = "https://www.torproject.org/releases/tor-browser-95/";
+ let handledTourActionClick = false;
switch (id) {
case "onboarding-overlay-button-icon":
case "onboarding-overlay-button":
- this.telemetry({
- type: "onboarding-logo-click",
- bubble_state: this._bubbleState,
- logo_state: this._logoState,
- notification_state: this._notificationState,
- session_key: this._session_key,
- width: this._windowWidthRounded,
- });
- this.showOverlay();
- this.gotoPage(this._firstUncompleteTour.id);
+ // If this instance upgraded, then directly open the release notes
+ // when the bubble is clicked.
+ if (this._tourType === "update") {
+ this.sendMessageToChrome("tor-open-tab", {url: kLearnMore});
+ // Mark item as complete
+ this.setToursCompleted(["onboarding-tour-tor-learn-more"]);
+ } else {
+ this.telemetry({
+ type: "onboarding-logo-click",
+ bubble_state: this._bubbleState,
+ logo_state: this._logoState,
+ notification_state: this._notificationState,
+ session_key: this._session_key,
+ width: this._windowWidthRounded,
+ });
+ this.showOverlay();
+ this.gotoPage(this._firstUncompleteTour.id);
+ }
break;
case "onboarding-skip-tour-button":
this.hideNotification();
@@ -767,6 +988,36 @@ class Onboarding {
this.gotoPage(tourId);
this._removeTourFromNotificationQueue(tourId);
break;
+ case "onboarding-tour-tor-welcome-button":
+ case "onboarding-tour-tor-privacy-button":
+ case "onboarding-tour-tor-network-button":
+ case "onboarding-tour-tor-circuit-display-next-button":
+ case "onboarding-tour-tor-security-next-button":
+ case "onboarding-tour-tor-expect-differences-next-button":
+ case "onboarding-tour-tor-toolbar-next-button":
+ this.gotoNextTourItem();
+ handledTourActionClick = true;
+ break;
+ case "onboarding-tour-tor-circuit-display-button":
+ let kFrameScript = "resource://onboarding/onboarding-tor-circuit-display.js";
+ this.sendMessageToChrome("tor-open-tab",
+ {url: kOnionURL, frameScriptURL: kFrameScript});
+ break;
+ case "onboarding-tour-tor-expect-differences-button":
+ const kFAQURL = "https://support.torproject.org/#faq";
+ this.sendMessageToChrome("tor-open-tab", {url: kFAQURL});
+ break;
+ case "onboarding-tour-tor-onion-services-button":
+ this.sendMessageToChrome("tor-open-tab", {url: kOnionURL});
+ break;
+ // Open the Release Notes webpage and hide the overlay.
+ case "onboarding-tour-tor-onion-services-next-button":
+ case "onboarding-tour-tor-learn-more":
+ this.sendMessageToChrome("tor-open-tab", {url: kLearnMore});
+ this.hideOverlay();
+ // Mark item as complete
+ this.setToursCompleted(["onboarding-tour-tor-learn-more"]);
+ break;
}
if (classList.contains("onboarding-tour-item")) {
this.telemetry({
@@ -780,7 +1031,8 @@ class Onboarding {
// Keep focus (not visible) on current item for potential keyboard
// navigation.
target.focus();
- } else if (classList.contains("onboarding-tour-action-button")) {
+ } else if (!handledTourActionClick &&
+ classList.contains("onboarding-tour-action-button")) {
let activeTourId = this._activeTourId;
this.setToursCompleted([ activeTourId ]);
this.telemetry({
@@ -793,6 +1045,21 @@ class Onboarding {
}
}
+ gotoNextTourItem() {
+ let activeTourID = this._activeTourId;
+ if (activeTourID) {
+ let idx = this._tourItems.findIndex(item => (item.id === activeTourID));
+ if (idx >= 0) {
+ // If at the end of the list, close onboarding; otherwise, go to next.
+ if (++idx >= this._tourItems.length) {
+ this.hideOverlay();
+ } else {
+ this.gotoPage(this._tourItems[idx].id);
+ }
+ }
+ }
+ }
+
/**
* Wrap keyboard focus within the dialog.
* When moving forward, focus on the first element when the current focused
@@ -950,7 +1217,9 @@ class Onboarding {
this._overlayIcon.dispatchEvent(new this._window.CustomEvent("Agent:Destroy"));
this._clearPrefObserver();
+ let buttonContainer = this._overlayIcon.parentElement;
this._overlayIcon.remove();
+ buttonContainer.remove();
if (this._overlay) {
// send overlay-session telemetry
this.hideOverlay();
@@ -974,9 +1243,21 @@ class Onboarding {
this._overlayIcon.classList.add("onboarding-watermark");
break;
}
+ this.updateAttentionDot();
return true;
}
+ // Display an attention-grabbing dot on the speech bubble if the
+ // bubble is visible and we are showing the "update" tour.
+ updateAttentionDot() {
+ let buttonContainer = this._overlayIcon.parentElement;
+ if ((this._bubbleState === "bubble") && (this._tourType === "update")) {
+ buttonContainer.classList.add("onboarding-overlay-attention-dot");
+ } else {
+ buttonContainer.classList.remove("onboarding-overlay-attention-dot");
+ }
+ }
+
showOverlay() {
if (this._tourItems.length == 0) {
// Lazy loading until first toggle.
@@ -1237,6 +1518,7 @@ class Onboarding {
// After the notification mute on the 1st session,
// we don't want to show the speech bubble by default
this._overlayIcon.classList.remove("onboarding-speech-bubble");
+ this.updateAttentionDot();
let queue = this._getNotificationQueue();
let totalMaxTime = Services.prefs.getIntPref("browser.onboarding.notification.max-life-time-all-tours-ms");
@@ -1422,7 +1704,8 @@ class Onboarding {
let header = this._window.document.createElement("header");
header.id = "onboarding-header";
- header.textContent = this._bundle.GetStringFromName("onboarding.overlay-title2");
+// In Tor Browser, we do not want header text.
+// header.textContent = this._bundle.GetStringFromName("onboarding.overlay-title2");
this._dialog.appendChild(header);
let nav = this._window.document.createElement("nav");
@@ -1491,7 +1774,7 @@ class Onboarding {
watermarkImg.id = "onboarding-overlay-button-watermark-icon";
watermarkImg.setAttribute("role", "presentation");
watermarkImg.src = Services.prefs.getStringPref("browser.onboarding.watermark-icon-src",
- "resource://onboarding/img/watermark.svg");
+ "resource://onboarding/img/tor-watermark.png");
button.appendChild(watermarkImg);
return button;
}
@@ -1522,7 +1805,17 @@ class Onboarding {
let tourPanelId = `${tour.id}-page`;
tab.setAttribute("aria-controls", tourPanelId);
+ if (tour.highlightId) {
+ // Add [New] or [Updated] text after this navigation item to draw
+ // attention to it.
+ let highlight = this._window.document.createElement("span");
+ highlight.className = "onboarding-tour-description-highlight";
+ highlight.textContent = this._bundle.GetStringFromName(tour.highlightId);
+ tab.appendChild(highlight);
+ }
+
li.appendChild(tab);
+
itemsFrag.appendChild(li);
// Dynamically create tour pages
let div = tour.getPage.call(this, this._window, this._bundle);
@@ -1579,3 +1872,55 @@ class Onboarding {
doc.head.appendChild(script);
}
}
+
+// _TorOnboardingStringBundle implements the subset of the nsIStringBundle
+// that is used by the code in this file. It checks first for strings inside
+// Torbutton's browserOnboarding.properties file and secondarily in Firefox's
+// onboarding.properties file. Finally, it looks for the string within
+// browser.properties.
+class _TorOnboardingStringBundle {
+ constructor() {
+ this._mBrowserBundle = Services.strings.createBundle(BROWSER_BUNDLE_URI);
+ this._mFirefoxBundle = Services.strings.createBundle(BUNDLE_URI);
+ this._mTorButtonBundle = Services.strings.createBundle(TORBUTTON_BUNDLE_URI);
+
+ // If the Tor Browser onboarding strings which ship inside Torbutton are
+ // not available, fail initialization so that no tours are shown.
+ try {
+ let result = this._mTorButtonBundle.GetStringFromName(
+ TORBROWSER_WELCOME_TOUR_NAME_KEY);
+ this.inited = true;
+ } catch (e) {}
+ }
+
+ GetStringFromName(aName) {
+ let result;
+ try {
+ result = this._mTorButtonBundle.GetStringFromName(aName);
+ } catch (e) {
+ try {
+ result = this._mFirefoxBundle.GetStringFromName(aName);
+ } catch (e) {
+ result = this._mBrowserBundle.GetStringFromName(aName);
+ }
+ }
+ return result;
+ }
+
+ formatStringFromName(aName, aParams, aLength) {
+ let result;
+ try {
+ result = this._mTorButtonBundle.formatStringFromName(aName, aParams,
+ aLength);
+ } catch (e) {
+ try {
+ result = this._mFirefoxBundle.formatStringFromName(aName, aParams,
+ aLength);
+ } catch (e) {
+ result = this._mBrowserBundle.formatStringFromName(aName, aParams,
+ aLength);
+ }
+ }
+ return result;
+ }
+}
diff --git a/browser/extensions/onboarding/content/img/close.png b/browser/extensions/onboarding/content/img/close.png
new file mode 100644
index 000000000000..8a637de879ec
Binary files /dev/null and b/browser/extensions/onboarding/content/img/close.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_addons.svg b/browser/extensions/onboarding/content/img/figure_addons.svg
deleted file mode 100644
index b5f056737f11..000000000000
--- a/browser/extensions/onboarding/content/img/figure_addons.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="295" height="199" viewBox="0 0 295 199" xmlns="http://www.w3.org/2000/svg"><title>addons</title><defs><linearGradient x1="-3335.765%" y1="-2236.632%" x2="5558.543%" y2="3780.103%" id="a"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-251.09%" y1="-799.657%" x2="413.095%" y2="1054.368%" id="b"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-573.525%" y1="-521.071%" x2="763.527%" y2="703.894%" id="c"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-2190.515%" y1="-1349.885%" x2="1528.924%" y2="974.764%" id="d"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1533.42%" y1="-541.311%" x2="2119.6%" y2="822.483%" id="e"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="1
00%"/></linearGradient><linearGradient x1="-16561.05%" y1="-16565.77%" x2="3895.86%" y2="3891.14%" id="f"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-204.8%" y1="-96.752%" x2="205.158%" y2="122.743%" id="g"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-112.715%" y1="-148.497%" x2="122.964%" y2="186.313%" id="h"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-817.408%" y1="-862.654%" x2="1335.951%" y2="1471.194%" id="i"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-923.374%" y1="-755.994%" x2="781.368%" y2="664.624%" id="j"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-57.385%" y1="-74.839%" x2="205.558%" y2="247.317%" i
d="k"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-136.437%" y1="-251.542%" x2="257.723%" y2="370.248%" id="l"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-3134.668%" y1="-1436.328%" x2="4644.893%" y2="2194.132%" id="m"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-3763.993%" y1="-1729.31%" x2="4015.564%" y2="1901.152%" id="n"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-967.977%" y1="-2316.493%" x2="1244.002%" y2="2869.881%" id="o"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-828.528%" y1="-1974.736%" x2="1398.399%" y2="3211.636%" id="p"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100
%"/></linearGradient><linearGradient x1="-341.455%" y1="-545.157%" x2="204.062%" y2="280.185%" id="q"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-6989.704%" y1="-10987.987%" x2="1723.404%" y2="2626.238%" id="r"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-346.468%" y1="-491.716%" x2="205.755%" y2="249.195%" id="s"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-163.142%" y1="-212.577%" x2="367.782%" y2="441.559%" id="t"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-431.069%" y1="-1508.892%" x2="196.676%" y2="489.527%" id="u"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-46.826%" y1="-91.711%" x2="115.212%" y2="164.256%
" id="v"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-469.407%" y1="-1536.217%" x2="369.344%" y2="1016.816%" id="w"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1395.389%" y1="-1859.067%" x2="1629.996%" y2="2107.556%" id="x"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2132.529%" y1="-2452.139%" x2="1054.189%" y2="1199.521%" id="y"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1425.341%" y1="-2206.746%" x2="1446.3%" y2="2189.629%" id="z"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1606.851%" y1="-1906.042%" x2="1515.309%" y2="1780.906%" id="A"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offse
t="100%"/></linearGradient><linearGradient x1="-2952.119%" y1="-1785.48%" x2="1577.955%" y2="986.112%" id="B"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1774.73%" y1="-1132.379%" x2="2586.424%" y2="1691.85%" id="C"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2922.831%" y1="-2221.905%" x2="1969.085%" y2="1525.629%" id="D"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2790%" y1="-1744.265%" x2="1698.406%" y2="1091.887%" id="E"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2160.459%" y1="-2153.729%" x2="1208.199%" y2="1206.393%" id="F"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2197.557%" y1="-2601.613%" x2="936.46
2%" y2="1097.31%" id="G"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2154.892%" y1="-3309.827%" x2="719.541%" y2="1068.777%" id="H"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-548.887%" y1="-964.209%" x2="654.188%" y2="1081.481%" id="I"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-318.202%" y1="-291.169%" x2="636.625%" y2="583.64%" id="J"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-455.827%" y1="-310.105%" x2="637.3%" y2="482.798%" id="K"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-5771.947%" y1="-7842.936%" x2="4994.847%" y2="6769.143%" id="L"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF"
offset="100%"/></linearGradient><linearGradient x1="-4086.052%" y1="-5400.884%" x2="4096.712%" y2="5365.911%" id="M"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1126.574%" y1="-1260.202%" x2="1146.414%" y2="1265.342%" id="N"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1150.53%" y1="-1333.596%" x2="1122.46%" y2="1289.085%" id="O"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-3947.183%" y1="-5480.943%" x2="3106.924%" y2="4260.443%" id="P"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-3712.853%" y1="-2757.137%" x2="2679.931%" y2="2000.284%" id="Q"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1265.89%" y1="-1395.587%"
x2="1007.1%" y2="1099.159%" id="R"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-2822.135%" y1="-2883.724%" x2="1935.286%" y2="1986.969%" id="S"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1548.018%" y1="-2218.877%" x2="1374.022%" y2="1940.124%" id="T"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1369.976%" y1="-1928.433%" x2="1334.398%" y2="1827.217%" id="U"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2000.906%" y1="-2495.611%" x2="1322.352%" y2="1633.822%" id="V"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1470.604%" y1="-2072.202%" x2="1136.662%" y2="1558.26%" id="W"><stop stop-color="#00C8D7" offset="0%"/><st
op stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1194.36%" y1="-1336.72%" x2="901.341%" y2="996.106%" id="X"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-3044.038%" y1="-2935.975%" x2="2075.73%" y2="2014.652%" id="Y"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1070.957%" y1="-1207.499%" x2="1021.673%" y2="1139.289%" id="Z"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-668.331%" y1="-735.951%" x2="792.876%" y2="862.245%" id="aa"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-757.712%" y1="-833.503%" x2="703.496%" y2="764.693%" id="ab"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-27.011%" y1
="-65.863%" x2="141.75%" y2="151.803%" id="ac"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1321.337%" y1="-997.486%" x2="1168.46%" y2="905.137%" id="ad"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1178.308%" y1="-888.422%" x2="1311.49%" y2="1014.201%" id="ae"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-546.976%" y1="-767.016%" x2="189.173%" y2="248.435%" id="af"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-93.493%" y1="-91.832%" x2="384.41%" y2="447.193%" id="ag"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-258.202%" y1="-134.734%" x2="952.458%" y2="591.721%" id="ah"><stop stop-color="#00C8D7" offset="0%"/><stop
stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-764.248%" y1="-327.902%" x2="2650.413%" y2="1243.88%" id="ai"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-341.63%" y1="-267.69%" x2="726.152%" y2="596.706%" id="aj"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-517.979%" y1="-536.225%" x2="166.434%" y2="167.425%" id="ak"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-792.149%" y1="-462.294%" x2="98.549%" y2="87.052%" id="al"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-964.554%" y1="-879.35%" x2="1659.876%" y2="1524.226%" id="am"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-797.538%" y1="-665.
814%" x2="581.403%" y2="509.871%" id="an"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1165.123%" y1="-1561.869%" x2="356.021%" y2="461.04%" id="ao"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-505.775%" y1="-623.411%" x2="1092.421%" y2="1325.92%" id="ap"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-365.189%" y1="-194.484%" x2="727.939%" y2="447.534%" id="aq"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-2359.875%" y1="-1563.43%" x2="1606.616%" y2="1099.129%" id="ar"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-31-68h352v303H-31z"/><g fill-rule="nonzero"><g fill="#D7D7DB"><path d="M23
8.3 15.6c-5.5 0-8.3-1.5-11-3-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3s-8.3-1.5-11-3c-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1 4.9 0 7.4-1.3 9.9-2.7 2.7-1.5 5.5-3 11-3s8.3 1.5 11 3c2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3s8.3 1.5 11 3c2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3 .6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1-4.9 0-7.4 1.3-9.9 2.7-2.7 1.5-5.5 3-11 3zM196.2 7.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 1.2 0 2.2-.1 3.2-.3.3-.1.6.2.6.5.1.3-.2.6-.5.6-1 .3-2.1.4-3.3.4zm7.6-1.6c-.2 0-.4-.1-.5-.3-.1-.3 0-.6.3-.7.3-.2.7-.3 1-.5.3-.1.6 0 .7.2.1.3 0 .6-.2.7-.3.2-.7.3-1 .5-.2.1-.2.1-.3.1zm-16.3-.1c-.1 0-.2 0-.2-.1-.8-.4-1.5-.7-2.2-1.1-2.6-1.4-5.1-2.8-10.2-2.8-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 5.4 0 8.1 1.5 10.7 2.9.7.4 1.4.7 2.1 1.1.3.1.4.5.3.7-.1.4-.3.5-.5.5zm26.6-3.8c-.3 0-.5-.2-.6-.5 0-.3.2-.6.5-.6.8-.1 1.7-.1 2.7-.1.3 0 .6.2.6.6 0 .3-.2.6-.6.6-.9-.2-1.7-.1-2.6 0 .1 0 0 0 0 0zM238.5 23.1c-.3
0-.6-.2-.6-.6 0-.3.2-.6.6-.6 1.2 0 2.2-.1 3.2-.3.3-.1.6.2.6.5.1.3-.2.6-.5.6-1 .3-2.1.4-3.3.4zm7.6-1.5c-.2 0-.4-.1-.5-.3-.1-.3 0-.6.3-.7.3-.2.7-.3 1-.5.3-.1.6 0 .7.2.1.3 0 .6-.2.7-.3.2-.7.3-1 .5-.2 0-.3.1-.3.1zm-16.3-.2c-.1 0-.2 0-.2-.1-.8-.4-1.5-.7-2.2-1.1-2.6-1.4-5.1-2.8-10.2-2.8-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 5.4 0 8.1 1.5 10.7 2.9.7.4 1.4.7 2.1 1.1.3.1.4.5.3.7-.1.4-.3.5-.5.5zm26.6-3.8c-.3 0-.5-.2-.6-.5 0-.3.2-.6.5-.6.8-.1 1.7-.1 2.6-.1.3 0 .6.2.6.6 0 .3-.2.6-.6.6-.8-.1-1.6-.1-2.5 0z"/></g><path d="M6.2 133.5c-2.8 0-5.1-2.2-5.1-4.8V10.2c0-3 2.4-5.4 5.4-5.4h127.2c3 0 5.4 2.4 5.4 5.4v118.5c0 2.6-2.3 4.8-5 4.8H6.2z" fill="#FFF"/><path d="M133.7 6c2.3 0 4.2 1.9 4.2 4.2v118.5c0 2-1.8 3.7-3.9 3.7H6.2c-2.2 0-3.9-1.7-3.9-3.7V10.2C2.3 7.9 4.2 6 6.5 6h127.2zm0-2.2H6.6C3 3.8.1 6.7.1 10.3v118.4c0 3.3 2.8 5.9 6.2 5.9H134c3.4 0 6.2-2.7 6.2-5.9V10.2c0-3.5-2.9-6.4-6.5-6.4z" fill="#D7D7DB"/><path d="M132.6 27.1v98.2c0 1-.1 1.2-.1 1.2s-.2.1-1.2.1H9.1c-1 0-1.2-.1-1.2-.1s-.1-.2-.1-1.2V27.1h124.8zm1.
1-1.1H6.6v99.3c0 2 .4 2.5 2.5 2.5h122.2c2 0 2.5-.4 2.5-2.5V26h-.1z" fill="#D7D7DB"/><g fill="#D7D7DB"><circle cx="3.4" cy="2.9" r="2.9" transform="translate(10 13)"/><circle cx="3.7" cy="2.9" r="2.9" transform="translate(19 13)"/><path d="M102.1 19.2H38.2c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1h63.9c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1z"/><g><circle cx="3.6" cy="2.9" r="2.9" transform="translate(114 13)"/><circle cx="2.9" cy="2.9" r="2.9" transform="translate(124 13)"/></g></g><ellipse fill="#EDEDF0" cx="177.8" cy="191.1" rx="78.4" ry="7.4"/><g fill="#D7D7DB"><path d="M241.5 164.9c-5.5 0-8.3-1.5-11-3-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3s-8.3-1.5-11-3c-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3s-8.3-1.5-11-3c-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3s-8.3-1.5-11-3c-2.6-1.4-5-2.7-9.9-2.7-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1 5.5 0 8.3 1.5 11 3 2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3s8.3 1.5 11
3c2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3s8.3 1.5 11 3c2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3s8.3 1.5 11 3c2.6 1.4 5 2.7 9.9 2.7.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1zM200.5 155.8c-.8 0-1.5 0-2.3-.1-.3 0-.5-.3-.5-.6s.3-.5.6-.5c.7.1 1.4.1 2.2.1h1.1c.3 0 .6.2.6.5s-.2.6-.5.6h-1.2zm-41.4 0c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 1.2 0 2.2-.1 3.2-.3.3-.1.6.2.6.5.1.3-.2.6-.5.6-1 .3-2.1.4-3.3.4zm46.9-.7c-.2 0-.5-.2-.5-.4-.1-.3.1-.6.4-.7.4-.1.7-.2 1-.3.3-.1.6.1.7.3.1.3-.1.6-.3.7-.4.1-.7.2-1.1.3-.1.1-.2.1-.2.1zm-39.3-.9c-.2 0-.4-.1-.5-.3-.1-.3 0-.6.3-.7.3-.2.7-.3 1-.5.3-.1.6 0 .7.2.1.3 0 .6-.2.7-.3.2-.7.3-1 .5-.2.1-.3.1-.3.1zm-16.3-.1c-.1 0-.2 0-.2-.1-.8-.4-1.5-.7-2.2-1.1-2.6-1.4-5.1-2.8-10.2-2.8-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 5.4 0 8.1 1.5 10.7 2.9.7.4 1.4.7 2.1 1.1.3.1.4.5.3.7-.1.3-.3.5-.5.5zm39.5-1.2c-.1 0-.2 0-.3-.1-2.4-1.3-4.9-2.7-10-2.7-.9 0-1.7 0-2.5.1-.3 0-.6-.2-.6-.5s.2-.6.5-.6c.8-.1 1.7-.1 2.7-.1 5.4 0 8.1 1.5 10.5 2.8.3.1.4.5.2.8-.1.1-.3.3-.5.3zm26.3-2
.2c-.2 0-.5-.2-.5-.4-.1-.3.1-.6.4-.7 1.6-.4 3.3-.6 5.3-.6.3 0 .6.2.6.6 0 .3-.2.6-.6.6-1.9 0-3.5.2-5 .6-.1-.1-.2-.1-.2-.1z"/></g><g fill="#D7D7DB"><path d="M76.9 101c-.8 0-2.2-.1-3.6-.7-1.8-.8-2.7-2.2-2.7-4.1 0-1.6.9-2.6 1.8-3.5 1-1 1.9-2 1.9-3.8 0-1.5-2.1-3.7-5.8-3.7-3.8 0-5.5 2.2-5.5 3.7 0 1.8.9 2.8 1.9 3.8.9.9 1.9 1.9 1.9 3.5 0 3.5-3.2 4.8-6.2 4.8H47.8c-2.4 0-4.3-2-4.3-4.4V84.9c0-.1-.2-3 1.5-4.8.8-.9 1.9-1.3 3.3-1.3 1.6 0 2.5 1 3.4 1.9.9 1 1.8 2 3.6 2 1.6 0 3.3-1.9 3.3-5.4 0-3.6-1.7-5.2-3.3-5.2-1.8 0-2.7 1-3.6 2-.9 1-1.7 2-3.4 2-1.4 0-2.5-.4-3.3-1.3-1.7-1.8-1.5-4.9-1.5-5v-7.4c0-.9.3-1.8.8-2.6.8-1.1 2.1-1.8 3.5-1.8h9.3s2.7-.5 2.7-2.3c0-.7-.4-1.2-1.1-1.9-1-1-2.2-2.2-2.2-4.9 0-2.3 1.1-6.2 8.2-6.2 7.6 0 8.5 4.3 8.5 6.2 0 2.7-1.3 4-2.4 5-.8.7-1.2 1.2-1.2 1.9 0 1.8 2.8 2.3 2.8 2.3h9.9c2.4 0 4.3 2 4.3 4.4v5.6s.4 3 2.1 3c.7 0 1.1-.4 1.7-1.1.8-1 2-2.4 4.7-2.4 2.4 0 6.5 1 6.5 8.1 0 7.8-4.9 8.4-6.5 8.4-2.8 0-3.9-1.4-4.7-2.5-.6-.8-1-1.2-1.7-1.2-1.8 0-2.1 3-2.2 3v13.5c0 2.4-1.9 4.4-4.3 4.4h-5c
0-.3-.1-.3-.3-.3z"/></g></g><path d="M258.9 143.4c-.2.6-.7 1.1-1.2 1.5 0 1-.2 1.9-.6 2.8.9-.3 1.8-.8 2.6-1.6.7-.8 1.1-1.6 1.5-2.3.8-2 .4-4.2-1.1-5.5-.4-.4-1-.6-1.5-.8-.7-.2-1.5-.2-2.3 0 2.2 1.4 3.6 3.4 2.6 5.9zM129.7 89.8l-.2-.1c-.2 0-.3-.1-.5-.1h-.1-.1-.1H128.1c-.1 0-.1 0-.1.1 0 0-.1 0-.2.1-.1 0-.2.1-.3.2-.3.2-.7.6-1.1 1.1l-.7.7c.1.1.2.3.1.5-.2 1.1-.5 1.9-.8 2.7.2.6.4 1.1.6 1.6.4.8.9 1.6 1.5 2.4.6.8 1.3 1.5 2.2 2.2.5.4.9.7 1.3.9h.1c.4.3.9.5 1.5.7 1 .4 2.1.7 3.2.8.3 0 .7.1 1.1.1h2.1c.6-.1 1.1-.3 1.5-.4.6-.2 1-.4 1.3-.6.3-.2.5-.3.8-.5.5-3.3.9-7 1.1-11.2-1.3-.6-2.6-1.3-3.7-2.1-1 1-2 1.6-2.9 1.6-.3 0-.5 0-.8-.1l-3-1.2c-1.2.6-2.3.9-3.2.6z"/><path d="M141.1 57.4c0 .7 0 1.4.1 2.1-.3.3-.7.6-1 .9.3-.3.6-.6 1-.9-.1-.7-.1-1.4-.1-2.1zM180.3 24.8c-2-.4-4-.6-6-.6-.7 0-1.4 0-2.1.1.7 0 1.4-.1 2.1-.1 2 .1 4 .2 6 .6zM122.9 136.4c.6-.6 1.2-1.3 1.8-2-.6.6-1.2 1.3-1.8 2-1 1-2 2-3 2.9 1-.9 2-1.9 3-2.9zM134.2 123.6c.3-.4.7-.7 1.1-1.1l-1.1 1.1c-1.3 1.4-2.6 2.8-3.9 4.3-.6.7-1.2 1.5-1.9 2.2.6-.7 1.2-1.5 1.9
-2.2 1.2-1.4 2.5-2.9 3.9-4.3zM129.1 119.1l1.8.9c.6.3 1.3.5 1.9.7-.7-.2-1.3-.5-1.9-.7l-1.8-.9zM241.7 82.7v-.3M244.7 142.3h-.4.4zM145.9 40.2c.6-.9 1.2-1.8 1.8-2.6-.7.8-1.3 1.7-1.8 2.6zM211 186.6h.2-.5.3zM137.4 186.6h.3-.5.2zM177.3 142.7c-.3-.8-.6-1.5-.9-2.2.3.7.6 1.4.9 2.2zM109.4 153.9c1 .2 2.1.3 3.2.3h1.4-1.4c-1.1 0-2.2-.1-3.2-.3zM144.3 43c.5-1 1-1.9 1.5-2.8-.5.9-1 1.9-1.5 2.8z" fill="#FFF" fill-rule="nonzero"/><path d="M142 102c-.3.2-.5.3-.8.5-.3.2-.8.4-1.3.6-.4.1-.9.3-1.5.4h-1-1.1c-.4 0-.8 0-1.1-.1-1.1-.1-2.2-.4-3.2-.8-.6-.2-1-.5-1.5-.7h-.1c-.4-.2-.8-.5-1.3-.9-.8-.7-1.6-1.5-2.2-2.2-.6-.8-1.1-1.6-1.5-2.4-.2-.5-.5-1-.6-1.6-.5.9-1 1.6-1.8 2.1h-.1c.1.2.1.3.2.5.5 1 1 1.9 1.7 2.8.7.9 1.6 1.8 2.6 2.6.6.5 1.1.8 1.6 1.1.5.3 1.1.6 1.8.9 1.2.5 2.5.9 3.8 1 .4 0 .8.1 1.3.1h2.5c.7-.2 1.3-.3 1.8-.5.7-.3 1.2-.5 1.6-.7.6-.3 1.2-.8 1.8-1.2.7-4 1.2-8.6 1.4-13.9-1.6-.6-3.1-1.3-4.4-2.3-.4.6-.8 1.2-1.3 1.6 1.1.8 2.4 1.6 3.7 2.1-.1 4-.4 7.7-1 11z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M140.8 174.9
c.5-.5 1-1 1.4-1.5-.4.5-.9 1-1.4 1.5zM198.7 183.3c1.1.6 2.1 1.1 3.1 1.5.5.2 1 .4 1.5.5-.5-.2-1-.3-1.5-.5-1-.4-2-.9-3.1-1.5zM203.8 136.1c.6.1 1.2.2 1.9.4.3.1.6.2.9.2-.3-.1-.6-.2-.9-.2-.7-.2-1.3-.3-1.9-.4zM182.4 161.8c.2.7.5 1.4.7 2.1.5 1.4 1.1 2.8 1.8 4.1-.7-1.3-1.2-2.7-1.8-4.1-.2-.7-.4-1.4-.7-2.1zM180.3 153v.1-.1zM255 146.2c-.1.6-.4 1.1-.7 1.6.1 0 .1.1.2.1.8.2 1.7.2 2.6-.1.4-.9.6-1.8.6-2.8-.7.5-1.6.9-2.7 1.2z" fill="#FFF" fill-rule="nonzero"/><path d="M249.9 67.3c-.6.7-1.1 1.3-1.6 1.9-.5.7-1.1 1.4-1.5 2.2-.5.8-.9 1.6-1.3 2.3-.3.7-.7 1.5-1 2.4-.5 1.6-.7 3.4-.7 5.4V83.2l.1 1.2v.4c0 .4.1.7.1 1 .1 2 .1 4.1 0 6.1-.3 4.7-1.3 9.1-2.9 13.1-1 2.4-2.1 4.6-3.5 6.6-1.2 1.8-2.7 3.4-4.4 4.9-.3.4-.8.8-1.2 1.2-.3.2-.5.4-.8.5-1.8 1.3-3.7 2.5-5.8 3.4-1 .4-1.9.7-2.8 1 2.1 1.6 4.8 4.3 7.8 8.7 4.8 7.1 10.4 8.7 14.7 9 .4-.9.8-1.7 1.2-2.2-4.1-.1-9.3-1.3-13.8-8-1.9-2.8-3.7-5-5.4-6.6 2.5-1.1 4.8-2.6 6.9-4.3 2.2-1.8 4.2-3.9 5.8-6.2 1.5-2.1 2.8-4.5 3.8-7 1.7-4.2 2.7-8.8 3.1-13.8.1-2.1.1-4.2 0-6.3 0-.4 0-.7-.1
-1.1v-.4l-.1-1.1V82.4v-.5-.2c0-1.7.2-3.3.6-4.7.2-.6.5-1.3.9-2.2.3-.7.7-1.4 1.1-2 .4-.7.9-1.3 1.4-2 .4-.5.8-1 1.3-1.6-.8-.6-1.5-1.2-1.9-1.9zM138.8 58.5v-1.1c0-19.5 15.9-35.4 35.4-35.4s35.4 15.9 35.4 35.4v1.1c3.8 3.5 5.9 8.3 5.9 13.5 0 7.9-4.9 14.7-12.2 17.3 0 .8.1 1.5.1 2.3 0 0 .1.1.1.2.2.3.3.6.5.9l.3.6v.1c.1.3.3.5.4.8v.1c.1.2.2.3.2.5 0 .1.1.1.1.2l.1.2v.1l.1.2.1.2.3.6c.1.1.1.2.2.4.1.1.2.3.2.4.4.6.7 1.1 1 1.5.4.5.9 1 1.3 1.4.9.8 2 1.4 3.2 1.7h.1c.5.2 1.1.2 1.8.2h.2c.4 0 .8-.1 1.3-.1h.1c1.2-.2 2.2-.7 3.1-1.3.7-.5 1.2-1 1.6-1.5.5-.6 1-1.3 1.4-2.1 1-1.9 1.7-4.1 2-6.4.2-1.5.4-2.7.4-3.8v-.1-.5-1-2.3c0-.4.1-.9.1-1.3.4-4 1.7-8 3.5-11.5 1.6-3 3.6-5.7 6.1-8.2 1.8-1.8 3.8-3.3 6.3-4.9 1.9-1.3 3.6-2.1 5.1-2.9l.2-.1-.3-1-3.2 1.1c-.3.1-.7.2-1.1.2h-.2l-1.5.9c-2.6 1.6-4.7 3.3-6.6 5.2-2.7 2.6-4.9 5.6-6.5 8.7-2 3.7-3.3 8-3.7 12.3 0 .4-.1.9-.1 1.3v.4l-.1.7v2.9c-.1 1-.2 2.2-.4 3.6-.3 2.1-1 4.1-1.8 5.7-.3.6-.7 1.2-1.1 1.7-.3.4-.7.7-1.2 1.1-.7.5-1.4.8-2.2 1-.4.1-.8.1-1 .1h-.1c-.3 0-.9-.1-1.2-.1h-.1c-.8-.2-
1.6-.6-2.3-1.2-.4-.3-.7-.7-1-1.1-.2-.3-.5-.7-.8-1.2-.1-.1-.1-.3-.2-.4 0-.1-.1-.1-.1-.2-.1-.2-.2-.5-.3-.7l-.1-.1-.1-.2s0-.1-.1-.1l-.1-.2v-.1c-.1-.2-.2-.3-.3-.5v-.1c-.1-.2-.3-.5-.4-.7 0-.1-.1-.1-.1-.2-.1-.2-.2-.4-.3-.5-.1-.2-.2-.4-.4-.7v-.1c7.3-3.3 12.1-10.5 12.1-18.8 0-5.4-2.1-10.6-5.9-14.4V58c0-20.8-16.9-37.6-37.6-37.6-20.7 0-37.6 16.9-37.6 37.6v.2c-3.2 3.2-5.1 7.3-5.7 11.8l1.9.8c.5-5.1 2.5-9.2 5.8-12.3z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M238.7 153.9h-1.6.4c.5.1.9.1 1.2 0zM223.8 148.2c-.4-.3-.9-.7-1.3-1-.7-.5-1.3-1.1-2-1.6.6.5 1.3 1.1 2 1.6.4.3.9.6 1.3 1z" fill="#FFF" fill-rule="nonzero"/><path d="M251.4 150.6c-.1.1-.2.2-.4.3-.9.7-1.9 1.4-3.2 2.2-1.3.8-3 1.7-5.2 2.3-1.1.3-2.3.6-3.7.7-.4 0-.9.1-1.4.1-.9 0-1.9-.1-2.8-.2-3.2-.5-6-1.9-7.8-3-2.2-1.3-4.1-2.8-5.8-4.1-.8-.6-1.5-1.3-2.3-1.9-.7-.6-1.4-1.1-2.1-1.7-.2-.1-.5-.3-.7-.5-.4-.3-.7-.6-1-.9-1-.8-2-1.5-2.9-2.1-.6-.4-1.2-.7-1.9-1.2-.7-.4-1.3-.7-1.9-.9-1.1-.5-2.1-.9-3.3-1.2-.9-.2-1.9-.4-2.8-.5v7c.1 1.4.1 2.8.1 4.2v1.5c.4 16.7
4.3 19.4 9.8 23.1 6.3 4.2 8.2 5.5 7.7 9-.1 3.1-2.7 5.7-5.8 5.7h-.1c-.5.1-1.5.2-3 .2-.5 0-1.1 0-1.6-.1-1.8-.1-3.6-.4-5.3-.9-1.1-.3-2.2-.6-3.2-1.1-1.3-.5-2.4-1-3.4-1.6-1.2-.7-2.3-1.4-3.4-2.2-1.1-.9-2.2-1.8-3.3-2.8-1-1-2-2.1-3-3.4-1-1.2-1.9-2.5-2.7-3.8-1.6-2.6-3-5.5-4.1-8.4-.5-1.4-1-2.9-1.4-4.4-.2-.6-.3-1.2-.5-1.8v-.2l-.1-.4c-.1-.6-.3-1.2-.4-1.9l-.4-2v-.2V153.2l-.1-.4-.2-.8c-.3-1-.5-2.1-.8-3.2-.5-2-1.1-3.8-1.7-5.2-.4-.9-.6-1.5-.9-2.1-.1-.1-.1-.2-.2-.3 0 .1-.1.2-.1.3-.3.6-.5 1.2-.9 2.1-.6 1.5-1.2 3.2-1.7 5.3-.3 1-.6 2.1-.8 3.2l-.2.8-.1.4v.5l-.4 2c-.1.7-.3 1.3-.4 1.9l-.1.4-.1.5c-.1.6-.3 1.2-.5 1.7-.4 1.5-.9 3-1.4 4.4-1.1 3-2.5 5.8-4.1 8.4-.8 1.3-1.7 2.6-2.7 3.8-1.1 1.3-2 2.4-3 3.4s-2.2 2-3.3 2.8c-1.1.8-2.2 1.5-3.4 2.2-1 .6-2.1 1.1-3.4 1.6-1 .4-2.1.8-3.2 1.1-1.7.5-3.5.8-5.3.9h-1.6c-1.5 0-2.5-.1-3-.2h-.1c-3.2 0-5.8-2.7-5.8-5.9 0-3 2.3-5.6 5.3-5.9l.2-.1c.4-.2 1-.4 1.7-.8.8-.4 1.6-1 2.4-1.6.4-.4.9-.7 1.3-1.1.4-.3.8-.8 1.3-1.3.4-.5.8-1 1.2-1.6.4-.6.7-1.2 1.1-1.8.3-.6.6-1.3.9-2.1.3-.7.5-1.5.8-
2.3.2-.7.4-1.6.6-2.6.2-.8.3-1.7.4-2.7.1-.9.2-1.9.3-3 0-.4 0-.8.1-1.2v-.3V151.3v-.1-1.9c0-1.5 0-2.9.1-4.3l.3-3.9c-.9.5-1.8 1.2-3 2-.8.5-1.6 1.1-2.4 1.7-2.4 1.6-5 3.5-7.9 5.2-2.2 1.4-4.3 2.4-6.2 3.3-2.4 1.1-4.7 1.9-7 2.5-1.1.3-2.3.5-3.7.6-1 .1-1.9.1-2.8.1h-.9c-1.8-.1-3.5-.3-5.3-.8.4.8.7 1.6.9 2.4 1.5.3 3 .5 4.6.6h1c.9 0 1.9 0 3-.2h.1c1.5-.2 2.8-.4 4-.7 2.4-.6 4.9-1.4 7.4-2.6 2-.9 4.1-2 6.4-3.4 2.9-1.8 5.6-3.6 8-5.3.5-.4 1-.7 1.5-1.1-.1 1.3-.1 2.5-.1 3.9v5.2c0 .4 0 .8-.1 1.2v.1c-.1 1-.2 2-.3 2.8-.1 1-.3 1.8-.4 2.5-.2.9-.4 1.7-.6 2.4-.2.8-.5 1.5-.7 2.2-.3.7-.6 1.3-.9 1.9l-.9 1.5c-.4.5-.7 1-1 1.4-.4.5-.8.9-1.1 1.2-.4.3-.8.7-1.2 1-.8.6-1.6 1.1-2.1 1.4-.6.3-1.1.6-1.5.7-3.9.6-6.9 4-6.9 8 0 4.4 3.5 8 7.9 8.1.5.1 1.7.2 3.3.2.6 0 1.1 0 1.7-.1 2-.1 3.9-.4 5.7-.9 1.2-.3 2.3-.7 3.4-1.1 1.3-.5 2.5-1.1 3.6-1.7 1.3-.7 2.5-1.5 3.6-2.3 1.2-.9 2.4-1.9 3.5-3 1.1-1 2.1-2.2 3.2-3.6 1-1.3 2-2.6 2.8-4 1.7-2.8 3.2-5.7 4.3-8.8.5-1.5 1-3 1.5-4.6.2-.6.3-1.2.5-1.8l.1-.4v-.1l.1-.4c.1-.6.3-1.3.4-2l.4-2v-.2-.2l.1-.
5.2-.8c.2-1 .5-2.1.8-3.1l.6-2.1c.2.7.4 1.3.6 2.1.3 1 .5 2.1.8 3.1l.2.8.1.4v.4l.4 2c.1.7.3 1.3.4 2l.1.4v.1l.1.4c.1.6.3 1.2.5 1.9.4 1.6.9 3.1 1.5 4.6 1.1 3.1 2.6 6 4.3 8.8.9 1.4 1.8 2.8 2.8 4 1.1 1.4 2.2 2.6 3.2 3.6 1.1 1.1 2.3 2.1 3.5 3 1.2.9 2.4 1.6 3.7 2.4 1.1.6 2.3 1.2 3.6 1.7 1.1.4 2.3.8 3.4 1.1 1.8.5 3.8.8 5.7.9.6 0 1.2.1 1.7.1 1.6 0 2.7-.1 3.3-.2 4.2-.1 7.7-3.5 7.9-7.7.6-4.8-2.3-6.8-8.7-11.1-5.1-3.4-8.5-5.7-8.9-21.2v-1.5c0-1.4 0-2.9-.1-4.3v-3.9-.4c1.1.3 2 .6 2.9 1h.1c.5.2 1 .5 1.6.8.7.4 1.3.7 1.8 1.1 1.2.8 2.5 1.7 4 3 .8.6 1.6 1.3 2.4 2 .7.6 1.5 1.3 2.3 1.9 1.8 1.4 3.7 2.9 6.1 4.3 2 1.2 5 2.7 8.6 3.3 1.1.2 2.1.3 3.2.3.5 0 1.1 0 1.6-.1 1.5-.1 2.8-.4 4.1-.8 2.4-.7 4.3-1.7 5.7-2.5 1.4-.9 2.5-1.7 3.4-2.4l.1-.1c.5-.4.9-.7 1.2-1-.1 0-.3 0-.4-.1-.2-.2-1-.5-1.6-1z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M258.3 51.2c-.2-.3-.5-.5-.8-.7l.3.9c.1-.1.3-.1.5-.2z" fill="#FFF" fill-rule="nonzero"/><path d="M100.3 137.6c.1-.1.1-.1.2-.1.3-.1.6.1.7.4 0 .1.1.3.1.4.7.2 1.4.4 2.3.7 2.3.8 5.5 1.
8 8.4 1.8 1 0 1.9-.1 2.6-.4 1-.6 2.1-1.4 3.2-2.3 1.1-.9 2.2-2 3.5-3.4 1.8-1.9 3.5-3.9 5.4-6.1.6-.8 1.3-1.5 1.9-2.3 1.3-1.5 2.4-2.7 3.4-3.8-.7-.2-1.3-.5-1.9-.7-2.7-1.1-5.1-2.6-7.3-4.4-1.1-.9-2.1-1.8-2.9-2.7-.8-.8-1.6-1.8-2.4-2.9-1.4-1.9-2.4-3.9-3.2-5.9-.3-.7-.5-1.4-.7-2-.5-.4-.9-1-1-1.7v-.3-.1-.2-.8-1.2c0-.2 0-.4.1-.6-.1-.9-.2-1.8-.2-2.7v-.8V94.7v-.2c-1-1.1-1.4-2.3-1.6-3.3-.1.4-.2.8-.2 1.2l-.1.8c0 .4-.1.9-.1 1.3v1.7c0 1.6.2 3.1.4 4.6.3 2 .9 3.9 1.6 5.8.9 2.2 2 4.3 3.5 6.4.9 1.2 1.7 2.2 2.6 3.2.9 1 2 2 3.1 2.9 2.1 1.7 4.3 3.1 6.8 4.2-.4.4-.8.9-1.2 1.4-.7.8-1.3 1.5-2 2.3-1.8 2.1-3.5 4.2-5.3 6-1.2 1.3-2.3 2.3-3.3 3.2-.9.8-1.8 1.4-2.6 1.9-.5.1-1.1.2-1.8.2-2.5 0-5.4-.9-7.6-1.7-1.5-.5-2.6-.9-3.7-1-.4-.1-.7-.1-1.1-.1-.3 0-.6 0-.8.1l.1.6c.3.5.8.9 1.1 1.4z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M146.2 166.2c-.1.4-.2.7-.4 1.1.2-.3.3-.7.4-1.1z" fill="#FFF" fill-rule="nonzero"/><path d="M37.1 92.1c.1 0 .2-.1.3-.1-.6-.9-1.2-1.8-1.7-2.7-.2.1-.4.2-.6.2.1.2.2.5.2.7.3.8.7 1.6 1.1 2.5.2-.3.4-.5
.7-.6z" fill="url(#a)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M65.2 105.7s2.7-.5 6.3-2.1c.1-.3.1-.5.2-.8-3.1 1.1-6.7 1.7-10.9 1.7h-1.1c-8.8-.2-15.1-4.7-18.7-8.2.2 1 .1 1.8-.1 2.5.7.7 1.5 1.5 2.3 2.1 1.5 1.2 3.1 2.3 4.9 3.2l1.8.9c.6.3 1.3.5 1.9.7.7.2 1.3.4 2 .6l1 .2c.1 0 .2 0 .3.1l-.1.1c3.6.6 6.8.7 9.2.6 0-.1-.1-.2-.1-.2.1-.7.5-1.3 1.1-1.4z" fill="url(#b)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M38.9 124.2c2.9-2.4 6.1-6.1 10-10.6 1.6-1.8 3.4-3.9 5.3-6.1l-1.1 1.1c-1.3 1.4-2.6 2.8-3.9 4.3-.6.7-1.2 1.5-1.9 2.2-.6.7-1.2 1.4-1.8 2.2l-1.8 2.1c-.6.7-1.2 1.4-1.8 2-1 1-2 2-3 2.8z" fill="url(#c)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M65.2 151.2c-.1.4-.2.7-.4 1.1-.3.8-.7 1.5-1 2.3-.4.7-.8 1.4-1.2 2-.4.6-.9 1.2-1.3 1.8-.5.5-.9 1.1-1.4 1.5-.1.1-.1.1-.2.1 2.5-1.8 4.4-4.6 5.5-8.8z" fill="url(#d)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M70.5 73.8c-.1 0-.1 0 0 0-.2 0-.8.1-1.8.1-.7 0-1.5 0-2.3-.1-.2 5.8-.7 10.7-1.5 15 .6
-.7 1-1.3 1.4-1.9 1.9-3.4 3.4-9.4 4.2-13.1z" fill="url(#e)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M171.4 131.5s.1 0 0 0c.1 0 .1 0 0 0 .1 0 .1 0 0 0z" fill="url(#f)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M162.9 131.2c-7.1 3-14.2-.7-19.1-5.2-4.9-4.5-16.4-17.9-16.4-17.9l9.3-.7s.5.1 1.5.6c-.3-.3-.7-.5-1-.8h-1.3c-2.6 0-4.7-.4-4.8-.4-.3-.1-.5-.3-.5-.6.1-.3.3-.5.6-.5 0 0 4 .7 7.7.2.4-.1.7-.1 1.1-.2 1.2-.3 2.4-.7 3.5-1.2 1-.4 1.9-.9 2.9-1.4-.4-1 .4-2.7 2.1-3.9 1.5-1.1 3.1-1.5 4-1 .9-.9 1.6-1.9 2.3-2.9 1-1.5 1.9-3 2.6-4.6.2-.5.5-1 .7-1.6.6-1.4 1-2.8 1.4-4.3-.3.1-.5.1-.8.1-1.2-.3-1.6-2.3-1.1-4.4.6-2.1 2-3.6 3.1-3.3v-.4c.1-2 .1-3.9 0-5.8 0-.5-.1-.9-.1-1.4 0-.4-.1-.8-.1-1.2v-.8-.2-.7c0-1.6.1-3.2.4-4.6.1-.5.2-1 .4-1.4.3-.9.7-1.8 1.1-2.7.4-.9.9-1.7 1.4-2.6l1.5-2.1c-.4 0-.7-.2-.9-.4-.8-.9-.2-2.8 1.4-4.3.4-.4.9-.7 1.3-1l-.6-1.7c-1.8 1.2-3.6 2.7-4.8 4.8-3.6 6.1-4.4 8.7-4.4 13.9v1.3c0 6.1.1 17.4-4.2 23.9-5.6 8.4-14 12.5-25.6 12.5H126c2.9.5 6 .7 9.4.2.6-.1 1.2
.3 1.3.9.1.6-.3 1.2-.9 1.3-1.5.2-3 .4-4.5.4-5.3 0-9.9-1.4-13.2-2.9.7 4 1.1 8.1 1.2 12.3.3 0 .5.2.5.5 0 0 .2 2.3.2 6.2.4 0 .8 0 1.2.1.4 0 .9.1 1.4.2.6.1 1.2.2 1.9.4.3.1.6.2.9.2.6.2 1.2.4 1.9.6.3.1.6.3 1 .4.7.3 1.3.6 2 1s1.4.8 2.1 1.3c.3.2.5.4.8.6.8-.8 2.7-.5 4.4.7 1.8 1.3 2.7 3.2 2 4.1.6.5 1.3 1.1 2 1.6.4.3.8.7 1.3 1 .4.3.9.7 1.3 1l1.8 1.2c0-.1 0-.3.1-.4.4-1.1 2.5-1.3 4.5-.5 2.1.8 3.4 2.4 2.9 3.5-.1.2-.2.4-.4.5.3.1.7.2 1 .2.6.1 1.1.1 1.7.2h2c1.2-.1 2.2-.3 3.2-.6.2-.1.4-.1.6-.2l-.3-.3c-.6-1 .5-2.8 2.4-3.9 1.4-.8 3.1-1.1 4.3-.8l-.6-1.2c-1-.4-1.8-1-2.4-1.6-.7.1-1.4.4-2.1.7z" fill="url(#g)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M134.8 169.1c-3.6 0-10.7-2.3-15.5-4.8-7.7-4.1-13.4-16.9-14.8-26.9-1.7-12.1-5.1-22.4-8.1-25.1-1.3-1.1-2.5-1.7-3.5-1.9-2.6.9-4.7 2.6-6.1 5.1-2 3.5-2.8 10.4-3.7 17.7-1 8.3-2.1 16.9-4.9 21.5-5.7 9.4-11.9 13.8-20.6 14.8-1.1.1-2.1.2-2.9.2-2.8 0-4.2-.6-4.9-1.1.4 1.6 1.8 2.8 3.5 2.8h4.5c1.4-.1 3-.3 4.8-.8.5-.1.9-.3 1.4-.4.5-.2 1-.3 1.5-.5s1-.4 1.5-.7c
.5-.2 1-.5 1.6-.8 1.1-.6 2.1-1.3 3.2-2 .2-.2.5-.4.7-.6-.1 0-.1-.1-.2-.1-.9-.8-.3-2.8 1.3-4.4 1.6-1.6 3.5-2.2 4.4-1.3 0 0 .1.1.1.2.8-1 1.5-2 2.2-3.1.4-.6.8-1.3 1.1-1.9.7-1.3 1.4-2.7 2-4 .3-.7.6-1.4.8-2.1.4-1.1.8-2.2 1.1-3.3h-.7c-1.1-.4-1.4-2.4-.7-4.5.7-1.9 2-3.2 3.1-3.1l.1-.2.1-.4.2-.9c.3-1.1.5-2.2.8-3.2.3-1 .6-2 .9-2.9.3-.9.6-1.8.9-2.6.3-.8.6-1.5.9-2.2.2-.3.3-.6.5-.9.1-.3.3-.6.4-.9.5-.8.9-1.5 1.3-2.2.4.6.8 1.4 1.3 2.2.1.3.3.6.4.9.1.3.3.6.5.9.3.7.6 1.4.9 2.2.6 1.6 1.2 3.4 1.8 5.5.3 1 .6 2.1.8 3.2l.2.9.1.4.1.2V138.3l.4 2c.1.8.3 1.5.5 2.2l.6 2.1.6 2.1c.2.7.5 1.4.7 2.1.5 1.4 1.1 2.8 1.8 4.1.7 1.3 1.4 2.7 2.2 3.9.8 1.3 1.6 2.5 2.5 3.6.9 1.1 1.8 2.2 2.9 3.2.5.5 1 .9 1.5 1.4.5.4 1 .9 1.6 1.2.5.4 1.1.8 1.6 1.1.5.3 1.1.7 1.6 1 1.1.6 2.1 1.1 3.1 1.5.5.2 1 .4 1.5.5.5.2 1 .3 1.4.4 1.9.5 3.5.7 4.8.8h4.6c1.7 0 3.1-1.1 3.5-2.7h-.1c-.4.2-1 .3-1.7.3z" fill="url(#h)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M62.2 64.1c0 1.5-.3 3.3-1.1 5.3-.1.2-.2.5-.3.7 1.6 1.2 3.5 2.1 5.6 2.6 1.9.3
3.7.1 3.9.1-.7-1-1.4-2-2.1-3.1-2.4-1.4-4.5-3.3-6-5.6z" fill="url(#i)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M129.4 88.3c-1.2-.4-2.3-1.1-3.3-1.9-.6-.5-1.1-1.1-1.6-1.7-.2-.3-.5-.6-.7-.9l-.6-.9c-.2-.3-.4-.6-.5-.9-.1-.2-.2-.3-.2-.5-.1-.2-.1-.3-.2-.5-.1-.1-.2-.3-.2-.4-.1-.1-.1-.3-.2-.4-.1-.3-.3-.6-.4-.8-.1-.3-.3-.5-.4-.8-.1-.2-.2-.5-.4-.7-.1-.2-.2-.4-.3-.5-.1-1.1-.2-2.3-.2-3.5-1.2.2-2.3.3-2.8.3.1 2.1.3 4.3.9 5.8.7 1.7 3.6 7.6 11.1 8.3z" fill="url(#j)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M64.6 42.9c-.1-1.1-.2-2.1-.2-3.2C64.4 23.8 77.3 11 93.1 11c15.9 0 28.7 12.9 28.7 28.7v1.5c4.1 3.1 6.7 7.9 6.7 13.4 0 6.4-3.6 12-8.8 14.8-.7 1.2-1.5 2.4-2.3 3.5.6 0 1.7-.1 3-.3.7-.2 1.4-.4 2.1-.7.8-.4 1.6-.8 2.3-1.3 4.4-2.9 7.4-7.9 7.4-13.5 0-2.5-.6-4.9-1.6-7-1-2.1-2.5-4-4.3-5.5 0-.7.1-1.4.1-2.1 0-2.8-.3-5.4-1-8-.1-.2-.1-.4-.2-.6-1.5-5.7-4.5-10.8-8.6-14.8-1-1-2.1-2-3.2-2.8-1.1-.9-2.3-1.7-3.6-2.4-2.5-1.4-5.2-2.6-8-3.3-.2-.1-.4-.1-.6-.2-.6-.2-1.3-.3-1.9-.4-2-.4-4-
.6-6-.6-.7 0-1.4 0-2.1.1-2.1.1-4.2.5-6.2 1-6.9 1.8-12.9 5.7-17.3 11-.3.4-.7.8-1 1.3-.6.9-1.2 1.7-1.8 2.6-.6.9-1.1 1.9-1.5 2.8-.7 1.5-1.3 3-1.8 4.5-.3 1-.6 2.1-.8 3.2-.4 2.2-.7 4.4-.7 6.7 0 .7 0 1.4.1 2.1-.3.3-.7.6-1 .9-.6.6-1.2 1.3-1.7 2-.3.4-.5.7-.7 1.1-.6 1-1.1 2.1-1.5 3.2-.5 1.4-.8 2.9-.9 4.4l1.8.7c.9.4 1.4 1.4 1.6 2.8l3 1.2c-.7-1.8-1.1-3.8-1.1-5.9-.2-4.9 1.8-9.1 4.9-12.2z" fill="url(#k)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M70.7 106.4c-.2.1-.5.2-.7.3.2.1.3.2.4.4.1.3-.1.6-.4.7-.2 0-2.9.7-7.2.7-1 0-2.1 0-3.3-.1l1.9.7c.1 0 .2.1.3.2.2.4 1.1 2.5-4.2 7.8l-1.3 1.3c-5.2 5.2-13 13.1-21.1 13.8-.7.1-1.4.1-2 .1-5.2 0-10.7-1.5-14.3-2.7l.6 5.5c.3.1.5.2.8.3v-.1c.6-1 2.7-1 4.6.2 1.6.9 2.5 2.3 2.5 3.3.4.1.7.2 1.1.2 1 .2 2.1.3 3.2.3H33.4c.5 0 1-.1 1.5-.1h.2c-.1-.1-.2-.2-.2-.3-.4-1.1.9-2.7 2.9-3.5 2.1-.8 4.1-.6 4.5.5.2.5 0 1.1-.4 1.7l3-1.2c1.5-.7 2.9-1.4 4.2-2.2-.2-.1-.3-.2-.4-.4-.7-1 .2-2.8 2-4.1 1.8-1.3 3.8-1.6 4.5-.6.2.3.3.7.2 1.2 1.2-.8 2.3-1.6 3.4-2.3.8-.6 1.6-1.1 2.3-1
.6 1.5-1 2.9-2 4.2-2.7.6-.4 1.2-.7 1.8-1 .8-4.4 1-7.1 1-7.2 0-.3.3-.5.5-.5.1-.3.1-.6.2-.9.4-2.2 1.1-4.8 1.9-7.7z" fill="url(#l)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M153.8 118c.1 0 .2-.1.3-.1.9-.4 1.9-1.2 2.7-1.9-.9.5-1.8 1-2.8 1.4-.1.2-.1.4-.2.6z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M131.2 182.5c.3.3 1.9 1.5 7.2.9 8.3-1 14.3-5.3 19.8-14.3 2.7-4.4 3.7-12.9 4.8-21.1.9-7.4 1.8-14.4 3.8-18.2 1.1-2 2.6-3.5 4.2-4.5-.5.2-.8.3-.8.3l-1.1.7 4-22.6c-.5-.6-1-1.2-1.4-1.8-2.8-4.2.3-9.3 4.1-13.4v-.3h.2c3.5-3.7 7.5-6.4 7.8-6.6l.2-.1 14.6 1.2-.1.6s-.2 2-.2 4.4h.2c.9-1.1 1.6-2.3 2.3-3.5 5.3-2.8 8.8-8.4 8.8-14.8 0-5.5-2.7-10.4-6.7-13.4v-1.5c0-15.9-12.9-28.7-28.7-28.7-15.9 0-28.7 12.9-28.7 28.7 0 1.1.1 2.2.2 3.2-3.1 3.1-5.1 7.3-5.1 12 0 2.1.4 4 1.1 5.9 1 .4 1.6 1.6 1.6 3.2 1.5 2.3 3.5 4.2 6 5.6.6 1.1 1.3 2.1 2.1 3.1.1 0 .3 0 .4.1.3-1.4.4-2.3.5-2.3l.1-.3.3-.1c.5-.2 13.4-5.6 18.2-1.2 2 1.8 2.3 5 .9 9.4-2.5 8-5.5 14.5-10 19 .1 0 .2.1.3.2.5.4.5 1.1.1 1.6-.1.2-3.7 4.2-6.9 5.
8-.7.4-1.4.7-2.1 1-.9 3.3-1.6 6.1-2 8.3-1.8 10-1.9 13.6-2.1 21 0 1.7-.1 3.7-.2 6-.4 12-3.6 18.7-9.9 21.2-.5.2-1.1.4-1.6.6-.6.2-1.1.4-1.6.6-.3.1-.5.2-.7.3-.4.2-.6.3-.5.3h-.2c-1.9.9-3.1 1.9-3.2 3.5zm63.3-112.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4V67c0-.8.6-1.4 1.4-1.4.8 0 1.4.6 1.4 1.4v3.2zm-6.2-15c.1-.1 1.6-2.5 4.8-2.5 3.1 0 4.7 2.4 4.8 2.5.3.5.2 1.2-.3 1.5-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5 0-.1-1-1.5-2.9-1.5s-2.9 1.4-2.9 1.5c-.3.5-1 .7-1.5.3-.7-.3-.8-1-.5-1.5zm-29 15c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4V67c0-.8.6-1.4 1.4-1.4.8 0 1.4.6 1.4 1.4v3.2zm3-7c-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5 0-.1-1-1.5-2.9-1.5s-2.9 1.4-2.9 1.5c-.3.5-1 .7-1.5.3-.5-.3-.7-1-.3-1.5.1-.1 1.6-2.5 4.8-2.5 3.2 0 4.7 2.4 4.8 2.5.2.5 0 1.2-.5 1.5z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M138.7 177.3c6.3-2.5 9.5-9.2 9.9-21.2.1-2.3.1-4.2.2-6 .2-7.3.3-11 2.1-21 .4-2.2 1.1-5 2-8.3-.5.2-.9.4-1.3.5-.8 2.9-1.4 5.6-1.8 7.6-.1.3-.1.6-.2.9h.1c.3 0 .5.3.5.6 0 0-.2 3.5-1.3 8.9-.1.6-.2 1.1-.3 1.7-.2 1.4-.3 2.7-.4 4.1 0
.7-.1 1.4-.1 2.1v7.2c0 .5 0 1.1-.1 1.6-.1 1-.2 2.1-.3 3.1-.1.5-.1 1-.2 1.5s-.2 1-.3 1.4c-.2.9-.4 1.9-.7 2.7-.2.5-.3 1-.5 1.4-1.1 4.1-3 7-5.5 8.8-.4.4-.9.8-1.3 1.1-1 .7-1.9 1.3-2.7 1.8l-1.2.6c.5-.2 1.1-.4 1.6-.6.8-.1 1.3-.3 1.8-.5z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M76.9 50.6c-.8 0-1.4.6-1.4 1.4v3.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4V52c0-.8-.6-1.4-1.4-1.4z" fill="url(#m)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M112.1 50.6c-.8 0-1.4.6-1.4 1.4v3.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4V52c0-.8-.7-1.4-1.4-1.4z" fill="url(#n)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M107.6 41.7c.5.3 1.2.2 1.5-.3 0 0 1-1.5 2.9-1.5s2.8 1.4 2.9 1.5c.2.3.6.5.9.5.2 0 .4-.1.6-.2.5-.3.7-1 .3-1.5-.1-.1-1.6-2.5-4.8-2.5-3.1 0-4.7 2.4-4.8 2.5-.1.5 0 1.2.5 1.5z" fill="url(#o)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M76.9 44.2c-3.1 0-4.7 2.4-4.8 2.5-.3.5-.2 1.2.3 1.5.5.3 1.2.2 1.5-.3 0 0 1-1.5 2.9-1.5s2.8 1.4 2.9 1.5c.2.3.6.5.9.5.2 0 .4-.1.6-.2
.5-.3.7-1 .3-1.5.1-.1-1.5-2.5-4.6-2.5z" fill="url(#p)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M140.7 118.4c15.7.3 23.7-6.5 29.7-25.4 1.3-4 1.1-6.7-.6-8.2-3.9-3.6-14.8.6-16.7 1.3-.3 1.9-2.2 11.5-4.9 16.3-2.3 4.1-7.5 7.6-13.9 6.2-6.5-1.5-12.3-5.7-14.1-10.1 0 0 0 .1-.1.1-.2.6-.4 1.1-.6 1.7-.2.6-.5 1.1-.7 1.5-.3.5-.5.9-.8 1.2-.2.3-.4.5-.5.6 1 1.7 2.2 3.5 3.7 5.3 3.1 3.4 9.6 9.3 19.5 9.5z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M120.3 98.4c1.9 4.4 7.6 8.7 14.1 10.1 6.4 1.4 11.6-2.1 13.9-6.2 2.7-4.8 4.5-14.4 4.9-16.3 1.9-.8 12.8-4.9 16.7-1.3 1.6 1.5 1.8 4.3.6 8.2-6 18.9-14 25.8-29.7 25.4-9.9-.2-16.4-6.1-19.4-9.5-1.5-1.7-2.7-3.5-3.7-5.3l-.1.1-.2.2-.1.1c-.2.1-.4.3-.6.4.5.9 1.1 1.8 1.7 2.7 1.1-.1 2.5 1.1 3.2 3 .2.4.3.9.4 1.3 3.6 3.5 9.8 8 18.7 8.2h1.1c4.2 0 7.8-.6 10.9-1.7-.1.3-.2.5-.2.8.4-.2.9-.4 1.3-.6.1-.2.1-.4.2-.6 1-.4 1.9-.9 2.8-1.4 1.9-1.6 3.4-3.4 3.5-3.4.3-.4.8-.5 1.3-.3 4.5-4.5 7.4-11 10-19 1.4-4.4 1.1-7.6-.9-9.4-4.8-4.4-17.7 1-18.2 1.2l-.3.1-.1.3s-.2.9-.5
2.3c.1.1.2.2.2.4 0 .3-.2.5-.4.6-.8 3.7-2.3 9.7-4.1 13-.3.6-.8 1.3-1.4 1.9 0 .2-.1.4-.1.6-.8.8-1.7 1.4-2.8 2-.3.2-.6.3-.9.5-.3.1-.6.3-1 .4-.3.1-.7.2-1 .3-.4.1-.7.2-1.1.3h.2H136.1c-.5 0-1.1 0-1.6-.1-1.1-.1-2.3-.4-3.4-.8-.4-.1-.7-.3-1.1-.4-.4-.2-.7-.3-1-.5-.3-.2-.7-.4-1-.6-.3-.2-.6-.4-1-.6-.3-.2-.6-.4-.9-.7-1.2-.9-2.2-2-3-3-.6-.8-1.1-1.6-1.5-2.4-.1-.3-.3-.5-.4-.8-.1-.3-.2-.5-.3-.8h-.2c0 .1-.1.1-.1.2-.1.7-.2.9-.3 1.1z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M174 104.9l-3.4 19.5c.5-.2 1.2-.3 2-.3 1.5 0 3.4.5 5.5 2.3 3.8 3.4 7 15.4 8.5 25.8 1.6 11.5 7.8 22.7 14.2 26.1 6.5 3.4 14.5 5.4 16.3 4.5.1 0 .1-.1.2-.1.3-1.7-.2-2.2-6.5-6.4-5.7-3.9-10.7-7.2-11.1-25.4-.1-3.3-.1-6.6-.1-9.8 0-8.9 0-17.1-1.5-24.9-.4-.2-.8-.4-1.1-.6-9.5-1.9-18.1-5.9-23-10.7z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M198 116.2c1.5 7.8 1.5 15.9 1.5 24.9 0 3.2 0 6.4.1 9.8.4 18.2 5.3 21.5 11.1 25.4 6.3 4.2 6.8 4.7 6.5 6.4 0 0-.1.1-.2.1-1.7.9-9.7-1.1-16.3-4.5-6.5-3.4-12.6-14.6-14.2-26.1-1.5-10.4-4.7-22.4-8.5-25.8-2-
1.8-4-2.3-5.5-2.3-.8 0-1.5.1-2 .3l3.4-19.5c4.9 4.9 13.5 8.9 22.9 10.8-1.8-.9-2.9-1.7-3-1.8 0 0 0-.1-.1-.1-9.5-2.5-17.7-7.1-21.2-12.4-4.6-6.9 10-17.4 11.7-18.6l13.1 1.1c-.1 1.9-.5 8 .8 11.3.9 2.4 4.9 10.1 15.3 9.2 9.7-.8 12.1-9.5 13.2-17.9.1-1.2.3-2.2.4-3.2.8-6.3 1-8.4 3.6-14.2l.3-.6c-.4.7-.9 1.4-1.3 2.2-1.6 3.1-2.8 6.8-3.2 10.7-.1.5-.1 1-.1 1.6v3.5c-.1 1.4-.3 2.7-.5 4.1-.4 2.6-1.2 5.1-2.3 7.1-.5 1-1.1 1.9-1.7 2.6-.6.7-1.3 1.3-1.9 1.8-.7.5-1.3.8-2 1.1-.7.3-1.4.5-2.1.6-.6.1-1.2.2-1.8.2h-.4c-.7 0-1.5-.1-2.2-.3-.3-.1-.5-.2-.8-.3-7.4-.7-10.4-6.5-11.2-8.5-.6-1.5-.8-3.7-.9-5.8h-.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h.3c0-2.4.2-4.4.2-4.4l.1-.6-14.6-1.2-.2.1c-.3.2-4.3 2.9-7.8 6.6h-.2v.3c-3.8 4-6.9 9.1-4.1 13.4.4.6.9 1.2 1.4 1.8l-4 22.6 1.1-.7s.3-.2.8-.3c-1.6 1-3.1 2.4-4.2 4.5-2.1 3.7-2.9 10.7-3.8 18.2-1 8.2-2 16.6-4.8 21.1-5.5 9.1-11.4 13.3-19.8 14.3-5.2.6-6.8-.5-7.2-.9.1-1.7 1.3-2.7 2.9-3.5-1.9.1-3.5 1.7-3.5 3.7 0 .3 0 .6.1.9.7.5 2.1 1.1 4.9 1.1.8 0 1.8-.1 2.9-.2 8.7-1 14.9-5.5 20.6-14.8 2.8-4
.7 3.9-13.2 4.9-21.5.9-7.3 1.7-14.2 3.7-17.7 1.4-2.5 3.4-4.2 6.1-5.1 1 .2 2.2.8 3.5 1.9 3 2.7 6.4 13 8.1 25.1 1.4 10 7.1 22.9 14.8 26.9 4.8 2.5 11.9 4.8 15.5 4.8.7 0 1.3-.1 1.8-.3h.1c.1-.3.2-.7.2-1 .1-.5.1-1 0-1.4-.3-1.1-1.6-2.1-4.6-4.2-.6-.4-1.3-.9-2.1-1.4-2.5-1.7-4.7-3.3-6.5-5.7-1.1-1.5-2-3.3-2.7-5.7-.4-1.2-.7-2.5-.9-4-.4-2.6-.7-5.7-.8-9.5v-1.5c0-1.3 0-2.7-.1-4.1v-9.4c-.1-3.8-.2-6.1-.2-6.1 0-.3.2-.6.5-.6h.1c-.2-4.2-.5-8.3-1.2-12.3-.7-.5-1.1-.7-1.5-.9z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M227 83.3c-.1 1-.2 2-.4 3.2-1.1 8.4-3.4 17.1-13.2 17.9-10.4.9-14.3-6.8-15.3-9.2-1.3-3.3-1-9.4-.8-11.3l-13.1-1.1c-1.7 1.2-16.3 11.6-11.7 18.6 3.5 5.3 11.7 9.9 21.2 12.4-.4-.4-.5-1-.2-1.5.4-.5 1.1-.6 1.6-.3 0 0 2.6 1.8 6.6 3.3 1.5.2 3 .3 4.5.4 12.5.6 21.4-3.3 27.1-11.9 4.1-6.2 4.1-17.7 4.1-23.3v-1.3c0-5.5.9-8.2 4.6-14.5 1.4-2.3 3.4-4 5.4-5.3l-1.3-3.9c-.3.2-.6.3-1 .5-1.1.6-2.4 1.3-3.8 2.2l-.1.1c-2.3 1.6-4.6 3.5-6.5 5.4-.8.8-1.5 1.6-2.2 2.6-.5.7-1 1.3-1.5 2.1l-.3.6c-2.7 5.8-3 8-3.7 14.3z" fil
l="#FAFAFA" fill-rule="nonzero"/><path d="M241.9 64.8c-3.7 6.3-4.6 9-4.6 14.5v1.3c0 5.5.1 17-4.1 23.3-5.8 8.6-14.6 12.5-27.1 11.9-1.5-.1-3-.2-4.5-.4 1.6.6 3.5 1.2 5.5 1.5h1.5c11.6 0 20-4.1 25.6-12.5 4.3-6.5 4.3-17.8 4.2-23.9v-1.3c0-5.2.8-7.8 4.4-13.9 1.2-2 3-3.6 4.8-4.8l-.4-1.1c-1.9 1.4-3.9 3.1-5.3 5.4zM235.3 63c-.3.2-.5.5-.8.8 1.9-1.9 4.2-3.7 6.5-5.4-1.7 1.2-3.7 2.7-5.7 4.6z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M127.4 108s11.6 13.5 16.4 17.9c4.9 4.5 12 8.2 19.1 5.2.7-.3 1.4-.6 2-.8-.5-.5-.9-1.1-1.1-1.8-.1-.4-.2-.9-.2-1.3h-.4c-.2 0-.4 0-.6-.1-.2 0-.3 0-.5-.1-.2 0-.4-.1-.6-.1-.2 0-.3-.1-.5-.1s-.4-.1-.6-.1c-.2 0-.4-.1-.5-.1-.2-.1-.4-.1-.7-.2-.2-.1-.4-.1-.6-.2-.2-.1-.4-.2-.7-.2-.2-.1-.4-.1-.6-.2-.2-.1-.4-.2-.7-.3l-.6-.3c-.2-.1-.5-.2-.7-.4l-.6-.3c-.2-.1-.5-.3-.7-.4-.2-.1-.4-.2-.6-.4-.2-.2-.5-.3-.7-.5-.2-.1-.4-.3-.6-.4-.2-.2-.5-.4-.7-.6-.2-.2-.4-.3-.5-.5l-.7-.7-.5-.5c-.3-.3-.5-.6-.8-.9-.1-.2-.3-.3-.4-.5-.4-.5-.8-1-1.2-1.6-.4-.5-.7-1-1-1.5-.1-.1-.2-.2-.2-.3-.3-.5-.7-.9-1-1.3v-.1c
-.3-.4-.6-.8-.9-1.1-.1-.1-.1-.2-.2-.2-.3-.3-.6-.7-.9-1l-.1-.1-.8-.8-.2-.2c-.3-.3-.5-.5-.8-.7-.1 0-.1-.1-.2-.1-.2-.2-.4-.3-.6-.5-.1-.1-.2-.1-.2-.2-.2-.2-.4-.3-.6-.4-.1-.1-.2-.1-.3-.2-.1-.1-.2-.1-.3-.2-.1-.1-.2-.1-.3-.2-.3-.2-.5-.3-.7-.4-.9-.5-1.5-.6-1.5-.6l-9.1.6z" fill="url(#q)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M116 146c7.7-.7 15.4-8.4 20.4-13.5l1.3-1.3c3.9-3.9 4.1-5.8 4-6.3l-5.4-2c-2.1 2.3-3.9 4.5-5.6 6.4-6.1 7-10.5 12.1-15.1 13.6-4.4 1.4-9.5-.3-13-1.4-.5-.2-1-.3-1.5-.5-.1.3-.2.7-.4 1-.3.5-.6.9-1 1.3 4 1.4 10.7 3.2 16.3 2.7z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M116.1 147.1c8.1-.7 16-8.6 21.1-13.8l1.3-1.3c5.3-5.3 4.4-7.4 4.2-7.8-.1-.1-.2-.2-.3-.2l-1.9-.7c-1.6-.1-3.4-.3-5.2-.7-1.9 2.2-3.7 4.2-5.3 6.1-3.9 4.5-7.1 8.2-10 10.6-.2.2-.5.4-.7.6-1.2 1-2.5 1.9-3.7 2.6-1.1.4-2.3.5-3.5.5-4 0-8.1-1.7-10.6-2.4 0 .2-.1.4-.1.5.5.1.9.3 1.5.5 3.4 1.1 8.6 2.9 13 1.4 4.6-1.5 9-6.6 15.1-13.6 1.7-1.9 3.6-4.1 5.6-6.4l5.4 2c0 .5-.2 2.4-4 6.3l-1.3 1.3c-5.1 5.1-12.7 12.8-
20.4 13.5-5.6.5-12.3-1.4-16.2-2.6l-.2.2.1 1c3.5 1.2 9.1 2.7 14.3 2.7.4-.2 1.1-.2 1.8-.3z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M171.5 131.5c.1.2.3.4.5.6.4.3.8.5 1.3.7.3-.5.6-1 .7-1.6-.8.2-1.6.3-2.5.3z" fill="url(#r)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M149.4 116.1c-3-4.4-5.7-7.1-7.8-8.7.9-.2 1.8-.6 2.8-1 2.1-.9 4.1-2 5.8-3.4-1.5.9-3.1.9-3.7.1-.1-.1-.1-.2-.1-.3-.9.5-1.9 1-2.9 1.4-1.1.5-2.3.9-3.5 1.2-.3.1-.7.1-1.1.2-3.7.5-7.7-.1-7.7-.2-.3-.1-.6.2-.6.5-.1.3.2.6.5.6.1 0 2.2.4 4.8.4h1.3c.3.3.7.5 1 .8.2.1.5.2.7.4.1.1.2.1.3.2.1.1.2.1.3.2.1.1.2.1.3.2.2.1.4.3.6.4.1.1.2.1.2.2.2.1.4.3.6.5.1 0 .1.1.2.1.2.2.5.5.8.7l.2.2c.3.2.5.5.8.8l.1.1c.3.3.6.6.9 1 .1.1.1.2.2.2.3.4.6.7.9 1.1v.1c.3.4.7.8 1 1.3.1.1.2.2.2.3.3.5.7 1 1 1.5.4.6.8 1.1 1.2 1.6.1.2.3.3.4.5.3.3.5.7.8.9l.5.5c.2.3.5.5.7.7.2.2.4.3.5.5.2.2.5.4.7.6.2.2.4.3.6.4.2.2.5.4.7.5.2.1.4.3.6.4.2.2.5.3.7.4l.6.3c.2.1.5.2.7.4l.6.3c.2.1.4.2.7.3.2.1.4.2.6.2.2.1.4.2.7.2.2.1.4.1.6.2.2.1.4.1.7.2.2 0 .4.1.5.1.2.1.4.1.6.1.2 0 .4.
1.5.1.2 0 .4.1.6.1.2 0 .3.1.5.1s.4 0 .6.1h.4c0 .4 0 .9.2 1.3.2.7.6 1.3 1.1 1.8.6.6 1.4 1.1 2.4 1.6.6.2 1.2.5 1.9.6h.1c.2 0 .5-.2.5-.4.1-.3-.1-.6-.4-.7-.1 0-.2-.1-.3-.1-2.4-.7-3.8-1.8-4.2-3.2-.7-2.5 1.8-5.4 1.9-5.4.1-.1.2-.3.1-.5 0-.1-.1-.2-.2-.3-.2-.2-.6-.2-.8 0 0 0-.3.3-.6.7-.4.5-.9 1.3-1.2 2.2-4.5.3-10.1-1.3-14.9-8.4z" fill="url(#s)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M31.3 79.8v1.6c0 .9.1 1.8.2 2.7 0-.3.1-.6.2-1 .1-.3.1-.6.2-.9.1-.3.2-.7.3-1 .1-.2.1-.4.2-.6.7.5 1.6.9 2.8 1.3 1.3.4 2.7.7 4.1.7H39.9c.1.3.2.5.3.8.1.3.3.5.4.8.4.8.9 1.6 1.5 2.4.8 1.1 1.8 2.1 3 3 .3.2.6.5.9.7.3.2.6.4 1 .6.3.2.7.4 1 .6.3.2.7.3 1 .5.4.2.7.3 1.1.4 1.1.4 2.2.6 3.4.8.5.1 1.1.1 1.6.1h3.1-.2c.4-.1.7-.2 1.1-.3.4-.1.7-.2 1-.3.3-.1.7-.3 1-.4.3-.1.6-.3.9-.5 1-.6 2-1.3 2.8-2 0-.2.1-.4.1-.6.8-4.3 1.3-9.2 1.5-15 .8.1 1.6.1 2.3.1.9 0 1.6-.1 1.7-.1h.1c.3-.1.4-.3.4-.6 0-.2-.1-.3-.2-.4-.1-.1-.3-.1-.4-.1-.1 0-2 .2-3.9-.1-2-.5-3.9-1.4-5.6-2.6.1-.2.2-.5.3-.7.8-1.9 1.1-3.8 1.1-5.3-.1-1.6-.6-2.8-1.6-3
.2l-3-1.2c.1.4.1.8.1 1.2l2.5 1c1.1.5 1.4 3.5-.1 7.1-1.5 3.6-3.7 5.6-4.9 5.1l-2.5-1c-.3.3-.6.6-.9.8l3 1.2c.2.1.5.1.8.1.9 0 1.9-.6 2.9-1.6.4-.5.9-1 1.3-1.6 1.4.9 2.8 1.7 4.4 2.3-.2 5.3-.7 9.9-1.4 13.9-.5.5-1.1.9-1.8 1.2-.4.2-.9.5-1.6.7-.5.2-1.1.3-1.8.5h-.8H55.1c-.5 0-.9 0-1.3-.1-1.3-.1-2.6-.5-3.8-1l-1.8-.9c-.5-.3-1-.7-1.6-1.1-1-.8-1.9-1.7-2.6-2.6-.7-.9-1.2-1.8-1.7-2.8-.1-.2-.1-.3-.2-.5h.1c.8-.5 1.3-1.2 1.8-2.1.4-.7.7-1.6.8-2.7 0-.2 0-.3-.1-.5-.1-.1-.2-.2-.3-.2-.3-.1-.6.2-.6.5 0 .1-.1.3-.1.4-.4 1.8-1 3-2 3.6-1.3.8-3.1.8-6.1-.1-5.7-1.7-4.6-6-4.5-6.2.1-.2 0-.5-.2-.6-.1 0-.1-.1-.2-.1-.3-.1-.6.1-.7.4 0 0-.2.9-.1 2.1.1 1 .5 2.2 1.6 3.3-.2 0-.2.1-.2.1z" fill="url(#t)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M157.7 138.9c-.4 0-.8.1-1.2.1h-.8c-.5 0-1.1-.1-1.7-.2-.3-.1-.7-.1-1-.2-.8.6-2.4.7-4.1 0-1.8-.7-3.1-2.1-3-3.1l-1.8-1.2c-.5-.3-.9-.7-1.3-1-.4-.3-.9-.7-1.3-1-.7-.5-1.3-1.1-2-1.6-.6.8-2.2.7-3.8-.2.7.5 1.4 1.1 2.1 1.7.7.6 1.5 1.2 2.3 1.9 1.7 1.4 3.6 2.8 5.8 4.1 1.8 1.1 4.6 2
.5 7.8 3 1 .1 1.9.2 2.8.2.5 0 .9 0 1.4-.1 1.3-.1 2.5-.3 3.7-.7 2.2-.6 3.8-1.5 5.2-2.3 1.3-.8 2.3-1.6 3.2-2.2.1-.1.3-.2.4-.3-.3-.2-.6-.4-.8-.6-.2-.2-.4-.4-.6-.5-.2 1-1.6 2.3-3.1 3.2-1.7 1-3.5 1.2-4.3.4-.2.1-.4.1-.6.2-1 .1-2.1.3-3.3.4z" fill="url(#u)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M31.5 141.4h.9c.9 0 1.8 0 2.8-.1 1.4-.2 2.6-.4 3.7-.6 2.3-.5 4.6-1.4 7-2.5 1.9-.9 4-2 6.2-3.3 2.9-1.7 5.5-3.6 7.9-5.2.8-.6 1.6-1.1 2.4-1.7 1.1-.8 2.1-1.4 3-2-.2 1.3-.3 2.6-.3 3.9-.1 1.4-.1 2.8-.1 4.3V139.6c0 .4 0 .8-.1 1.2-.1 1.1-.2 2.1-.3 3-.1 1-.3 1.9-.4 2.7-.2 1-.4 1.8-.6 2.6-.2.8-.5 1.6-.8 2.3-.3.8-.7 1.5-.9 2.1-.3.6-.7 1.2-1.1 1.8-.4.6-.8 1.1-1.2 1.6-.5.6-.9 1-1.3 1.3-.4.4-.9.8-1.3 1.1-.8.6-1.6 1.1-2.4 1.6-.7.4-1.3.7-1.7.8l-.2.1c-3 .3-5.3 2.8-5.3 5.9 0 3.2 2.6 5.9 5.8 5.9h.1c.5.1 1.5.2 3 .2h1.6c1.8-.1 3.6-.4 5.3-.9 1.1-.3 2.1-.6 3.2-1.1 1.2-.5 2.4-1 3.4-1.6 1.2-.7 2.3-1.4 3.4-2.2 1.1-.9 2.3-1.8 3.3-2.8 1-1 2-2.1 3-3.4 1-1.2 1.9-2.5 2.7-3.8 1.6-2.6 3-5.5 4.1-8.4.5-1.4 1-2.9 1
.4-4.4.2-.6.3-1.2.5-1.7l.1-.5.1-.4c.1-.6.3-1.2.4-1.9l.4-2v-.2V138.2l.1-.4.2-.8c.2-1 .5-2.1.8-3.2.5-2 1.1-3.8 1.7-5.3.3-.8.6-1.5.9-2.1 0-.1.1-.2.1-.3.1.1.1.2.2.3.2.5.5 1.2.9 2.1.6 1.5 1.2 3.2 1.7 5.2.3 1 .6 2.1.8 3.2l.2.8.1.4v.5l.4 2c.1.7.3 1.3.4 1.9l.1.4.1.5c.1.6.3 1.2.5 1.8.4 1.5.9 3 1.4 4.4 1.1 2.9 2.5 5.8 4.1 8.4.8 1.3 1.7 2.6 2.7 3.8 1 1.3 2 2.4 3 3.4s2.2 2 3.3 2.8c1.1.8 2.2 1.5 3.4 2.2 1 .6 2.1 1.1 3.4 1.6 1 .4 2.1.8 3.2 1.1 1.7.5 3.5.8 5.3.9.5 0 1.1.1 1.6.1 1.5 0 2.5-.1 3-.2h.1c3.1 0 5.7-2.6 5.8-5.7.5-3.5-1.5-4.8-7.7-9-5.5-3.7-9.5-6.4-9.8-23.1v-1.5c0-1.4 0-2.8-.1-4.2v-4-3c.9.1 1.9.3 2.8.5 1.2.3 2.3.7 3.3 1.2.6.3 1.2.6 1.9.9.7.4 1.3.8 1.9 1.2.9.6 1.8 1.3 2.9 2.1-1.1-1.2-1.5-2.5-1-3.2l.1-.1c-.3-.2-.5-.4-.8-.6-.7-.5-1.4-.9-2.1-1.3-.7-.4-1.3-.7-2-1-.3-.2-.6-.3-1-.4-.6-.3-1.3-.5-1.9-.6-.3-.1-.6-.2-.9-.2-.7-.2-1.3-.3-1.9-.4-.5-.1-.9-.1-1.4-.2-.4 0-.8-.1-1.2-.1-.1-3.9-.2-6.2-.2-6.2 0-.3-.2-.5-.5-.5h-.1c-.3 0-.5.3-.5.6 0 0 .2 2.3.2 6.1v9.4c.1 1.4.1 2.8.1 4.1v1.5c.1 3.8.4 6.9.8 9.5.2 1
.5.6 2.8.9 4 .7 2.4 1.6 4.2 2.7 5.7 1.7 2.4 3.9 4 6.5 5.7.8.5 1.5 1 2.1 1.4 3.1 2.1 4.3 3.1 4.6 4.2.1.4.1.9 0 1.4 0 .4-.1.7-.2 1-.4 1.5-1.8 2.7-3.5 2.7h-.1H132h-.5H128.1c-1.4-.1-3-.3-4.8-.8-.5-.1-.9-.3-1.4-.4-.5-.2-1-.3-1.5-.5-1-.4-2.1-.9-3.1-1.5-.5-.3-1.1-.6-1.6-1-.5-.3-1.1-.7-1.6-1.1-.5-.4-1-.8-1.6-1.2-.5-.4-1-.9-1.5-1.4-1-1-1.9-2-2.9-3.2-.9-1.1-1.8-2.3-2.5-3.6-.8-1.3-1.5-2.6-2.2-3.9-.7-1.3-1.2-2.7-1.8-4.1-.3-.7-.5-1.4-.7-2.1l-.6-2.1-.6-2.1c-.2-.7-.3-1.4-.5-2.2l-.4-2v-.2-.1l-.1-.2-.1-.4-.2-.9c-.3-1.1-.5-2.2-.8-3.2-.6-2.1-1.2-3.9-1.8-5.5-.3-.8-.6-1.5-.9-2.2-.2-.3-.3-.6-.5-.9-.1-.3-.3-.6-.4-.9-.5-.8-.9-1.5-1.3-2.2-.4.6-.8 1.4-1.3 2.2-.1.3-.3.6-.4.9-.1.3-.3.6-.5.9-.3.7-.6 1.4-.9 2.2-.3.8-.6 1.6-.9 2.6-.3.9-.6 1.9-.9 2.9-.3 1-.6 2.1-.8 3.2l-.2.9-.1.4-.1.2h.3c1.1.4 1.4 2.4.7 4.5-.6 1.7-1.7 2.9-2.7 3.1-.3 1.1-.7 2.2-1.1 3.3-.3.7-.5 1.4-.8 2.1-.6 1.4-1.2 2.7-2 4-.4.7-.7 1.3-1.1 1.9-.7 1.1-1.4 2.1-2.2 3.1.7.9.1 2.7-1.4 4.2s-3.3 2.1-4.2 1.5c-.2.2-.5.4-.7.6-1.1.8-2.1 1.5-3.2 2-.5.3-1.1.6-1.
6.8-.5.2-1 .5-1.5.7-.5.2-1 .4-1.5.5-.5.2-1 .3-1.4.4-1.9.5-3.5.7-4.8.8H54.1h-1-.2c-1.7 0-3.1-1.2-3.5-2.8-.1-.3-.1-.6-.1-.9 0-2 1.5-3.6 3.5-3.7h.2c-.1 0 .1-.1.5-.3.2-.1.4-.2.7-.3.3-.2.7-.4 1.2-.6.8-.4 1.7-1 2.7-1.8.4-.3.9-.7 1.3-1.1.1-.1.1-.1.2-.1.5-.5 1-1 1.4-1.5.5-.5.9-1.1 1.3-1.8.4-.6.8-1.3 1.2-2 .4-.7.7-1.5 1-2.3.1-.3.2-.7.4-1.1.2-.5.3-.9.5-1.4.3-.9.5-1.8.7-2.7.1-.5.2-.9.3-1.4.1-.5.1-1 .2-1.5.1-1 .2-2 .3-3.1 0-.5.1-1 .1-1.6V136.2v.1-1.8-2.1c0-.7 0-1.4.1-2.1.1-1.3.2-2.7.4-4.1.1-.6.2-1.1.3-1.7 1.1-5.4 1.3-8.9 1.3-8.9 0-.3-.2-.6-.5-.6h-.1c-.3 0-.5.2-.5.5 0 0-.2 2.8-1 7.2-.6.3-1.1.6-1.8 1-1.3.8-2.7 1.7-4.2 2.7-.8.5-1.5 1-2.3 1.6-1.1.7-2.2 1.5-3.4 2.3-.2.9-1 2.1-2.2 2.9-1.5 1.1-3.2 1.5-4.1 1-1.4.8-2.8 1.5-4.2 2.2-1 .4-2 .9-3 1.2-.5.7-1.4 1.4-2.5 1.8-1.8.7-3.6.6-4.3-.2h-.2c-.5 0-1 .1-1.5.1h-1.8c-1.1 0-2.2-.2-3.2-.3-.4-.1-.7-.2-1.1-.2 0 .2 0 .4-.2.6-.2.4-.7.6-1.4.7-1.3-2.1-3.3-3.8-5.6-4.7-.3-.1-.5-.2-.8-.3l-.6-5.5-.1-1 .2-.2c.4-.4.7-.8 1-1.3.2-.3.3-.6.4-1 .1-.2.1-.4.1-.5 2.5.8 6.6 2.4 10
.6 2.4 1.2 0 2.4-.2 3.5-.5 1.2-.7 2.5-1.6 3.7-2.6.2-.2.5-.4.7-.6 1-.9 2-1.8 3-2.9.6-.6 1.2-1.3 1.8-2l1.8-2.1c.6-.7 1.2-1.4 1.8-2.2.6-.7 1.2-1.5 1.9-2.2 1.3-1.5 2.5-2.9 3.9-4.3.3-.4.7-.7 1.1-1.1 1.9.4 3.6.6 5.2.7 1.2.1 2.3.1 3.3.1 4.3 0 7-.7 7.2-.7.3-.1.5-.4.4-.7-.1-.2-.2-.3-.4-.4h-.3s-2 .5-5.3.6c-2.4.1-5.6 0-9.2-.6l.1-.1c-.1 0-.2 0-.3-.1l-1-.2c-.7-.2-1.3-.4-2-.6-.7-.2-1.3-.5-1.9-.7l-1.8-.9c-1.8-.9-3.4-2-4.9-3.2-.8-.7-1.6-1.4-2.3-2.1-.2.4-.4.6-.7.8-1.1.5-2.7-.8-3.5-2.9-.6-1.6-.7-3.1-.1-4-.4-.8-.8-1.7-1.1-2.5-.1-.2-.2-.5-.2-.7-.1 0-.2.1-.3.1-.8.1-1.7-.1-2.3-.6.2.7.4 1.4.7 2 .8 2 1.9 4 3.2 5.9.8 1.1 1.6 2.1 2.4 2.9.8.9 1.8 1.8 2.9 2.7 2.2 1.8 4.6 3.3 7.3 4.4.6.3 1.2.5 1.9.7-1 1.1-2.1 2.3-3.4 3.8-.7.8-1.3 1.5-1.9 2.3-1.8 2.2-3.6 4.2-5.4 6.1-1.3 1.4-2.4 2.5-3.5 3.4-1.1.9-2.1 1.7-3.2 2.3-.8.2-1.7.4-2.6.4-2.9 0-6-1.1-8.4-1.8-.9-.3-1.7-.6-2.3-.7 0-.1 0-.3-.1-.4-.1-.3-.4-.4-.7-.4-.1 0-.1.1-.2.1-.2.1-.2.4-.2.6.4 1.2.3 2.3-.3 3.4-1 1.7-3.2 2.9-4.9 3.3-2.5.6-4.4.3-5.6-.7-1.5-1.2-1.4-3.3-1.4-3.3
0-.3-.2-.5-.4-.5h-.2c-.3 0-.6.2-.6.5 0 .1-.1 2.6 1.8 4.2.6.5 1.4.9 2.3 1.1l.5 4.8c-1.3.7-2.5 1.7-3.4 2.8-1.9 2.4-2.8 5.4-2.5 8.4.5 4.6 3.6 8.4 8 9.8.2.1.3.1.5.1h.2c.4 0 .8-.3 1.1-.6.3-.3.4-.8.4-1.2v-.2l-.8-7.7c0-.2.1-.3.1-.3 0-.1.1-.1.3-.2l2-.2.8-.1.8-.1c.3 0 .5.2.5.4l.8 7.9c.1.8.8 1.5 1.6 1.5h.2c.2 0 .4-.1.6-.2.4-.2.9-.5 1.3-.9.8-.6 1.4-1.2 2-1.9 1.9-2.4 2.8-5.4 2.5-8.4L27 143c-.2-.9-.5-1.7-.9-2.4 1.8.5 3.6.8 5.4.8zm-5.2 3.6c.3 2.9-.6 5.6-2.3 7.6-.5.6-1.1 1.2-1.8 1.7l-.8-7.7c0-.4-.2-.8-.5-1-.3-.2-.6-.4-1-.4h-.2l-3.6.4-2 .2c-.4 0-.8.3-1 .6-.3.3-.4.7-.3 1.1l.8 7.7c-3.2-1.5-5.5-4.6-5.9-8.3-.3-2.9.6-5.6 2.3-7.6 1-1.2 2.3-2.2 3.7-2.9l-.6-5.3c.4-.1.7-.1 1.1-.2 1.1-.2 2.4-.8 3.5-1.5l.7 6.5c4.2 1 7.5 4.5 7.9 9.1z" fill="url(#v)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M114.1 97.1c-.5-.4-1.2-.2-1.6.3-.3.5-.2 1.1.2 1.5 0 0 0 .1.1.1.1.1 1.2.9 3 1.8.3.2.7.4 1.1.6l1.2.6c3.3 1.4 7.9 2.9 13.2 2.9 1.5 0 2.9-.1 4.5-.4.6-.1 1-.7.9-1.3-.1-.6-.7-1-1.3-.9-3.3.5-6.5.3-9.4-.2-2-.4-3.9
-.9-5.5-1.5-3.8-1.7-6.3-3.5-6.4-3.5z" fill="url(#w)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M24.8 135.4c-1.9-1.1-4-1.2-4.6-.2v.1c2.4.9 4.3 2.6 5.6 4.7.6-.1 1.1-.3 1.4-.7.1-.2.1-.4.2-.6-.1-1.1-1.1-2.4-2.6-3.3z" fill="url(#x)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M148.5 99.1c-1.6 1.2-2.5 2.9-2.1 3.9 0 .1.1.2.1.3.6.8 2.2.7 3.7-.1.3-.2.5-.3.8-.5.5-.4.9-.8 1.2-1.2.9-1.1 1.2-2.3.7-3-.1-.2-.3-.3-.5-.4-.8-.5-2.4-.1-3.9 1z" fill="url(#y)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M42.4 135.7c-.4-1.1-2.5-1.3-4.5-.5-2.1.8-3.4 2.4-2.9 3.5.1.1.1.2.2.3.7.8 2.5.9 4.3.2 1.1-.5 2-1.1 2.5-1.8.4-.6.6-1.2.4-1.7z" fill="url(#z)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M55.3 128.9c-.7-1-2.7-.7-4.5.6-1.8 1.3-2.7 3.2-2 4.1.1.2.3.3.4.4.9.5 2.6.1 4.1-1 1.2-.9 2-2 2.2-2.9.1-.5 0-.9-.2-1.2z" fill="url(#A)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M157.7 80.4c-.6 2.1-.1 4.1 1.1 4.4.3.1.5 0 .8-.1 1-.3 1.9-1.6 2.4-3.3.
6-2.1.1-4.1-1.1-4.4-1.2-.2-2.6 1.3-3.2 3.4z" fill="url(#B)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M41 96.3c-.1-.4-.2-.9-.4-1.3-.8-1.9-2.1-3.1-3.2-3-.1 0-.2 0-.3.1-.3.1-.5.3-.6.6-.5.9-.5 2.4.1 4 .8 2.1 2.4 3.4 3.5 2.9.3-.1.6-.4.7-.8.4-.7.4-1.6.2-2.5z" fill="url(#C)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M164.5 52.7c.2.2.6.4.9.4.9.1 2.1-.4 3.2-1.4v-.1l-1.4-4.3c-.4.3-.9.6-1.3 1-1.6 1.5-2.2 3.5-1.4 4.4z" fill="url(#D)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M84 141c-.7 2.1-.4 4.1.7 4.5.2.1.4.1.7 0 1-.2 2.1-1.4 2.7-3.1.7-2.1.4-4.1-.7-4.5h-.3c-1.1-.1-2.4 1.2-3.1 3.1z" fill="url(#E)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M73.7 161.2c-1.6 1.6-2.1 3.5-1.3 4.4 0 0 .1.1.2.1.9.6 2.7 0 4.2-1.5s2.1-3.3 1.4-4.2c0-.1-.1-.1-.1-.2-.9-.8-2.9-.2-4.4 1.4z" fill="url(#F)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M139.6 130.5c.8-1-.1-2.9-1.9-4.2-1.7-1.2-3.6-1.5-4.4-.7l-.1.1c-.6.8-.1 2.1 1 3.2.3.3.6.6 1 .9.
2.2.5.3.7.5 1.4.9 3 1 3.7.2z" fill="url(#G)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M149 138.6c1.7.7 3.3.6 4.1 0 .2-.1.4-.3.4-.5.4-1.1-.9-2.7-2.9-3.5-2.1-.8-4.1-.6-4.5.5 0 .1-.1.3-.1.4-.1 1 1.1 2.3 3 3.1z" fill="url(#H)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M72 105.8c.7-.3 1.4-.6 2.1-1 3.2-1.6 6.7-5.7 6.9-5.8.4-.5.4-1.2-.1-1.6-.1-.1-.2-.1-.3-.2-.4-.2-.9-.1-1.3.3 0 0-1.6 1.8-3.5 3.4-.9.8-1.9 1.5-2.7 1.9-.1 0-.2.1-.3.1-.5.2-.9.4-1.3.6-3.6 1.6-6.2 2.1-6.3 2.1-.6.1-1 .7-.9 1.3 0 .1.1.2.1.2 3.3-.1 5.3-.6 5.3-.6h.3c.2-.1.5-.2.7-.3.4 0 .8-.2 1.3-.4z" fill="url(#I)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M11.6 117.5c-4.2-1-7.4-4.5-7.8-9.1-.3-2.9.6-5.6 2.3-7.6.5-.6 1.1-1.2 1.8-1.7l.8 7.7c.1.8.8 1.4 1.5 1.4h.2l2-.2 3.6-.4c.4 0 .8-.3 1-.6.3-.3.4-.7.3-1.1l-.8-7.7c3.2 1.5 5.5 4.6 5.9 8.3.3 2.9-.6 5.6-2.3 7.6-1 1.2-2.3 2.2-3.7 2.9l.4 3.7c.4.2.8.3 1.2.6l-.1-.6-.3-3.1c1.3-.7 2.5-1.7 3.4-2.8 1.9-2.4 2.8-5.4 2.5-8.4-.4-4-2.8-7.5-6.5-9.2l-1
.5-.6c-.2-.1-.3-.1-.5-.1h-.2c-.4 0-.8.3-1.1.6-.3.3-.4.8-.4 1.2l.8 7.9c0 .2-.1.3-.1.3 0 .1-.1.1-.3.2l-1.6.2-2 .2c-.3 0-.5-.2-.5-.4L9 99v-.2c-.1-.8-.8-1.5-1.6-1.5h-.2c-.2 0-.4.1-.6.2-1.3.7-2.4 1.7-3.3 2.8-1.9 2.4-2.8 5.4-2.5 8.4.5 4.7 3.7 8.5 8.1 9.9l.3 2.8c.8-.5 1.8-.8 2.9-1l-.5-2.9z" fill="url(#J)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M18.3 135.9l-.7-6.5c-1.1.8-2.4 1.3-3.5 1.5-.4.1-.7.1-1.1.2l.6 5.3c-1.5.7-2.7 1.7-3.7 2.9-1.7 2.1-2.6 4.8-2.3 7.6.4 3.8 2.7 6.8 5.9 8.3l-.8-7.7c0-.4.1-.8.3-1.1.3-.3.6-.5 1-.6l2-.2 3.6-.4h.2c.4 0 .8.1 1 .4.3.2.5.6.5 1l.8 7.7c.7-.5 1.3-1.1 1.8-1.7 1.7-2.1 2.6-4.8 2.3-7.6-.3-4.6-3.6-8.1-7.9-9.1z" fill="url(#K)" fill-rule="nonzero" transform="translate(81 15)"/><path fill="url(#L)" fill-rule="nonzero" d="M171.1 22.7l-.3-.8-1.6 1.4" transform="translate(81 15)"/><path fill="url(#M)" fill-rule="nonzero" d="M158.9 18.3l.3 1.1 2.2-1.9" transform="translate(81 15)"/><path d="M168.9 16.1l-.3-.9-2 .7-6.4 5.4c-.1.1-.2.1-.3.2l.6 1.8 8.1-6.9c.1-
.2.2-.3.3-.3z" fill="url(#N)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M161.1 25.2l.2.7 2.7-.9 5.8-4.9c.1-.1.2-.1.3-.2l-.6-1.8-8.1 6.9c-.1.1-.2.1-.3.2z" fill="url(#O)" fill-rule="nonzero" transform="translate(81 15)"/><path fill="url(#P)" fill-rule="nonzero" d="M165 37.1l.4 1.2 2.5-2.1" transform="translate(81 15)"/><path d="M170.3 41.7l-2.7 2.3c-.1.1-.2.1-.3.2l.6 1.8 2.6-2.2c-.2-.8-.2-1.5-.2-2.1z" fill="url(#Q)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M175.1 35l-.4-1.1-1.6.5-6.7 5.7c-.1.1-.2.1-.3.2l.6 1.8 8.1-6.9c.1-.1.2-.1.3-.2z" fill="url(#R)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M171.5 45.5l-2.6 2.2c-.1.1-.2.1-.3.2l.6 1.8 3.7-3.1c-.6-.3-1-.7-1.4-1.1z" fill="url(#S)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M164 25l5.2-1.7 1.6-1.4.3-.3c.4-.4.5-1 .1-1.5-.3-.3-.7-.4-1.1-.3-.1 0-.2.1-.3.2l-5.8 5z" fill="url(#T)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M166.6 15.8l-5.2 1.7-2.2 1.9-.3.3c-.4
.4-.5 1-.1 1.5l.3.3c.2.1.5.1.8.1.1 0 .2-.1.3-.2l6.4-5.6z" fill="url(#U)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M175 47.4c-.8-.2-1.6-.5-2.2-.9l-3.7 3.1-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.3.1.6.1.8 0 .1 0 .2-.1.3-.2l4.9-4.1z" fill="url(#V)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M173.2 34.5l-5.2 1.7-2.5 2.1-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.2.1.5.1.8.1.1 0 .2-.1.3-.2l6.7-5.8z" fill="url(#W)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M170.3 41.7c.1-1.1.6-2 .6-2 .1-.3.5-.4.7-.2.1 0 .1.1.2.1 1.1-1.3 2.8-2.3 4.5-3 .2-.4.2-.9-.1-1.2-.3-.3-.7-.4-1.1-.3-.1 0-.2.1-.3.2l-8.1 6.9-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.2.1.5.1.8.1.1 0 .2-.1.3-.2l2.6-2.5z" fill="url(#X)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M171.5 45.5c-.3-.4-.6-.7-.8-1.2-.1-.2-.2-.4-.2-.7l-2.6 2.2-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.2.1.5.1.8.1.1 0 .2-.1.3-.2l2.6-2.3z" fill="url(#Y)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M161.1 25.2c.1 0 .2-.1.3-.2l8.1-6.9.
3-.3c.4-.4.5-1 .1-1.5-.3-.3-.7-.4-1.1-.3-.1 0-.2.1-.3.2l-8.1 6.9-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.3 0 .5.1.8 0z" fill="url(#Z)" fill-rule="nonzero" transform="translate(81 15)"/><path fill="url(#aa)" fill-rule="nonzero" d="M165.6 4.8l-11 3.6 3 9.2 11-3.7" transform="translate(81 15)"/><path fill="url(#ab)" fill-rule="nonzero" d="M174.8 32.7l-3-9.1-11 3.6 3 9.2" transform="translate(81 15)"/><path d="M160.8 38.5l3.2-1.1.3 1-.2.1c-1.5.7-3.2 1.6-5.1 2.9-2.4 1.6-4.4 3.1-6.3 4.9-2.5 2.5-4.6 5.2-6.1 8.2-1.8 3.5-3 7.4-3.5 11.5 0 .4-.1.8-.1 1.3v3.9c-.1 1.1-.2 2.3-.4 3.8-.4 2.3-1.1 4.5-2 6.4-.4.8-.9 1.5-1.4 2.1-.4.5-.9 1-1.6 1.5-.9.7-1.9 1.1-3.1 1.3h-.1c-.5.1-.9.1-1.3.1h-.2c-.6 0-1.3-.1-1.8-.2h-.1c-1.2-.3-2.3-.9-3.2-1.7-.5-.4-.9-.9-1.3-1.4-.3-.4-.6-.9-1-1.5-.1-.1-.1-.3-.2-.4-.1-.1-.1-.2-.2-.4l-.3-.6-.1-.2-.1-.2v-.1l-.1-.2c0-.1-.1-.1-.1-.2-.1-.2-.2-.3-.2-.5v-.1c-.1-.3-.3-.5-.4-.8v-.1l-.3-.6c-.2-.3-.3-.6-.5-.9 0-.1-.1-.1-.1-.2-.1-.7-.1-1.5-.1-2.3 7.3-2.6 12.2-9.4 12.2-17.3 0-5.2-2.1-10-5.9-13.5v-1
.1c0-19.5-15.9-35.4-35.4-35.4S58.3 22.4 58.3 41.9V43c-3.3 3.1-5.4 7.2-5.8 11.6l2.2.9c.1-1.5.4-3 .9-4.4.4-1.1.9-2.2 1.5-3.2.2-.4.5-.7.7-1.1.5-.7 1.1-1.4 1.7-2 .3-.3.6-.6 1-.9 0-.7-.1-1.4-.1-2.1 0-2.3.2-4.5.7-6.7.2-1.1.5-2.1.8-3.2.5-1.6 1.1-3.1 1.8-4.5.5-1 1-1.9 1.5-2.8.6-.9 1.2-1.8 1.8-2.6.3-.4.6-.8 1-1.3 4.4-5.3 10.4-9.3 17.3-11 2-.5 4-.8 6.2-1 .7 0 1.4-.1 2.1-.1 2.1 0 4.1.2 6 .6.7.1 1.3.3 1.9.4.2.1.4.1.6.2 2.8.8 5.5 1.9 8 3.3 1.2.7 2.4 1.5 3.6 2.4 1.1.9 2.2 1.8 3.2 2.8 4 4 7 9.1 8.6 14.8.1.2.1.4.2.6.6 2.6 1 5.2 1 8 0 .7 0 1.4-.1 2.1 1.8 1.5 3.3 3.3 4.3 5.5 1 2.1 1.6 4.5 1.6 7 0 5.7-2.9 10.7-7.4 13.5-.7.5-1.5.9-2.3 1.3-.7.3-1.4.5-2.1.7-1.3.2-2.4.3-3 .3h-.5c-.3 0-.6.3-.6.6s.2.6.6.6h.3c.5 0 1.5-.1 2.8-.3.1 1.2.1 2.4.2 3.5.1.2.2.3.3.5.1.2.2.5.4.7.1.2.3.5.4.8.1.3.3.5.4.8.1.1.1.3.2.4.1.1.2.3.2.4.1.1.1.3.2.5s.2.3.2.5c.1.3.3.6.5.9l.6.9c.2.3.4.6.7.9.5.6 1 1.2 1.6 1.7 1 .8 2.1 1.5 3.3 1.9.3.1.5.2.8.3.7.2 1.5.3 2.2.3h.4c.6 0 1.2-.1 1.8-.2.7-.1 1.4-.3 2.1-.6.7-.3 1.3-.7 2-1.1.6-.5 1.3-1.1 1.9-
1.8.6-.7 1.2-1.6 1.7-2.6 1-2 1.8-4.4 2.3-7.1.2-1.3.4-2.7.5-4.1V68.8 67c0-.5.1-1.1.1-1.6.4-3.9 1.6-7.6 3.2-10.7.4-.8.8-1.5 1.3-2.2l1.5-2.1c.7-.9 1.5-1.8 2.2-2.6l.8-.8c2-1.9 4-3.4 5.8-4.6l.1-.1c1.4-.9 2.7-1.6 3.8-2.2.3-.2.7-.3 1-.5l1.3 3.9.4 1.1.6 1.7 1.4 4.3v.1c-1.1.9-2.3 1.4-3.2 1.4l-1.5 2.1c-.5.8-1 1.7-1.4 2.6-.4.9-.8 1.8-1.1 2.7-.1.5-.3.9-.4 1.4-.3 1.5-.5 3-.4 4.6v1.7c0 .4.1.8.1 1.2 0 .5.1.9.1 1.4.1 1.9.1 3.8 0 5.8v.4c1.1.3 1.6 2.3 1.1 4.4-.4 1.7-1.4 3-2.4 3.3-.4 1.4-.8 2.8-1.4 4.3-.2.5-.4 1-.7 1.6-.7 1.6-1.6 3.1-2.6 4.6-.7 1-1.5 2-2.3 2.9.2.1.4.2.5.4.5.7.2 1.9-.7 3 1.7-1.5 3.1-3.2 4.4-4.9 1.4-2 2.6-4.2 3.5-6.6 1.6-4 2.6-8.4 2.9-13.1.1-2 .1-4.1 0-6.1 0-.3 0-.7-.1-1v-.4l-.1-1.2V66.3v0-.1-.4-.3c0-2 .2-3.8.7-5.4.3-.9.7-1.8 1-2.4.4-.8.8-1.5 1.3-2.3.5-.7 1-1.5 1.5-2.2.5-.6 1-1.2 1.6-1.9.4.7 1 1.3 1.8 1.7.5.2 1.1.4 1.7.4.4 0 .8-.1 1.2-.2l4.4-1.4c1-.3 1.8-1 2.3-2 .5-.9.6-2 .2-3l-.2-.7c-.4.1-.7.2-1.1.2l.3.8c.5 1.5-.3 3.1-1.8 3.6l-4.4 1.4c-.3.1-.6.1-.9.1-1 0-2-.6-2.5-1.5-.3.1-.6.1-.8 0-.1-
.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.6-1.8c-.3.1-.5.1-.8-.1-.1-.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.6-1.8c-.3.1-.5.1-.8-.1-.1-.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.6-1.8c-.3.1-.5.1-.8-.1-.1-.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.4-1.2 2.9-1 5.2-1.7 1.6-.5.4 1.1c.4-.1.8 0 1.1.3.3.4.3.9.1 1.2.2-.1.3-.1.5-.2l-.3-.9-.6-2 3.2-1.1c.9-.3 1.6-.9 2-1.7.4-.8.5-1.7.2-2.6l-1.6-4.8c-.6-1.8-2.5-2.7-4.3-2.2l-3.2 1.1-2.5-7.5 3.2-1.1c.9-.3 1.6-.9 2-1.7.1-.2.2-.4.2-.6.1-.2.1-.4.1-.6 0-.4 0-.9-.2-1.3l-1.6-4.8c-.3-.9-.9-1.6-1.7-2-.8-.4-1.7-.5-2.6-.2l-18.3 6c-1.8.6-2.7 2.5-2.2 4.3l1.6 4.8c.3.9.9 1.6 1.7 2 .5.2 1 .4 1.5.4.4 0 .7-.1 1.1-.2l3.2-1.1 2.5 7.5-3.2 1.1c-.9.3-1.6.9-2 1.7-.4.8-.5 1.7-.2 2.6l1.6 4.8c.3.9.9 1.6 1.7 2 .4.2.9.3 1.4.3h.2c.3 1.9.6 1.8 1 1.7zm14.9-16.2c1.2-.4 2.5.3 2.9 1.5l1.6 4.8c.2.6.1 1.2-.1 1.7-.3.5-.7.9-1.3 1.1l-2.8.9-3-9.2 2.7-.8zm-6.2-18.8c.6-.2 1.2-.1 1.7.1.5.3.9.7 1.1 1.3l1.6 4.8c.2.6.1 1.2-.1 1.7-.3.5-.7.9-1.3 1.1l-2.8.9-3-9.2 2.8-.7zm-11.7 14.6l-3.4 1.1c-1.5.5-3.
1-.3-3.6-1.8l-1.6-4.8c-.5-1.5.3-3.1 1.8-3.6l3.4-1.1.2.5 11-3.6 3 9.2-11 3.6.2.5zm2.2 6.8c-.4-.4-.3-1.1.1-1.5l.3-.3-.6-1.8c-.3.1-.5.1-.8-.1-.1-.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.3-1 2.5-.8 5.2-1.7 2-.7.3.9c.4-.1.8 0 1.1.3.4.4.3 1.1-.1 1.5l-.3.3.6 1.8c.4-.1.8 0 1.1.3.4.4.3 1.1-.1 1.5l-.3.3.2.8-1.9.6L164 25l-2.7.9-.2-.7c-.3.1-.5.1-.8-.1-.1 0-.2-.1-.3-.2zm-3 11.3l-1.6-4.8c-.5-1.5.3-3.1 1.8-3.6l3.4-1.1.2.5 11-3.6 3 9.2-11 3.6.2.5-3.4 1.1c-1.5.5-3.1-.3-3.6-1.8z" fill="url(#ac)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M164 36.9l-.2-.5-3-9.2-.2-.5-3.4 1.1c-1.5.5-2.3 2.1-1.8 3.6l1.6 4.8c.5 1.5 2.1 2.3 3.6 1.8l3.4-1.1z" fill="url(#ad)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M154.4 7.9L151 9c-1.5.5-2.3 2.1-1.8 3.6l1.6 4.8c.5 1.5 2.1 2.3 3.6 1.8l3.4-1.1-.2-.5-3-9.2-.2-.5z" fill="url(#ae)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M253.5 27.7c.6-.2 1-.6 1.3-1.1.3-.5.3-1.2.1-1.7l-1.6-4.8c-.2-.6-.6-1-1.1-1.3-.5-.3-1.2-.3-1.7-.1l-2.8.9 3
9.2 2.8-1.1zM259.7 46.5c.6-.2 1-.6 1.3-1.1.3-.5.3-1.2.1-1.7l-1.6-4.8c-.4-1.2-1.7-1.8-2.9-1.5l-2.8.9 3 9.2 2.9-1z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M190.7 121.8c0-.2-.1-.4-.2-.6-.1-.3-.3-.5-.5-.7l-3.2-2.6c-.1-.1-.2-.1-.3-.2-.1-.1-.3-.1-.4-.2-.2-.1-.4-.1-.7-.1h-.2c-.4.1-.8.3-1.1.7l-2.2 2.7-.4-.4c-.9-.7-1.9-1.2-3-1.5-3-.8-6.3.2-8.7 2.5 1.8-.1 3.8.3 5.5 1.3.8-.2 1.5-.2 2.3 0 .6.1 1.1.4 1.5.8 1.5 1.2 1.9 3.4 1.1 5.5-.3.7-.8 1.4-1.5 2.3-.8.7-1.7 1.3-2.6 1.6-.9.3-1.8.3-2.6.1-.1 0-.1-.1-.2-.1-.5-.2-.9-.4-1.3-.7-.2-.2-.4-.3-.5-.5-.8 0-1.6 0-2.3-.1.1 0 .2.1.3.1.3.1.5.4.4.7-.1.2-.3.4-.5.4h-.1c-.7-.2-1.3-.4-1.9-.6l.6 1.2c-1.1-.3-2.9 0-4.3.8-1.9 1.1-3 2.9-2.4 3.9l.3.3c.8.7 2.6.6 4.3-.4 1.5-.9 2.9-2.2 3.1-3.2.2.2.4.4.6.5.3.2.5.4.8.6.7.4 1.4.7 2.2.9.1 0 .3 0 .4.1 3.3.7 6.9-.6 9.2-3.5.2-.2.3-.4.5-.7l3-3.7 4.6-5.6c.3-.6.5-1.1.4-1.6z" fill="url(#af)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M126.4 68.5l-.1-.1c-.2-.3-.5-.6-.8-.7-.2-.1-.3-.1-.5-.1h-.2l-.1-.1c-7.8-4.7-17.8
-11.7-21.3-17.9-.2-.5-.4-.9-.6-1.2-.5-.8-1.1-1.3-1.8-1.6-1.9-.8-4.5.3-7.3 3-2.9 2.8-5.5 7-7.5 11.8-3.9 9.7-3.8 19.3.3 20.9 1.2.5 2.7.3 4.3-.7l.1-.1c6.9-1.7 18.4.3 26.8 2.2h.2l.1.2c.2.2.4.4.6.5.4.2.8.1 1.3-.1l.2-.1h.2c.2.1.4.1.6.2 1.8-1.1 3.8-3.7 5.1-7 1.4-3.5 1.8-6.8 1.1-8.8-.2-.1-.4-.3-.7-.4v.1zm-23.7-6.6s0 .1 0 0c-.1.6-.3 1.2-.4 1.7 0 .1 0 .2-.1.3-.1.5-.3 1-.5 1.5 0 .1-.1.2-.1.3-.2.6-.4 1.2-.7 1.8-.2.6-.5 1.1-.7 1.7 0 .1-.1.2-.1.3-.3.5-.5 1-.8 1.5-2.9 5.3-6.6 8.7-9.6 8.7-.5 0-.9-.1-1.4-.3-1.9-.8-3-3.1-3-6.4-.1-3.2.7-7.1 2.3-11 1.6-3.9 3.7-7.2 6-9.5 2.4-2.4 4.8-3.3 6.7-2.5 2.8 1.2 3.7 6 2.4 11.9z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M39.9 69.8c-.2-.1-.4-.1-.6-.2h-.2l-.2.1c-.5.2-1 .2-1.3.1-.2-.1-.4-.3-.6-.5l-.1-.2h-.2c-8.4-1.9-19.9-3.8-26.8-2.2l-.1.1c-1.6.9-3.1 1.1-4.3.7-4.1-1.7-4.2-11.2-.3-20.9 2-4.8 4.6-9 7.5-11.8 2.7-2.6 5.4-3.7 7.3-3 .7.3 1.3.8 1.8 1.6.2.3.4.7.6 1.2 3.5 6.2 13.5 13.1 21.3 17.9l.1.1h.2c.2 0 .4 0 .5.1.3.1.5.3.8.7l.1.1.1.1c.2.1.5.3.7.4-.3-.9-.7-1.5-1.4-1.8
l1.9.8c-.2-.1-.3-.2-.5-.3-.3-.5-.7-.8-1.2-1-.2-.1-.5-.2-.8-.2-6.3-3.8-17.2-11.2-20.8-17.3-.2-.5-.4-.9-.7-1.3-.6-1-1.4-1.6-2.3-2-2.4-1-5.4.2-8.5 3.2-3 2.9-5.7 7.2-7.8 12.2C-.2 57.1.2 66.9 5 68.9c1.5.6 3.3.4 5.2-.7 6.6-1.6 17.8.3 26 2.1.3.3.6.5.9.7.5.2 1.1.2 1.7.1l-1.5-.6c.9 0 1.7-.2 2.6-.7z" fill="url(#ag)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M133.7 88l2.5 1c1.1.5 3.4-1.5 4.9-5.1 1.5-3.6 1.2-6.6.1-7.1l-2.5-1c0 1.9-.5 4.2-1.4 6.5-1 2.4-2.3 4.4-3.6 5.7z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M19.3 35c-1.9-.8-4.2.1-6.7 2.5-2.3 2.3-4.5 5.6-6 9.5-1.6 3.9-2.4 7.8-2.3 11 .1 3.4 1.2 5.7 3 6.4.4.2.9.3 1.4.3 3 0 6.8-3.4 9.6-8.7.3-.5.5-1 .8-1.5.1-.1.1-.2.1-.3.3-.5.5-1.1.7-1.7.2-.6.5-1.2.7-1.8 0-.1.1-.2.1-.3.2-.5.3-1 .5-1.5 0-.1 0-.2.1-.3.2-.6.3-1.1.4-1.7v-.1c1.3-5.8.4-10.6-2.4-11.8zm1.6 10.3c-.4 2.2-1 4.5-1.9 6.8-.9 2.3-2.1 4.4-3.3 6.2h-.1c-.9-.4-1.1-3.3.5-7.4.7-1.8 1.7-3.4 2.7-4.5.7-.8 1.4-1.2 1.9-1.2l.2.1c-.1-.1 0-.1 0 0z" fill="url(#ah)" fill-rule="nonzero" tran
sform="translate(81 15)"/><path d="M18.7 46.4c-1 1.1-2 2.7-2.7 4.5-1.6 4-1.4 7-.5 7.4h.1c1.3-1.8 2.4-4 3.3-6.2.9-2.3 1.6-4.6 1.9-6.8H20.5c-.4-.1-1.1.3-1.8 1.1z" fill="url(#ai)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M43.6 77.3c0-.1.1-.3.1-.4.1-.3.3-.5.6-.5.1 0 .2.1.3.2.2-.3.5-.5.7-.7.4-.5.8-.8 1.1-1.1.1-.1.3-.2.3-.2.1-.1.1-.1.2-.1s0 0 .1-.1H47.9c.2.1.3.1.5.1l.2.1c.9.4 2 0 3.2-.9.3-.2.6-.5.9-.8 1.3-1.3 2.6-3.3 3.5-5.7 1-2.4 1.4-4.7 1.4-6.5 0-.4 0-.9-.1-1.2-.2-1.4-.7-2.5-1.6-2.8l-1.8-.7-2.2-.9-1.9-.8-.8-.3-2.8-1.1-1.9-.8c.7.3 1.1.9 1.4 1.8.6 2 .3 5.4-1.1 8.8-1.3 3.3-3.3 5.9-5.1 7-.9.6-1.8.7-2.5.4l1.5.6h.1c-.1.2-.3.3-.4.5-.1.1-.2.2-.2.3 2.5 1.1 4.9 3.4 5.4 5.8z" fill="url(#aj)" fill-rule="nonzero" transform="translate(81 15)"/><g fill-rule="nonzero"><path d="M283.2 146.6l-6.8.9-5.3-38.5c-.4-3.1 1.6-6 4.7-6.7.2-.1.5.1.5.4l6.9 43.9z" fill="#C8C8CC"/><path d="M292.8 107.4c.2-.2.5-.2.6 0 2.1 2.3 2.1 5.9-.1 8.2L266.8 144l-5-4.7 31-31.9z" fill="#E1E1E6"/><path d="M.9 10.6
c-.1 2.6.8 4.9 2.6 6.5.9.8 1.9 1.4 3 1.8 3.5 1.2 7.5 0 10.2-2.9l.6-.6 8.6-9.2c.4-.4.6-.9.5-1.4 0-.5-.2-1-.6-1.4L22.7.5c-.2-.2-.5-.4-.7-.4-.2-.1-.5-.1-.7-.1-.5 0-1 .2-1.4.6l-2.5 2.6-.4-.4c-.9-.8-1.9-1.4-3-1.8C10.5-.2 6.5 1 3.8 3.9 2 5.7 1 8.1.9 10.6zm5.8-4c1.6-1.7 4.1-2.5 6-1.8.6.2 1.1.5 1.5.9 1.5 1.4 1.7 3.7.8 5.8-.4.7-.9 1.5-1.7 2.3-1.6 1.4-3.8 2-5.5 1.4-.6-.2-1.1-.5-1.5-.9-.9-.9-1.4-2.1-1.3-3.5 0-1.5.6-3 1.7-4.2z" transform="translate(246 133)" fill="url(#ak)"/><path d="M.7 3.7l1.7 12.5c0 .3 0 .6.1.9C3 21 5.6 24.2 9 25.3c1.2.4 2.4.5 3.7.3 4.9-.7 8.2-5.6 7.5-11-.5-3.9-3.1-7.1-6.5-8.2-1.2-.4-2.4-.5-3.7-.3-.2 0-.4.1-.6.1l-.5-3.6c-.1-.8-.7-1.4-1.4-1.6-.3-.1-.6-.1-.9-.1l-4.2.6c-.5.1-1 .4-1.3.8-.3.3-.5.8-.4 1.4zm11.7 6.5c2 .6 3.4 2.6 3.7 4.9.4 3.2-1.4 6.1-4 6.4-.6.1-1.3 0-1.9-.2-1.8-.6-3.1-2.2-3.6-4.3v-.1c-.1-1.1-.2-2-.1-2.8.4-2.2 2-4 4-4.2.6 0 1.3.1 1.9.3z" transform="translate(274 137)" fill="url(#al)"/><path d="M277.1 126c1.2 0 2.3.9 2.3 2.2 0 1.2-.9 2.3-2.2 2.3-1.3 0-2.3-.9-2.3-2.2
0-1.2.9-2.2 2.2-2.3z" fill="#C8C8CC"/></g><path d="M36.2 88.9s.1 0 0 0l.2-.2.1-.1c.1-.2.3-.4.5-.6.2-.3.5-.7.8-1.2.3-.5.5-1 .7-1.5.2-.5.4-1.1.6-1.7 0 0 0-.1.1-.1.1-.2.2-.5.3-.7 0-.1.1-.1.1-.2h-.4c-1.4 0-2.8-.4-4.1-.7-1.1-.3-2-.8-2.8-1.3-.1.2-.1.4-.2.6-.1.4-.2.7-.3 1-.1.3-.2.6-.2.9-.1.3-.1.7-.2 1 0 .2-.1.4-.1.6v2.6c.1.7.5 1.3 1 1.7.6.5 1.4.8 2.3.6.1 0 .2-.1.3-.1.2-.1.4-.1.6-.2.4-.1.6-.3.7-.4z" fill="url(#am)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M176.3 36.6c-1.7.6-3.4 1.7-4.5 3 .2.2.2.4.1.6 0 0-1 2-.2 3.7.5 1.2 1.8 2 3.8 2.5.3.1.5.4.4.7-.1.3-.3.4-.5.4h-.1c-.1 0-.1 0-.2-.1l-4.8 4.1c-.1.1-.2.1-.3.2.5.9 1.5 1.5 2.5 1.5.3 0 .6 0 .9-.1l4.4-1.4c1.5-.5 2.3-2.1 1.8-3.6l-.3-.8c.4-.1.7-.1 1.1-.2.7-.2 1.4-.5 2-.9 3.7-2.4 3.3-8.5-2-10.3-.6-.2-1.8-.1-3.1.3-.2 0-.3.1-.5.2s-.3.1-.5.2z" fill="url(#an)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M166.8 122.9s-2.6 2.9-1.9 5.4c.4 1.4 1.8 2.5 4.2 3.2.7.1 1.5.1 2.3.1h.1c.9 0 1.7-.1 2.5-.3 1-.2 2-.6 2.7-1.2.5-.4.9-.9 1
.2-1.5 1-2.6-.4-4.6-2.6-5.8-1.6-.9-3.7-1.4-5.5-1.3-.7 0-1.4.2-2 .4-.3.1-.6.3-1 .6.1.1.1.3 0 .4z" fill="url(#ao)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M35.5 80.8c2.9.9 4.8.9 6.1.1 1-.6 1.7-1.8 2-3.6-.5-2.4-2.8-4.7-5.3-5.7-.8-.3-1.6-.6-2.3-.6-1.5-.1-4.1 1-5.2 3 .2.1.3.4.2.6-.1.2-1.2 4.5 4.5 6.2z" fill="url(#ap)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M6.9 125.8s-.1 2.1 1.4 3.3c1.2 1 3.1 1.2 5.6.7 1.7-.4 3.9-1.5 4.9-3.3.6-1 .7-2.2.3-3.4-.1-.2 0-.4.2-.6-.3-.5-.8-.9-1.3-1.2l-1.2-.6-.4-3.7c1.5-.7 2.7-1.7 3.7-2.9 1.7-2.1 2.6-4.8 2.3-7.6-.4-3.8-2.7-6.8-5.9-8.3l.8 7.7c0 .4-.1.8-.3 1.1-.3.3-.6.5-1 .6l-3.6.4-2 .2h-.2c-.8 0-1.5-.6-1.5-1.4l-.8-7.7c-.7.5-1.3 1.1-1.8 1.7-1.7 2.1-2.6 4.8-2.3 7.6.5 4.5 3.7 8 7.8 9.1l.3 2.9c-1.1.2-2.1.5-2.9 1-.2.1-.3.2-.5.3-.8.6-1.7 2-2 3.5.3.2.4.4.4.6z" fill="url(#aq)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M170.9 39.7c0 .1-.4.9-.6 2-.1.6-.1 1.3.1 2 .1.2.1.4.2.7.2.4.5.8.8 1.2.4.4.8.7 1.3 1 .6.4 1.3.6 2.2.
9.1 0 .1 0 .2.1h.1c.3 0 .5-.2.5-.4.1-.3-.1-.6-.4-.7-1.9-.5-3.2-1.3-3.8-2.5-.8-1.7.2-3.7.2-3.7.1-.2.1-.5-.1-.6 0 0-.1-.1-.2-.1 0-.3-.3-.2-.5.1z" fill="url(#ar)" fill-rule="nonzero" transform="translate(81 15)"/></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_customize.svg b/browser/extensions/onboarding/content/img/figure_customize.svg
deleted file mode 100644
index 0c0cb30df5dc..000000000000
--- a/browser/extensions/onboarding/content/img/figure_customize.svg
+++ /dev/null
@@ -1,561 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="295" height="238">
- <defs>
- <linearGradient id="a" x1="-678.179817%" x2="218.03211%" y1="-1879.5122%" y2="503.09878%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="b" x1="-2438.15968%" x2="713.035484%" y1="-2346.83281%" y2="705.8875%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="c" x1="-1876.47349%" x2="477.431325%" y1="-2215.7169%" y2="536.030986%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="d" x1="-300.502319%" x2="326.878731%" y1="-277.869139%" y2="301.876261%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="e" x1="-556.386842%" x2="471.897895%" y1="-1050.94952%" y2="809.757143%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="f" x1="-2301.11875%" x2="1769.175%" y1="-4460.38%" y2="3354.584%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="g" x1="-14090.38%" x2="5447.03%" y1="-14085.94%" y2="5451.47%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="h" x1="-1245.88053%" x2="483.093805%" y1="-2962.82857%" y2="1024.39796%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="i" x1="-4762.32308%" x2="1072.27051%" y1="-2525.31233%" y2="591.799315%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="j" x1="-419.785061%" x2="175.867683%" y1="-263.047589%" y2="146.541719%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="k" x1="-13945.16%" x2="5592.25%" y1="-13931.16%" y2="5606.26%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="l" x1="-93.8791876%" x2="171.036409%" y1="-368.29%" y2="383.149231%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="m" x1="-105.119971%" x2="175.589943%" y1="-106.702736%" y2="160.566895%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="n" x1="-4526.45652%" x2="3968.06957%" y1="-3864.98889%" y2="3371.08889%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="o" x1="-1590.58053%" x2="2387.43252%" y1="-835.835705%" y2="1325.72397%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="p" x1="-1174.27536%" x2="1657.23333%" y1="-1275.87873%" y2="1781.26242%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="q" x1="-8557.56%" x2="10979.85%" y1="-4234.38%" y2="5534.325%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="r" x1="-949.737079%" x2="1245.47865%" y1="-1023.81277%" y2="1336.75514%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="s" x1="-850.555238%" x2="1010.15048%" y1="-759.279881%" y2="912.10717%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="t" x1="-2526.775%" x2="962.048214%" y1="-2513.94763%" y2="949.261152%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="u" x1="-953.117868%" x2="406.88755%" y1="-1083.71008%" y2="471.112383%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="v" x1="-1736.94827%" x2="671.463404%" y1="-2238.58822%" y2="855.656147%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="w" x1="-9592.54%" x2="9944.87%" y1="-9613.77%" y2="9923.64%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="x" x1="-546.9251%" x2="669.232184%" y1="-637.97868%" y2="716.339388%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="y" x1="-2626.25%" x2="2515.17368%" y1="-10166.57%" y2="9370.85%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="z" x1="-26076.58%" x2="9092.02%" y1="-26064.58%" y2="9104.02%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="A" x1="-11996.8348%" x2="3293.86087%" y1="-4084.84179%" y2="1164.20299%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="B" x1="-1988.44219%" x2="759.104687%" y1="-1576.81875%" y2="621.219375%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="C" x1="-4889.30185%" x2="1623.40185%" y1="-2351.25495%" y2="817.087387%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="D" x1="-2655.5559%" x2="951.48%" y1="-6714.61282%" y2="2302.97692%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="E" x1="-11418.996%" x2="2648.448%" y1="-28603.67%" y2="6564.93%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="F" x1="-1067.54883%" x2="792.163033%" y1="-899.682353%" y2="691.657014%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="G" x1="-3245.82558%" x2="2272.05861%" y1="-2753.32267%" y2="1935.824%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="H" x1="-835.133806%" x2="827.684161%" y1="-835.133806%" y2="827.684161%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="I" x1="-4541.82131%" x2="1223.52295%" y1="-2322.54576%" y2="657.84322%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="J" x1="-2057.47051%" x2="889.742903%" y1="-1738.77914%" y2="791.335971%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="K" x1="-1278.62667%" x2="1189.34526%" y1="-1278.9986%" y2="1188.97333%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="L" x1="-6112.0075%" x2="2680.1425%" y1="-6270.03333%" y2="2747.55641%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="M" x1="-1115.93023%" x2="572.391158%" y1="-1175.6355%" y2="582.7945%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="N" x1="-9656.07586%" x2="2471.02759%" y1="-9322.84667%" y2="2400.02%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="O" x1="-7887.73698%" x2="3321.17237%" y1="-6188.2325%" y2="2603.9175%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="P" x1="-984.783738%" x2="288.77261%" y1="-1902.68288%" y2="506.125342%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="Q" x1="-2522.67732%" x2="1102.95155%" y1="-5039.01837%" y2="2138.24694%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="R" x1="-5921.7225%" x2="2870.4275%" y1="-6075.45385%" y2="2942.1359%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="S" x1="-5881.53%" x2="2910.62%" y1="-5881.26%" y2="2910.89%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="T" x1="-5841.3375%" x2="2950.8125%" y1="-5841.4525%" y2="2950.6975%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="U" x1="-7423.23691%" x2="3785.67244%" y1="-5801.6425%" y2="2990.5075%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="V" x1="-4020.34%" x2="1003.74571%" y1="-2527.16182%" y2="669.983636%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="W" x1="-4517.96032%" x2="1064.35714%" y1="-5480.38654%" y2="1282.80577%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="X" x1="-3834.66828%" x2="2163.11753%" y1="-3992.49299%" y2="2248.99581%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="Y" x1="-132.800878%" x2="141.123835%" y1="-126.933901%" y2="145.268963%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="Z" x1="-8624.4%" x2="10913.01%" y1="-4751.06111%" y2="6103.05556%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="aa" x1="-20576.83%" x2="14591.77%" y1="-11391.2944%" y2="8146.81667%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ab" x1="-3210.85073%" x2="1716.38147%" y1="-3721.57455%" y2="1963.19067%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ac" x1="-964.539164%" x2="305.324758%" y1="-1877.16986%" y2="531.638356%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ad" x1="-5971.9075%" x2="2820.24%" y1="-7463.6%" y2="3526.5875%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ae" x1="-3626.20024%" x2="2128.73795%" y1="-3780.54791%" y2="2217.23789%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="af" x1="-3545.17742%" x2="2127.17742%" y1="-3793.28448%" y2="2270.26724%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ag" x1="-8571.16538%" x2="4955.21923%" y1="-4812.20217%" y2="2833.14565%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ah" x1="-921.592388%" x2="295.314187%" y1="-948.070803%" y2="335.454745%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ai" x1="-1521.4596%" x2="706.721231%" y1="-1247.46875%" y2="591.922626%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aj" x1="-678.258824%" x2="423.307164%" y1="-682.475952%" y2="429.068947%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ak" x1="-6036.96%" x2="2755.19%" y1="-6038.3275%" y2="2753.82%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="al" x1="-876.033667%" x2="359.821607%" y1="-805.490909%" y2="336.346753%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="am" x1="-6523.57663%" x2="4813.74946%" y1="-5038.58141%" y2="3749.13318%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="an" x1="-2645.94937%" x2="963.166315%" y1="-6683.46667%" y2="2334.12564%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ao" x1="-6631.98345%" x2="4705.34265%" y1="-5121.96932%" y2="3665.74527%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ap" x1="-1435.66843%" x2="1068.42563%" y1="-2846.04456%" y2="2010.54343%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aq" x1="-2633.78646%" x2="975.329221%" y1="-6654.88205%" y2="2362.70769%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ar" x1="-2206.3925%" x2="2189.6825%" y1="-2444.83034%" y2="2406.01103%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="as" x1="-5385.00363%" x2="1874.66412%" y1="-10484.884%" y2="3582.556%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="at" x1="-2391.91311%" x2="1397.1783%" y1="-5593.4125%" y2="3198.7375%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="au" x1="-2264.71662%" x2="1521.15732%" y1="-5306.3925%" y2="3485.7575%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="av" x1="-8124.26538%" x2="5402.11923%" y1="-4560.45%" y2="3084.89783%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aw" x1="-651.882139%" x2="479.56521%" y1="-1403.71323%" y2="934.962067%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ax" x1="-782.651586%" x2="579.099454%" y1="-1688.18577%" y2="1133.37245%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="ay" x1="-2808.00445%" x2="930.963547%" y1="-4874.39455%" y2="1519.89636%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="az" x1="-3080.27111%" x2="827.351111%" y1="-4651.45333%" y2="1209.98%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aA" x1="-17842.03%" x2="17326.57%" y1="-17824.13%" y2="17344.47%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aB" x1="-4927.80617%" x2="7466.4141%" y1="-2177.67416%" y2="3371.61183%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aC" x1="-20583.89%" x2="14584.71%" y1="-5842.07714%" y2="4206.09429%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aD" x1="-13953.96%" x2="21214.64%" y1="-2172.57143%" y2="3409.74603%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aE" x1="-13796.3%" x2="21372.3%" y1="-1986.00882%" y2="3185.84412%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aF" x1="-13888.17%" x2="21280.43%" y1="-2353.96379%" y2="3709.58793%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aG" x1="-9372.00909%" x2="6613.71818%" y1="-2958.36812%" y2="2138.53043%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aH" x1="-16384.5222%" x2="12067.4729%" y1="-4573.9%" y2="3418.96364%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aI" x1="-17462.5%" x2="5983.23333%" y1="-13777.5842%" y2="4732.21053%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aJ" x1="-7480.69%" x2="7500.95%" y1="-7483.33%" y2="7498.32%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aK" x1="-7021.27187%" x2="3968.91562%" y1="-20520.9909%" y2="11450.4636%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aL" x1="-9826.0913%" x2="5464.60435%" y1="-22671.15%" y2="12497.45%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aM" x1="-2964.13075%" x2="2873.3758%" y1="-3993.57709%" y2="3854.15587%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aN" x1="-2330.22879%" x2="2205.28384%" y1="-2914.60952%" y2="2667.70794%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aO" x1="-1407.98283%" x2="1424.97017%" y1="-1728.51863%" y2="1719.38333%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aP" x1="-1807.9102%" x2="1780.72245%" y1="-2740.56%" y2="2669.99385%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aQ" x1="-1472.82%" x2="1783.415%" y1="-4365.0426%" y2="5068.41814%">
- <stop stop-color="#FFFBCC" offset="0%"/>
- <stop stop-color="#FFC9D5" offset="100%"/>
- </linearGradient>
- <linearGradient id="aR" x1="-511.087979%" x2="436.292949%" y1="-431.133333%" y2="359.905%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- <linearGradient id="aS" x1="-2336.83483%" x2="1396.15506%" y1="-7055.5%" y2="4019.03333%">
- <stop stop-color="#FFE900" offset="18.75%"/>
- <stop stop-color="#FF0039" offset="100%"/>
- </linearGradient>
- </defs>
- <g fill="none" fill-rule="evenodd">
- <path d="M149.5 168.5c-.1 0-.1.1-.2.1l-3.3 1.5c-.2.1-.3.1-.5.2.7.3 1.4.5 2.2.5 1.6 0 3.1-.7 4.2-1.9 1-1.1 1.4-2.5 1.3-4-.1-.9-.3-1.7-.7-2.4l-1.6 4.4c-.3.6-.8 1.2-1.4 1.6zM178.7 206.1c-.1-.1-.2-.3-.2-.4l-2 2.7 3.1 1.1-.8-2.6c-.1-.2-.1-.5-.1-.8zM240.6 207.9h0zM168.5 200.6h-.2c-.2.2-.5.3-.7.4l-2.5.7.2.8c1.1.7 2 1.7 2.5 2.9l1 .4 3.7-5c.9-1.2 2.2-1.9 3.7-2l-.1-.3-2.5.7c-.2.1-.4.1-.6.1h-.2c-.2.2-.5.3-.7.4l-3.1.9c-.1-.1-.3 0-.5 0zM146.9 159.8c.1.1.2.1.3.2 0-.1.1-.2.1-.3-.1 0-.2 0-.4.1zM143.3 112.9c.2-.3.4-.6.7-.8l4.4-2.8-.1-.1-4.2 2.7c-.3.2-.6.6-.8 1zM142.2 166c.3-.5.7-1 1.3-1.2h.1l.2-.1-1.9-.7c.2.4.2.8.2 1.3 0 .2.1.4.1.7zM200.9 117.6c-1.9 0-3.2 1-3.9 1.7.7-.7 2-1.7 3.9-1.7zM206.8 158.8c-.1 0-.1.1-.2.1.1 0 .1 0 .2-.1zM174.5 190.8c.2-.1.4-.1.6-.1h.2c.2-.2.5-.3.7-.4.5-.2 1-.2 1.6-.2 2.4 0 4.5 1.5 5.2 3.9.1.3.1.5.1.8.2.2.3.5.4.7l.9 3.1c.1.3.1.5.1.8.2.2.3.5.4.7l.3 1.1c.3.2.6.4.9.7-1.7-3.9-2.3-8.6-1.6-13.7-1.1.2-2.3.3-3.5.3-3.4 0-6.8-1-9.7-2.8-.7-.5-1.4-1-2.1-1.6 1.7 2.3 3.5 4.6 5.3 6.7h.2z
M143.4 119.9c-1.1-.3-2-.8-2.8-1.6l-.7.5v.1l.7-.4c.8.7 1.7 1.2 2.8 1.4.4.2.9.2 1.3.2 1.4 0 2.7-.5 3.8-1.3-1.1.8-2.4 1.3-3.7 1.3-.5 0-.9-.1-1.4-.2zM198.7 120.8c.4-.4 1.2-.9 2.2-.9-1 0-1.8.5-2.2.9zM213.3 214.1c-1 0-2 0-3-.1 1.2 4.1 1.9 6.8 2.2 8.8 3.2-.1 6.5-.2 9.9-.2-.1-1.7-.1-3.8-.1-6.6l-7-2c-.6.1-1.3.1-2 .1zM275.4 138.9l.9-.3c-.1-.7.1-1.4.4-2.1-1.5 2-3.5 3.6-5.8 4.5.1 0 .1.1.2.1.2-.2.5-.3.7-.4 1.1-.7 2.4-1.3 3.6-1.8zM139.9 151.5c.5-.3 1.1-.5 1.7-.5.3 0 .7.1 1 .2.7.3 1.3.8 1.6 1.5.1.1.1.3.1.4 1-.3 2-.4 3-.4-2.2-4.2-4.8-9.7-7.4-15.2v14z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M227.5 226.4c.1.1.1.1.2.1 0 0-.1 0-.2-.1z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M228.2 231c-1.2 0-2.4-.4-3.4-1.2-1.3-1.1-2.1-2-2.4-7.2-3.4 0-6.7.1-9.9.2.6 3.3.2 4.4-.7 5.6-1 1.4-2.6 2.2-4.3 2.2-2.9 0-5.3-2.1-9.6-7-15.1 1.3-25.3 3.8-25.3 6.6 0 4.3 23.1 7.7 51.6 7.7s51.6-3.4 51.6-7.7c0-3.6-16.7-6.7-39.3-7.5-2.3 5.7-5.1 8.3-8.3 8.3z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M158.9 75.5h13.4c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-13.4c-.3 0-.6.2-.6.6.1.4.3.6.6.6zM155.4 85.7c0-.3-.2-.6-.6-.6h-13.4c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h13.4c.3-.1.6-.3.6-.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M134.3 114.7l.6-.4.4-.2c0-.7.1-1.3.2-2 0-.1.1-.2.1-.4-.4-.9-.8-2-1.2-3v6h-.1zM131.8 102.3c-.1-.3 0-.6.3-.7.3-.1.6 0 .7.3l.3.9V67h-13c.7 2.2 1.8 5.2 3.1 8.8.1.3 0 .6-.3.7h-.2c-.2 0-.4-.1-.5-.4-1.3-3.8-2.4-7-3.2-9.2h-3.4c1.1 3.8 3.1 10.1 5.8 18.2l-.1-.5c1.6 4.4 8.9 24.1 11.5 31l.4-.3v-9.5c-.6-1.4-1.1-2.7-1.4-3.5zM121.2 91.2c-3.9-10.9-6.6-19.6-7.9-24.2H7.1v98.7c0 .6 0 .9.1 1 .1 0 .4.1 1 .1h124c.6 0 .9 0 1-.1 0-.1.1-.4.1-1v-38.4l-1.6 1-.4.2c-.3.2-.6.4-1 .6-.6.3-1.2.4-1.9.4h-.2c-2 0-3.8-1.2-4.6-3-1-2.2-.3-4.7 1.5-6 .2-.2.5-.3.7-.5l2.3-1.4 2.7-1.7c-2.5-6.4-7-18.6-9.6-25.7zm-25.6 27.1h-7.1c-.5 2.1-1.4 4-2.6 5.8l5.1 5.1c1.2 1.6 1.2 3.6.1 5.1-.8 1.1-2 1.7-3.4 1.7-.9 0-1.8-.3-2.5-.8L80 130c-1.8 1.1-3.8 1.8-5.8 2.3v7.1c0 2.3-1.9 4.2-4.2 4.2-2.3 0-4.2-1.9-4.2-4.2V132c-2-.4-4-1.2-5.8-2.3l-4.7 5.1c-.2.3-.5.6-.8.8-.7.6-1.6.8-2.5.8-1.3 0-2.6-.6-3.4-1.7-1.4-1.9-1-4.5.8-5.9l5-4.7c-1.1-1.8-1.8-3.7-2.3-5.8H45c-2.3 0-4.2-1.9-4.2-4.2 0-2.3 1.9-4.2 4.2-4.2h7.1c
.4-2.1 1.2-4 2.3-5.8l-5.1-4.7c-.9-.9-1.3-2-1.3-3.2 0-1.2.5-2.3 1.3-3.1.8-.8 2-1.3 3.1-1.3 1.2 0 2.3.5 3.1 1.3l4.7 5.1c1.8-1.1 3.7-1.8 5.8-2.3v-7.1c0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.2 1.9 4.2 4.2v7.1c2.1.4 4 1.2 5.8 2.3l5.1-5.1c.8-.6 1.7-.9 2.6-.9.9 0 1.8.3 2.5.8.9.7 1.5 1.7 1.6 2.8.2 1.1-.1 2.2-.8 3.1l-5.1 5.1c1.1 1.8 1.8 3.8 2.3 5.8h7.1c2.3 0 4.2 1.9 4.2 4.2.2 2.4-1.7 4.3-4.1 4.3zm28.9-11.5c.3-.1.6.1.7.3l1.7 4.7c.1.3-.1.6-.3.7h-.2c-.2 0-.4-.1-.5-.4l-1.7-4.7c-.1-.2.1-.5.3-.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M70.3 103.8c-5.6 0-10.2 4.6-10.2 10.2s4.6 10.2 10.2 10.2 10.2-4.6 10.2-10.2c.1-5.6-4.5-10.2-10.2-10.2zM137.7 124.4l-.9.6.9 2.1v-2.7zM135.3 121.7s0 .1 0 0l2.4-1.5v-.1l-2.4 1.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M134.8 126.3l-.5.3v39.1c0 1.9-.3 2.2-2.2 2.2H8.1c-1.9 0-2.2-.3-2.2-2.2V65.8h107c-.2-.8-.4-1.4-.4-1.8-.1-.6.3-1.2.9-1.3.6-.1 1.2.3 1.3.9.1.4.3 1.2.6 2.2h3.4l-.8-2.4c-.1-.3.1-.6.4-.7.3-.1.6.1.7.4 0 0 .3 1 .9 2.7h14.5v39.7c.6 1.5 1.3 3.1 1.8 4.4.4-.9.9-1.6 1.6-2.3V49.7c0-2.3-1.9-4.2-4.2-4.2H6.8c-2.3 0-4.2 1.9-4.2 4.2v118c0 2 1.8 3.7 3.9 3.7h127.3c1 0 1.9-.4 2.6-.9-.8-1.6-1.2-3.4-1.3-5.3 0-1.5.9-2.7 2.2-3.3-.8-.8-1.1-2-.7-3.1l1.1-2.9v-23.4c-1-2.1-2-4.3-2.9-6.2zm-18.1-73.5c.3-.1.5 0 .6.3l1.9 5.3v.1c.1.3-.1.5-.4.6h-.1c-.2 0-.4-.1-.4-.3l-1.9-5.3c-.1-.4.1-.6.3-.7zm-1.7.4c0-.3.2-.5.5-.5s.5.2.5.5v5.3c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-5.3zm-1.5.5c0-.3.2-.5.5-.5s.5.2.5.5v4.8c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-4.8zm-1.4-1c0-.3.2-.5.5-.5s.5.2.5.5v5.8c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-5.8zm-77.7 2.7c0-1.7 1.4-3.1 3.1-3.1h63.6c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1H37.5c-1.7 0-3.1-1.4-3.1-3.1v-.3zM22 52.7c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3
-2.9-2.9.1-1.6 1.3-2.9 2.9-2.9zm-9.2 0c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9.1-1.6 1.3-2.9 2.9-2.9z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M129.1 125.6c-.1.1-.2.2-.4.2-.2.1-.4.1-.6.1.2 0 .4 0 .6-.1.2 0 .3-.1.4-.2l4.1-2.5v-.1l-4.1 2.6z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M137.7 120.2v.1l2.2-1.5M139 115.8c-.2-.5-.2-1-.3-1.5 0 .5.1 1 .3 1.5z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M133.8 171.4H6.5c-2.2 0-3.9-1.6-3.9-3.7v-118c0-2.3 1.9-4.2 4.2-4.2h126.6c2.3 0 4.2 1.9 4.2 4.2V107.6c.6-.7 1.4-1.3 2.2-1.8V81.2h27.6c.1-.2.2-.4.2-.6 0-.2.3-.2.3 0 .1.2.1.4.2.6h14.5c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1h-42.8V49.7c0-3.6-2.9-6.5-6.5-6.5H6.8c-3.6 0-6.5 2.9-6.5 6.5v118c0 3.3 2.8 5.9 6.1 5.9h127.3c1.4 0 2.7-.5 3.7-1.2-.4-.6-.8-1.3-1.1-1.9-.7.5-1.6.9-2.5.9z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M137.7 127.1l-.9-2.1-1.9 1.2c.9 2 1.9 4.1 2.9 6.3V156l1.2-3.2c.2-.5.6-1 1-1.3v-14.1c2.6 5.5 5.2 11 7.4 15.2h.4c.7 0 1.4.1 2.1.2-3.1-6.1-6.1-12.1-8.7-17.9-.2-.5-.7-1.5-1.2-2.7V123l-2.2 1.4v2.7h-.1z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M134.3 65.8h-14.5c-.6-1.7-.9-2.7-.9-2.7-.1-.3-.4-.4-.7-.4-.3.1-.4.4-.4.7l.8 2.4h-3.4c-.3-1-.5-1.8-.6-2.2-.1-.6-.7-1-1.3-.9-.6.1-1 .7-.9 1.3.1.4.2 1 .4 1.8H6v99.8c0 1.9.3 2.2 2.2 2.2h124c1.9 0 2.2-.3 2.2-2.2v-39.1l-1.1.7v38.4c0 .6 0 .9-.1 1-.1 0-.4.1-1 .1H8.2c-.6 0-.9 0-1-.1 0-.1-.1-.4-.1-1V67h106.2c1.3 4.6 4 13.3 7.9 24.2h.1c2.5 7.2 7.1 19.3 9.6 25.7l2-1.2c-2.7-6.9-9.9-26.7-11.5-31l.1.5c-2.8-8.1-4.7-14.4-5.8-18.2h3.4c.8 2.2 1.8 5.4 3.2 9.2.1.2.3.4.5.4h.2c.3-.1.4-.4.3-.7-1.3-3.6-2.3-6.6-3.1-8.8h13v35.8l-.3-.9c-.1-.3-.4-.4-.7-.3-.3.1-.4.4-.3.7.3.8.8 2.1 1.4 3.5v9.5l.2-.1.9-.6v-6c.4 1.1.8 2.1 1.2 3l.6-1.8c-.5-1.3-1.2-2.9-1.8-4.4V65.8h-.1zM12.8 58.4c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9.1 1.7 1.3 2.9 2.9 2.9zM22 58.4c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9.1 1.7 1.3 2.9 2.9 2.9zM37.5 58.8h63.6c1.7 0 3.1-1.4 3.1-3.1v-.3c0-1.7-1.4-3.1-3.1-3.1H37.5c-1.7 0-3.1 1.4-3.1 3.1v.3c0 1.7 1.4 3.1 3
.1 3.1z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M95.6 109.8h-7.1c-.4-2.1-1.2-4-2.3-5.8l5.1-5.1c.7-.9 1-2 .8-3.1-.2-1.1-.7-2.1-1.6-2.8-.7-.6-1.6-.8-2.5-.8-.9 0-1.8.3-2.6.9l-5.1 5.1c-1.8-1.1-3.7-1.8-5.8-2.3v-7.1c0-2.3-1.9-4.2-4.2-4.2-2.3 0-4.2 1.9-4.2 4.2v7.1c-2.1.4-4 1.2-5.8 2.3l-4.7-5.1c-.8-.8-2-1.3-3.1-1.3-1.2 0-2.3.5-3.1 1.3-.8.8-1.3 2-1.3 3.1 0 1.2.5 2.3 1.3 3.2l5.1 4.7c-1.1 1.8-1.8 3.7-2.3 5.8H45c-2.3 0-4.2 1.9-4.2 4.2 0 2.3 1.9 4.2 4.2 4.2h7.1c.4 2.1 1.2 4 2.3 5.8l-5 4.7c-1.9 1.4-2.2 4.1-.8 5.9.8 1.1 2 1.7 3.4 1.7.9 0 1.8-.3 2.5-.8.3-.2.6-.5.8-.8l4.7-5.1c1.8 1.1 3.7 1.8 5.8 2.3v7.4c0 2.3 1.9 4.2 4.2 4.2 2.3 0 4.2-1.9 4.2-4.2v-7.1c2.1-.4 4-1.2 5.8-2.3l5.1 5.1c.7.6 1.6.8 2.5.8 1.3 0 2.6-.6 3.4-1.7 1.1-1.5 1.1-3.6-.1-5.1l-5.1-5.1c1.2-1.8 2.1-3.7 2.6-5.8h7.1c2.3 0 4.2-1.9 4.2-4.2.2-2.3-1.7-4.2-4.1-4.2zm-25.3 14.5c-5.6 0-10.2-4.6-10.2-10.2s4.6-10.2 10.2-10.2 10.2 4.6 10.2 10.2c.1 5.6-4.5 10.2-10.2 10.2zM115.3 21.3h1.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-1.1c-.3 0-.6.2-.6.6 0 .4.3.6.6.
6zM126.4 21.3h4.5c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-4.5c-.3 0-.6.2-.6.6.1.4.3.6.6.6zM34.1 20.6h13.4c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6H34.1c-.3 0-.6.2-.6.6.1.4.3.6.6.6zM82 8.5c.1.1.3.2.4.2.1 0 .2 0 .3-.1.2-.2.3-.5.1-.8-.7-.9-1.5-1.8-2.3-2.5-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.8.7 1.6 1.5 2.3 2.4zM109.7 21c.1.2.3.3.5.3h.6c.3 0 .6-.2.6-.6 0-.4-.2-.6-.6-.6h-.3c-.2-.4-.6-1.2-1.2-2.1-.2-.3-.5-.3-.8-.2-.3.2-.3.5-.2.8.9 1.3 1.3 2.2 1.4 2.4zM59.6 4.4c.1 0 .2 0 .3-.1 1.6-1.2 3.7-2.1 6.4-2.4 2.1-.3 4-.2 5.9.2.3.1.6-.1.7-.4.1-.3-.1-.6-.4-.7-2-.4-4.1-.5-6.3-.2-2.9.4-5.2 1.3-6.9 2.7-.2.2-.3.5-.1.8 0 0 .2.1.4.1zM91.5 7.8c1.3-.4 2.7-.5 4.3-.2 2.3.4 4.8 1.8 7.2 4.1.1.1.2.2.4.2.1 0 .3-.1.4-.2.2-.2.2-.6 0-.8-2.6-2.5-5.2-3.9-7.7-4.4-1.8-.3-3.4-.3-4.9.2-.3.1-.4.4-.4.7.1.4.4.5.7.4zM84.9 13c.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.3-.7-.1-.3-.3-.6-.5-1-.1-.3-.5-.4-.8-.2-.3.1-.4.5-.2.8.2.3.3.7.5.9zM56.2 14.5c.1 0 .1 0 0 0 .4 0 .6-.3.6-.6 0-.4-.1-.7-.1-1.1 0-.3-.3-.5-.6-.5H56c-.2.1-.4.3-.4.6 0 .4.1.8.1 1.1 0 .1 0 .
1.1.2 0 .2.2.3.4.3zM58.3 20.4c.1-.2.1-.4 0-.5 0 0-.3-.7-.6-1.7-.1-.3-.4-.5-.7-.4-.3.1-.5.4-.4.7.1.4.3.7.4 1h-.7c-.2.1-.4.3-.4.5 0 .3.2.6.6.6H57.9c.2 0 .3-.1.4-.2z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M33.7 25.5h97.9c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1h-22.8c-2-3.7-7.1-11.7-13.4-12.9-8.4-1.6-10 6.7-10 6.7S79.8 2.6 65.8 4.5c-6.5.9-9 4.2-9.8 7.8h.1c.3 0 .6.2.6.5 0 .4.1.7.1 1.1 0 .3-.2.6-.5.6h-.1c-.2 0-.4-.1-.5-.3-.1 1.9.1 3.8.5 5.3H57c-.1-.3-.2-.6-.4-1-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.7.6 1.7.1.2.1.4 0 .5-.1.2-.3.3-.5.3h-1.3c.4 1.5.9 2.5.9 2.7H33.7c-.6 0-1.1.5-1.1 1.1 0 .5.5 1 1.1 1z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M205.5 42.3c.1 0 .3-.1.4-.2.6-.7 1.5-1.1 2.6-1.4.3-.1.5-.4.4-.7-.1-.3-.4-.5-.7-.4-1.3.4-2.4.9-3.1 1.7-.2.2-.2.6 0 .8.1.2.3.2.4.2zM212.7 40.5c.4.1.7.2 1 .3h.2c.2 0 .5-.1.5-.4.1-.3-.1-.6-.4-.7-.4-.1-.8-.2-1.1-.3-.3-.1-.6.1-.7.4 0 .4.2.7.5.7zM238.3 50.7h3.3c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-3.3c-.3 0-.6.2-.6.6 0 .4.3.6.6.6zM221.2 46.7c.3-1 1.2-3.2 3.8-3.2.3 0 .7 0 1 .1 1.6.3 3.2 1.3 4.8 3 .2.2.6.2.8 0 .2-.2.2-.6 0-.8-1.8-1.9-3.6-3-5.4-3.4-.4-.1-.8-.1-1.2-.1-3.5 0-4.6 3-4.9 4-.1.3.1.6.4.7h.2c.1 0 .2 0 .3-.1.1.1.2 0 .2-.2zM205.5 50.6c.1-.2.1-.4 0-.5l-.1-.1c-.1-.3-.4-.4-.7-.3-.1 0-.1.1-.2.1h-12.7c-.3 0-.6.2-.6.6 0 .3.2.6.6.6H205c.2-.1.4-.2.5-.4z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M191.7 54.6h54.4c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1h-12.9c-1.1-2.1-3.9-6.5-7.4-7.2-2.4-.5-3.8.5-4.6 1.6 0 .1-.1.2-.2.3-.6 1-.8 1.9-.8 1.9s-3.1-8-10.9-7c-5.7.8-6 5-5.4 7.8h.7s.1-.1.2-.1c.3-.1.6 0 .7.3l.1.1c.1.2.1.4 0 .5-.1.2-.3.3-.5.3h-.9c.2.9.5 1.4.5 1.5h-13.2.2c-.6 0-1.1.5-1.1 1.1-.1.6.4 1.1 1.1 1.1z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M107.4 231.1c-4 0-5.8-2.5-6.2-4.6l-.1-.5c-7 .5-12.1 2.1-12.1 4 0 2.3 7.3 4.1 16.3 4.1s16.3-1.8 16.3-4.1c0-1.4-2.7-2.6-6.7-3.3-.2.7-.6 1.3-1 1.9-2 2.4-5.7 2.5-6.5 2.5z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M227.3 225.7c-.1-.3-.1-.6-.1-1 0 .4 0 .7.1 1zM228 226.5h-.1.1zM226.9 216v0zM199.5 218.8c.3.3.5.6.8.9-.3-.3-.6-.6-.8-.9z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M237.7 208.7c1-.3 1.9-.5 2.8-.8h.1c6.5-2 12.4-4.7 17.4-7.6-7.2 3.5-15 5-20 5.6 0 1-.1 1.9-.3 2.8z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M241.9 163c.1-.2.2-.4.2-.6 0 .2-.1.4-.2.6zM234.1 70.2c-.3 0-.5-.1-.8-.1-.3 0-.7 0-1 .1.3 0 .7-.1 1-.1.2 0 .5 0 .8.1zM232 70.2c-2.5.4-4.6 2.2-5.5 4.5.9-2.3 3-4 5.5-4.5zM219.1 84.9c0-.1 0-.1 0 0 0-.1 0-.1 0 0zM221.2 79.8c.5-.5 1.1-.9 1.7-1.3-.6.3-1.2.8-1.7 1.3zM226 76.7c-.4.3-.7.7-1 1-.7.1-1.4.4-2.1.7.6-.3 1.3-.6 2.1-.7.3-.3.7-.6 1-1zM207.3 226.3s0-.1 0 0h-.1c0-.1.1 0 .1 0zM263.6 172.3c-.4.1-.8.3-1.2.4.4-.1.8-.2 1.2-.4zM248.7 65.6h.8c-.3.1-.5 0-.8 0zM237.3 69.6c1.3-.5 2.6-.9 4-1.2-1.4.4-2.7.8-4 1.2zM189.2 186.5v0zM252.5 139.1h-1c.3.1.6.1 1 0zM272.6 164c-.5 1.3-1.7 3.4-3.8 5.3 2.2-2 3.3-4.1 3.8-5.3zM262.6 67.9h-.6.6zM219.1 84.9c0 .3 0 .7.1 1-.2.3-.3.6-.5 1 .2-.3.3-.7.5-1 0-.3-.1-.6-.1-1zM202.8 96.1c.1.1.1.2.2.2.1.1.3.2.4.3-.1-.1-.3-.2-.4-.3-.1 0-.2-.1-.2-.2zM202.5 90.4c-.1-.1-.2-.1-.2-.2-.1-.1-.1-.2-.2-.3 0 .1.1.3.2.3l.2.2zM259.2 140.3h-.3.3zM277.1 177.5c-.1 0-.1 0 0 0-.1 0-.1 0 0 0-.1.1-.1 0 0 0zM274.7 180c0-.1 0-.1 0 0-.2 0-.4-.1-.6-.1.2 0
.4 0 .6.1z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M235.8 218c-.5 1.4-1.1 3.2-2 4.9-1.5 3.1-3.5 5.9-5.8 5.9-.7 0-1.3-.2-1.8-.6-.6-.5-1.2-.9-1.4-5.4-.1-1.5-.1-3.5-.1-6.2-.5 0-1-.1-1.6-.2l-.7-.2c0 2.8 0 4.9.1 6.6.2 5.1 1 6.1 2.4 7.2 1 .8 2.1 1.2 3.4 1.2 3.2 0 6-2.7 8.4-8.1.6-1.3 1.2-2.8 1.7-4.4.7-2 1.3-4.8 1.9-8.2-.9.3-1.9.5-2.9.8-.5 2.6-1.1 4.9-1.6 6.7zM265 198.7c-2.4 1.6-5 3.1-7.8 4.7 1.6-.7 3.1-1.4 4.6-2.3h.2c3.7 0 7.1-.5 10.2-1.4-1.7-.2-3.3-.6-4.7-1.3-.8.1-1.6.2-2.5.3z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M284.9 173c.8-.7 1.8-1.2 2.9-1.2.4 0 .7 0 1 .1h.1c-.7-.6-1.5-1.1-2.4-1.2-.3-.1-.6-.1-.8-.1-.8 0-1.6.2-2.3.6l-.2.2c.6.6 1.2 1.1 1.7 1.6zM287.7 188c.3-.6.6-1.1.9-1.7-.4.3-.8.6-1.3.8.1.4.3.6.4.9z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M266.3 154.9c-1.2.6-2.1.9-2.7 1.2-.3.1-.6.2-.8.3-.2.1-.3.1-.3.1-.2.1-.4.1-.7.1-.6 0-1.2-.3-1.7-.7-6.4 3.3-13.7 6.8-16.1 7.9-.1.2-.2.4-.2.6.8-.1 1.7-.1 2.5-.1 3.5 0 6.8.6 9.7 1.8 2.7 1.1 5 2.5 7 4.3 6.4-2.4 7.9-7.8 7.9-8 .2-.9.9-1.5 1.8-1.7h.3c.8 0 1.5.4 1.9 1.1.1.2 1.7 2.9 2.3 7.1 1 .2 2 .6 2.9 1-.5-5.5-2.5-9.1-2.9-9.7-.9-1.4-2.4-2.3-4-2.3-.2 0-.5 0-.7.1-1.9.3-3.4 1.7-3.9 3.5 0 .1-1 3.6-5.1 5.7-1.9-1.4-4-2.7-6.4-3.7-1.3-.6-2.8-1-4.2-1.3 5.1-2.5 10.1-5 13.8-7.1-.1-.1-.1-.2-.2-.2 0-.1-.1-.1-.2 0z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M265.3 137.7h.5-.5zM246.3 166.4h-.3H246.3z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M284.3 126.3l1.2-1.8c4.6-2.2 7.4-7.2 6.8-12.3v-.2c1.4-2.3 2-5 1.7-7.7-.3-2.4-1.3-4.6-2.8-6.4-.3-2.1-.7-4.1-1.3-6.1v-1c0-4-2-7.7-5.3-9.9-2.8-4.1-6.5-7.8-10.6-10.6-1.8-4.4-6.2-7.3-11-7.3-1.4 0-2.9.3-4.3.8-.8-.2-1.6-.4-2.4-.5-2.1-1.6-4.7-2.5-7.3-2.5-.5 0-1 0-1.5.1-2.2.3-4.4 1.2-6.1 2.6-2.1.4-4.2 1.1-6.2 1.9-.6-.1-1.1-.1-1.7-.1-5.2 0-9.9 3.5-11.4 8.4-4.4 1.8-7.4 6.2-7.4 11.1v.2c-.2.5-.4 1-.6 1.4-.4.4-.8.7-1.2 1.2-.1-2.2-1.1-4.2-2.2-6.3-.2-.4-.4-.8-.6-1.3-.9-1.8-2.7-3-4.6-3-3.8 0-5.5 3.8-6.2 5.3-1 2.1-2.3 5.9-1.3 9-.4 3.7.2 6.5 1.8 8.2.1.6.2 1.3.4 1.8-8.4 3.3-26.4 11.2-32.7 19.4-1.9 2.4-2.2 5.7-1 9.8 2.6 8.9 10.6 18.2 15.5 20.1 6.2 2.3 14.3 3.8 22.5 4.3-4.1 1.6-7.4 2.9-10 4.1.6.7 1.1 1.4 1.6 2.2 2.6-1.1 5.7-2.3 9.5-3.9 1.9-1.6 3.9-3.1 6-4.5h-2c-9.9 0-19.7-1.6-27.1-4.3-5.2-1.9-12.1-11.9-14-18.4-.9-3.3-.7-5.8.6-7.6 5.6-7.3 22.8-15.2 33.8-19.4-.6-1.4-.9-3-1.1-4.6l-.1-.1c-1.4-1.1-1.9-3.5-1.5-7.1-1.1-2.3.3-6 1.1-7.6 1.2-2.6 2.4-3.8 3.9-3.8 1 0 1
.9.6 2.4 1.6.2.5.5.9.7 1.3 1.2 2.3 2.2 4.3 1.8 6.3.7 1 1.3 2.1 1.4 3.4.7.6 1.3 1.1 1.9 1.7-.1-.3-.1-.7-.1-1.1 0-2 1-3.8 2.6-4.8.3-.8.7-1.7 1.1-2.5v-.7c0-4.3 2.9-8 7-9.1l.1-.1c.8-4.4 4.7-7.8 9.3-7.8.7 0 1.3.1 2 .2 2.3-1 4.6-1.7 7-2.1 1.5-1.4 3.3-2.2 5.3-2.5.4 0 .8-.1 1.2-.1 2.3 0 4.5.9 6.2 2.4 1.2.2 2.4.5 3.6.8 1.3-.6 2.7-.9 4.1-.9 4.1 0 7.7 2.6 9 6.4 4.3 2.8 8 6.5 10.8 10.8 2.8 1.7 4.6 4.8 4.6 8.1 0 .4 0 .8-.1 1.3.7 2.3 1.2 4.6 1.5 7 1.5 1.5 2.5 3.4 2.7 5.6.3 2.5-.4 4.9-1.8 6.8.1.4.2.7.2 1.1.5 4.3-2 8.5-6 10-.6 1-1.2 1.9-1.8 2.8-.5 3.2-2.7 5.8-5.7 6.9-1.6 4.5-5.8 7.5-10.7 7.5-.5 0-1 0-1.5-.1-1 1.6-2.8 2.7-4.9 2.7-1.4 0-2.7-.5-3.7-1.3-1.3.2-2.7.2-4 .2-.4 1.9-1 3.9-1.6 5.8 8.1-1.9 16.9-3.8 18-3.9h.8c.1-.1.3-.2.4-.3l.6-.5c.2-.2.4-.3.6-.4.4-.3.8-.6 1.2-.8-.1 0-.1-.1-.2-.1 2.3-1 4.3-2.5 5.8-4.5.2-.4.4-.7.7-.9.3-.5.5-.9.8-1.4 2.8-2 5.1-4.9 5.8-8.4z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M287.7 101.9c-.4-.6-.9-1.1-1.4-1.5.6.4 1 .9 1.4 1.5zM286.9 111.2c.2.6.4 1.2.5 1.9 0 .2 0 .5.1.7 0-.2 0-.5-.1-.7-.1-.7-.3-1.3-.5-1.9zM289 106c0-.3 0-.6-.1-.9 0-.4-.1-.7-.2-1.1.1.3.2.7.2 1.1.1.3.1.6.1.9zM263.6 137.5c-.3-.1-.7-.1-1-.2h-.1.1c.3.1.6.1 1 .2zM259.6 140.2c.4-.1.7-.2 1.1-.4-.4.2-.7.4-1.1.4zM188.5 192.2v0zM218.2 88.3c-.2.4-.4.9-.5 1.3-.2.1-.3.1-.5.2.1-.1.3-.2.5-.2.1-.4.3-.9.5-1.3zM186 170.6c0-.1-.1-.1-.1-.2 0 .1 0 .2.1.2zM215.8 97.7c0-.4.1-.9.2-1.3-.1.4-.1.8-.2 1.3z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M207.5 230.7c1.7 0 3.3-.8 4.3-2.2.9-1.2 1.3-2.3.7-5.6-.3-2-1.1-4.8-2.2-8.8 1 0 2 .1 3 .1h2.1l-3.8-1.1-4.8-.6c1.6 5.2 2.4 8.5 2.9 10.6.6 3.2.3 3.7-.2 4.3-.5.8-1.4 1.2-2.3 1.2-1.7 0-3.4-1.3-6.6-4.9-.8-.9-1.8-2-2.9-3.3-3.3-3.8-5.6-8.6-7.1-12.7-1-.5-2-1.1-2.9-1.7 1.6 4.8 4.3 11 8.4 15.8.6.8 1.3 1.5 1.8 2.1 4.4 4.8 6.7 6.8 9.6 6.8zM185.9 201.9c1.2.9 2.4 1.7 3.6 2.5l-.3-.9c-2.1-3-3.1-7-3-11.4-.4-.3-.8-.5-1.2-.8-.2-.2-.3-.5-.1-.8.2-.2.5-.3.8-.1.2.1.4.3.6.4.1-1 .2-2.1.3-3.2-.8.3-1.6.5-2.4.6-.5 5.1 0 9.8 1.7 13.7z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M206.8 158.8c.5-.4 1-.9 1.6-1.3-.6.4-1.1.9-1.6 1.3z"/>
- <path fill="url(#a)" fill-rule="nonzero" d="M237.4 200.4c-.1 1-.2 2-.2 2.9 4.1-.4 10.5-1.6 17.1-4.5 1.7-.8 3.3-1.6 4.7-2.6-.7-.2-1.4-.6-1.9-1.1-3.5 1.9-8.3 4-14.2 4.8-1.9.2-3.7.4-5.5.5z"/>
- <path fill="url(#b)" fill-rule="nonzero" d="M268.8 169.3c1.6-.6 3.4-.9 5.1-.9.4 0 .7 0 1.1.1-.4-2.3-1.1-4-1.5-4.9-.1-.3-.3-.5-.3-.6v-.1s0 .1-.1.3c0 .1-.1.2-.1.3-.1.1-.1.3-.2.5-.7 1.2-1.8 3.3-4 5.3z"/>
- <path fill="url(#c)" fill-rule="nonzero" d="M274.9 176.9c-.3 0-.6-.1-.9-.1-2.6 0-5 1.4-6.3 3.6-.3.5-.7 1-1.1 1.4l1.6.4c0-.1.1-.2.2-.3l.9-.7c.2-.2.6-.1.8.1.2.2.1.6-.1.8l-.5.4.9.2c.8.2 1.5.6 2 1.2.7-1.4 1.3-2.8 1.8-4.1.2-1 .5-1.9.7-2.9z"/>
- <path fill="url(#d)" fill-rule="nonzero" d="M189.9 156.3c-2.8-1.8-6-2.6-9.1-2.6-5.6 0-11.1 2.8-14.3 7.8-5 7.9-2.7 18.3 5.2 23.3 2.8 1.8 6 2.6 9.1 2.6 2.1 0 4.2-.4 6.1-1.1.3-1.5.7-3.1 1.2-4.6-.5 0-1-.1-1.5-.4-1.5-.8-2.1-2.6-1.3-4s2.6-1.9 4.1-1.1c.3.2.5.3.7.5.6-1.3 1.3-2.6 2-3.9-3.2.4-4.2.5-4.7.5h-.6c-1-.1-2.3-.6-2.9-1.8-.5-.8-.7-2.3.5-4.3.5-.7 1.1-1.9 10.6-5.9-1.4-1.9-3-3.7-5.1-5zm-14.1 2.1c1.7 0 3.1 1.3 3.1 2.9 0 1.6-1.4 2.9-3.1 2.9-1.7 0-3.1-1.3-3.1-2.9 0-1.6 1.4-2.9 3.1-2.9zm-8.7 10.8c.8-1.4 2.6-1.9 4.1-1.1 1.5.8 2.1 2.6 1.3 4s-2.6 1.9-4.1 1.1c-1.4-.8-2.1-2.6-1.3-4zm13.4 12.7c-.6 1-1.9 1.5-3.3 1.2l1.7 1.7c.2.2.2.6 0 .8-.1.1-.3.2-.4.2-.1 0-.3 0-.4-.1-3.1-2.9-6.2-6.2-9.2-9.8-.2-.2-.2-.6.1-.8.2-.2.6-.2.8.1 1.2 1.5 2.5 2.9 3.7 4.3 0-.4.1-.8.3-1.1.4-.7 1.1-1.2 2-1.3l-.9-1.1c-.2-.2-.2-.6.1-.8.2-.2.6-.2.8.1l1.6 1.9c.4.1.8.2 1.1.4 1.9.9 2.8 2.9 2 4.3zm8.2-19.6c-.8 1.3-2.6 1.5-4 .7-1.4-.9-1.9-2.6-1.1-3.9.8-1.3 2.6-1.5 4-.7 1.4.9 1.9 2.7 1.1 3.9z"/>
- <path fill="url(#e)" fill-rule="nonzero" d="M204.7 160.7c-9.4 3.5-17.8 8.2-17.9 8.3-.1.1-.2.1-.3.1-.2 0-.4-.1-.5-.3-.2.3-.3.6-.3.9v.6c0 .1 0 .2.1.2 0 .1.1.1.1.2.4.5 1.2.5 1.2.5H188c.2 0 .4 0 .6-.1.3 0 .6-.1.9-.1h.2c.3 0 .6-.1.9-.1h.2c.4 0 .7-.1 1.1-.2h.1c.9-.1 2-.3 3.1-.5 2.9-4 5-6.2 5.1-6.4.2-.2.6-.2.8 0 .1.1.2.2.2.4 1.1-1.2 2.2-2.3 3.5-3.5z"/>
- <path fill="url(#f)" fill-rule="nonzero" d="M187.9 167.1c-.1 0-.1.1-.2.1s-.1.1-.2.1c1.1-.6 2.7-1.4 4.8-2.5-1.8.9-3.4 1.7-4.4 2.3z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M213.3 204.7c-.7-.2-1.3-.7-1.7-1.2l-.4 1.3 1.9.5c.3-.1.7-.2 1-.3l-.8-.3z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M188.7 193.1c0 .1-.1.1-.1.1v1.6c0 .4.1.8.2 1.2 0 .2.1.4.1.5l.3 1.2c0 .2.1.3.1.5.1.4.3.8.4 1.2v.1c.8 1.6 2.9 4.5 8.2 5.4.3.1.5.3.4.6-.1.3-.3.5-.5.5h-.1c-2.7-.5-4.6-1.5-6-2.5l.3.9c.2.5.3 1 .5 1.5 1.4.7 2.7 1.2 4.1 1.7 2.4.8 4.8 1.4 7.2 1.9 0-.1-.1-.3-.1-.4 0-.1-.1-.3-.1-.4-.2-.5-.4-1-.5-1.5-.1-.3-.2-.6-.3-.8h.2c0-.6 0-1.1.2-1.7l1.2-4.1c-.7-.2-1.5-.4-2.2-.6-.3-.1-.5-.4-.4-.7.1-.3.4-.5.7-.4.7.2 1.5.4 2.2.6l4.1-14.3c.7-2.4 2.9-4 5.4-4 .5 0 1 .1 1.6.2l15.3 4.4c2-6.2 3.9-13.4 9.5-22.5.5-1.1 1.1-2.1 1.4-2.4.6-.4 12.5-5.9 18-8.5l.1-.1c.1-.2.3-.4.5-.7.3-.5.9-1.3 1.8-2.3.8-1 1.8-2 2.7-2.9l.6-.6c-3.9.8-12 2.6-19.4 4.4.4-.9.7-1.7 1-2.6.1-.2.1-.4.2-.6.5-1.4.9-2.9 1.3-4.3 1-5.6.1-9.3.1-9.4-.1-.3.1-.5.3-.6-.3-2.1-.8-3.8-1.6-5.3-3.1-1-5.4-3.9-5.4-7.4v-.1c-.8-1-1.4-2-2-2.9-.4-.4-.9-.9-1.3-1.4-2.1-2.7-3.1-5.6-3.5-7.3-.2-.4-.3-.7-.5-1.1-.7-.4-1.3-1-1.8-1.6-.8-.6-1.6-1.4-2-2.3-.5-1.3-.7-2.3-.6-3.2l-3.2-.1c-.2 0-.4-.2-.5-.4-.7 0-1.4 0-2.1.1-.4.6-1 1.2-1.7 1.5v
.1c0 .3-.2.6-.5.6h-.6c-1.5 0-2.7-.8-3.2-1.2l-1.4.4c1.1 1.2 2.1 2.8 2.1 4.8 0 4.6-4.6 6.2-4.7 6.2h-.2c-.2 0-.4-.1-.5-.3-.8.2-1.6.3-2.5.1-.2 0-.5-.2-.7-.3h-.2c-.2 0-4.3-.9-6.1-6.6-.1-.3 0-.5 0-.7-.2.1-.4.1-.6.2-.2.1-.3.1-.5.2-.3.1-.5.2-.8.3-.2.1-.4.1-.5.2-.3.1-.5.2-.8.3-.2.1-.4.1-.5.2-.3.1-.5.2-.8.3-.2.1-.4.2-.6.2-.3.1-.5.2-.8.3-.2.1-.4.2-.6.2-.3.1-.5.2-.8.3l-.6.3c-.3.1-.5.2-.8.3l-.6.3c-.3.1-.5.2-.8.3l-.6.3c-.5.2-.9.4-1.4.6-.3.1-.5.2-.8.3-.2.1-.4.2-.7.3-.2.1-.5.2-.7.3-.2.1-.5.2-.7.3-.2.1-.5.2-.7.3-.2.1-.4.2-.7.3-.2.1-.5.2-.7.3l-.6.3c-.2.1-.5.2-.7.4l-.6.3c-.2.1-.5.2-.7.4l-.6.3c-.2.1-.5.3-.7.4l-.6.3c-.2.1-.5.3-.7.4-.2.1-.4.2-.5.3-.3.1-.5.3-.7.4-.2.1-.3.2-.5.3-.3.2-.7.4-1 .6-.1.1-.2.1-.3.2-.3.2-.7.4-1 .6-.1.1-.2.2-.4.2-.2.2-.5.3-.7.5-.1.1-.3.2-.4.3-.2.1-.4.3-.6.4-.1.1-.3.2-.4.3-.2.1-.4.3-.6.4-.1.1-.3.2-.4.3-.2.1-.4.3-.5.4-.1.1-.3.2-.4.3-.2.1-.3.3-.5.4-.1.1-.2.2-.4.3-.2.1-.3.3-.5.4l-.3.3c-.2.1-.3.3-.4.4l-.3.3c-.2.2-.3.3-.4.5-.1.1-.1.2-.2.2-.2.2-.4.5-.6.7-.3.4-.5 1-.7 1.6v.1c.5 0 .9.4 1 .8
0 .1 6.4 15.3 12 18.1 5.1 2.5 24.4 4.5 39.2 3.2 9-1.8 12.1-3.7 19.4-11 2.3-2.3 3.5 6.1-.8 10.1-3.6 3.4-12.9 4.7-23.1 4.7-.8.4-1.6.9-2.4 1.4-.1.1-.3.2-.4.3-.6.3-1.1.7-1.6 1-.2.1-.4.3-.6.4-.8.5-1.6 1.1-2.3 1.6-.3.3-.7.5-1 .8-.4.3-.7.6-1.1.8-.5.4-1.1.9-1.6 1.3-.1 0-.1.1-.2.1-4.6 1.8-10.2 4-14.3 5.9-2.1 1-3.8 1.9-4.8 2.5-.6.4-1.1.7-1.2 1-.1.1-.1.3-.2.4.1.2.3.3.5.3.1 0 .2 0 .3-.1.1-.1 8.5-4.8 17.9-8.3-1.2 1.1-2.4 2.3-3.5 3.5 0 .2 0 .3-.2.4 0 0-2.4 2.4-5.4 6.8-.2.3-.4.6-.6.8-.1.2-.2.4-.3.5-.4.6-.7 1.2-1 1.8-.1.2-.3.5-.4.7-.3.5-.6 1.1-.8 1.6-.1.3-.2.5-.4.8-.2.5-.5 1-.7 1.5-.1.3-.2.6-.3.8-.2.5-.4 1-.5 1.4-.1.3-.2.6-.3.8-.2.5-.3.9-.4 1.4-.1.3-.2.6-.2.8-.1.5-.2.9-.3 1.4 0 .2-.1.4-.1.6v.2c-.1.5-.2.9-.2 1.3 0 .3-.1.5-.1.8-.1.4-.1.9-.1 1.3 0 .2 0 .5-.1.7V191.3c.5 1.2.5 1.5.4 1.8zm7.3-73.4c.5-.8 1.8-2 3.7-2.4 0-.1-.1-.2-.1-.3v-3c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v3c0 .1 0 .2-.1.3 1.9.4 3.2 1.6 3.7 2.4.5.8.3 1.8-.5 2.3-.3.2-.6.3-.9.3-.5 0-1.1-.3-1.4-.7-.1-.1-.8-1.1-2.2-1.1-1.4 0-2.1 1.1-2.2 1.1
-.5.8-1.5 1-2.3.5-.6-.6-.8-1.7-.3-2.4zm12 18.1c0 .1-.1.1-.1.2l-.4.3c-.9.8-1.8 1.4-2.6 1.9-.9.5-1.7 1-2.5 1.3-1.6.7-3.1 1.2-4.6 1.5-.4.1-.8.1-1.2.2-2.4.3-4.7.1-6.9-.5h-.1-.1c-2.1-.7-4.2-1.8-6-3.3.2-.1.4-.1.6-.1-.2 0-.4.1-.6.1-.3-.3-.6-.5-.9-.8-1.1-1.1-2.1-2.3-3-3.8-.5-.8-.9-1.6-1.3-2.5-.4-.9-.8-1.9-1.2-3l-.1-.5c-.1-.2 0-.5.3-.5h.2c.5.1 1.1.2 1.6.4.3.1.5.1.8.2.3 1.3.6 2.7.7 2.9.2.3 2.7 1.8 3.1 1.5.2-.2.6-1.8.9-3.2l.6.1c.5.1.9.3 1.4.4-.4 1.6-.8 3.3-.7 3.5.2.3 3.1 1 3.5.8.5-.2 1.7-1.4 2.8-2.7.2.1.4.1.6.2l7.5 2.4 3.8 1.3c.7.3 1.5.5 2.2.8l1.5.6c.1-.1.3.1.2.3zm20.6-15.8c-.3.2-.6.3-.9.3-.5 0-1.1-.3-1.4-.7-.1-.1-.8-1.1-2.2-1.1-1.4 0-2.1 1.1-2.2 1.1-.5.8-1.5 1-2.3.5-.8-.5-1-1.5-.5-2.3.5-.8 1.8-2 3.7-2.4 0-.1-.1-.2-.1-.3v-3c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v3c0 .1 0 .2-.1.3 1.9.4 3.2 1.6 3.7 2.4.7.7.4 1.7-.3 2.2zm-37.1 72.8c.1-.3.5-.4.8-.2.3.2.6.4 1 .5.3.1.4.5.2.8-.1.2-.3.3-.5.3-.1 0-.2 0-.3-.1-.3-.2-.7-.4-1-.5-.2-.2-.3-.5-.2-.8z"/>
- <path fill="url(#g)" fill-rule="nonzero" d="M203.6 209.1c0-.1 0-.1 0 0-.1-.2-.2-.3-.2-.4.1.1.1.2.2.4z"/>
- <path fill="url(#h)" fill-rule="nonzero" d="M222.3 203.8l-1.9-.6c0 .1 0 .2-.1.3-.4 1.3-1.6 2.2-2.9 2.2-.3 0-.6 0-.9-.1l-2.4-.7c-.3.1-.7.2-1 .3l10 2.9 1.3-4.5c-.4.2-.8.3-1.3.3-.2.1-.5 0-.8-.1z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M227.1 224.7c0 .4.1.7.1 1 0 .3.1.5.2.6 0 .1.1.1.1.1.1.1.1.1.2.1H228.3s.1 0 .1-.1c.1 0 .1-.1.2-.1l.1-.1c.1 0 .1-.1.2-.1l.1-.1.2-.2.1-.1c.1-.1.2-.2.2-.3l.1-.1c.1-.2.3-.3.4-.5v-.1c.1-.2.2-.3.4-.5 0-.1.1-.2.1-.2.1-.1.2-.3.3-.4.1-.1.1-.2.2-.3.1-.1.1-.2.2-.3-1.4 0-2.9-.1-4.3-.1v.9c.2.2.2.5.2.9z"/>
- <path fill="url(#i)" fill-rule="nonzero" d="M230 212.6c-.5 1.6-1.6 2.8-3.1 3.5v7.5c0 .4.1.7.1 1.1 0 .4.1.7.1 1 0 .3.1.5.2.6 0 .1.1.1.1.1.1.1.1.1.2.1H228.2s.1 0 .1-.1c.1 0 .1-.1.2-.1l.1-.1c.1 0 .1-.1.2-.1l.1-.1.2-.2.1-.1c.1-.1.2-.2.2-.3l.1-.1c.1-.2.3-.3.4-.5v-.1c.1-.2.2-.3.4-.5 0-.1.1-.2.1-.2.1-.1.2-.3.3-.4.1-.1.1-.2.2-.3.1-.1.1-.2.2-.3 0 0 0-.1.1-.1.1-.1.1-.2.2-.3.1-.2.2-.3.2-.5.1-.1.1-.2.2-.4s.2-.4.2-.5c.1-.1.1-.3.2-.4.1-.2.2-.4.2-.6.1-.1.1-.3.2-.4.1-.2.2-.5.3-.7 0-.1.1-.2.1-.4.1-.4.3-.7.4-1.1.1-.4.3-.9.4-1.4.1-.5.3-1 .4-1.5v-.1c.1-.5.2-1 .3-1.6v-.1c.1-.3.1-.6.2-1-1.3.1-3 .4-4.7.7z"/>
- <path fill="url(#j)" fill-rule="nonzero" d="M240.1 167.1c-.1.2-.3.3-.5.3h-.2c-.3-.1-.4-.4-.3-.7.4-.9.9-2.1 1.4-3.2-5.6 9-7.5 16.2-9.5 22.5l.9.3c1.4.4 2.6 1.4 3.3 2.7.7 1.3.9 2.8.5 4.3l-4.9 17.1c1.6-.3 3.2-.6 4.7-.9v-.1-.1c.1-.6.2-1.1.2-1.7v-.1c0-.2.1-.5.1-.7 0-.1-.1-.2 0-.3.5-4.5 1.9-23.7 1.9-23.9 0-.3.3-.5.6-.5s.5.3.5.6c0 .1-.7 9.5-1.3 16.7 1.7-.1 3.5-.2 5.3-.5 5.6-.8 10.3-2.8 13.7-4.7-.5-.9-.6-2-.4-3l1.9-7.3c.4-1.4 1.4-2.4 2.6-2.8-.9-1.2-1-2.9-.3-4.3.8-1.6 2-3.1 3.3-4.3-.4.1-.8.3-1.2.4-1.1.3-2.2.6-3.5.7-1-.8-2.2-1.2-3.6-1.3-.9 0-1.8.1-2.7.4-1.4-1.3-3.3-2-5.3-1.8-1.8.1-3.4.9-4.5 2.1-.9.1-1.8.2-2.6.4-.3 1.5-.5 2.7-.5 2.9 0 .3-.1.5-.4.6h-.2c-.2 0-.5-.1-.5-.4-.1-.2-.1-.4.9-5.1.3-1.6.7-3 1.1-4.4.1-.5.3-.9.4-1.3.1-.4.3-.8.4-1.2v-.1c.1-.4.3-.7.4-1.1 0 0 0-.1.1-.1.1-.2.1-.4.2-.5-.4.7-1.3 2.6-2 4.4zm2.2 29.4c3.9-1.5 8-3.4 12-5.7.3-.1.6-.1.8.2.1.3.1.6-.2.8-4.1 2.3-8.2 4.2-12.2 5.7h-.2c-.2 0-.4-.1-.5-.4-.1-.2 0-.5.3-.6z"/>
- <path fill="url(#k)" fill-rule="nonzero" d="M202.7 206.4c.1.2.2.5.3.8 0-.3-.1-.5-.1-.8h-.2z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M194.4 210.8c.3.6.6 1.3 1 1.9 0 .1.1.1.1.2.3.6.7 1.3 1.1 1.9 0 .1.1.1.1.2l1.2 1.8.1.1c.5.6.9 1.3 1.5 1.9.3.3.5.6.8.9.1.1.1.2.2.2l.6.6c.1.1.2.2.2.3.2.2.3.4.5.5.1.1.2.2.2.3.2.2.3.3.4.5.1.1.2.2.2.3l.5.5.2.2.2.2.4.4.1.1.5.5.2.2.3.3.2.2.3.3c.1.1.1.1.2.1.1.1.2.1.3.2l.1.1c.1.1.2.1.3.2 0 0 .1 0 .1.1.1.1.2.1.3.2h.1c.1 0 .2.1.2.1h.6c.1 0 .2-.1.2-.2 0 0 .1-.1.1-.2v-.1-.3-.1c0-.2 0-.4-.1-.6v-.2c0-.2-.1-.4-.1-.6v-.2c0-.2-.1-.4-.1-.6v-.2-.1c-.1-.3-.1-.6-.2-.9 0-.1 0-.2-.1-.3-.1-.3-.1-.6-.2-.8 0-.1 0-.1-.1-.2-.1-.4-.2-.7-.3-1.1 0-.1-.1-.2-.1-.3-.1-.3-.2-.6-.2-.9 0-.1-.1-.2-.1-.3l-.3-1.2v-.1c-.1-.4-.2-.7-.3-1.1 0-.1-.1-.2-.1-.3-.1-.4-.2-.7-.3-1.1v-.1c-.1-.4-.2-.8-.4-1.2 0-.1 0-.1-.1-.2-.1-.2-.1-.4-.2-.6-2.8-.6-5.7-1.3-8.6-2.2-.8-.2-1.5-.5-2.3-.8.2.6.5 1.1.7 1.7-.1-.2-.1-.2-.1-.1zM196.5 122c.8.5 1.8.3 2.3-.5 0 0 .8-1.1 2.2-1.1 1.4 0 2.1 1 2.2 1.1.3.5.9.7 1.4.7.3 0 .6-.1.9-.3.8-.5 1-1.5.5-2.3-.5-.8-1.8-2-3.7-2.4-.4-.1-.8-.1-1.3-.1-.4 0-.9.1-1.3.1-1.9.4-
3.2 1.6-3.7 2.4-.5.8-.3 1.9.5 2.4zm0-2s.1-.2.3-.4l.3-.3c.7-.7 2-1.7 3.9-1.7 2.9 0 4.4 2.2 4.5 2.3.3.5.2 1.2-.3 1.5-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5 0-.1-.9-1.3-2.6-1.3-1.1 0-1.8.5-2.2.9l-.4.4c-.3.5-1 .7-1.5.3-.7-.2-.9-.9-.5-1.4zM225.4 117.2c-.4-.1-.8-.1-1.3-.1-.4 0-.9.1-1.3.1-1.9.4-3.2 1.6-3.7 2.4-.5.8-.3 1.8.5 2.3.8.5 1.8.3 2.3-.5 0 0 .8-1.1 2.2-1.1 1.4 0 2.1 1 2.2 1.1.3.5.9.7 1.4.7.3 0 .6-.1.9-.3.8-.5 1-1.5.5-2.3-.5-.6-1.8-1.9-3.7-2.3zm2.9 4.3c-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5l-.2-.2-.2-.2c-.4-.4-1.2-.9-2.3-.9-1.7 0-2.6 1.3-2.6 1.3-.3.5-1 .7-1.5.3-.5-.3-.7-1-.3-1.5.1-.1 1.5-2.3 4.5-2.3 1.4 0 2.5.5 3.2 1.1.1.1.2.2.3.2l.3.3c.4.4.6.7.7.8.2.4.1 1.1-.4 1.4z"/>
- <path fill="url(#l)" fill-rule="nonzero" d="M241.8 136.3c-7.4 7.4-10.4 9.3-19.4 11-14.7 1.3-34.1-.7-39.2-3.2-5.6-2.7-12-17.9-12-18.1-.1-.5-.5-.8-1-.8-.4 2.5.9 6.1 2.9 9.7.3.6.7 1.2 1.1 1.8.6.9 1.2 1.8 1.8 2.6.4.6.8 1.1 1.2 1.6.4.5.8 1 1.3 1.5.2.2.4.5.6.7.4.4.8.8 1.3 1.2.2.2.4.3.6.5.8.6 1.6 1.1 2.3 1.4 6.8 2.5 16.4 4.1 26.3 4.1 1.7 0 3.4-.1 5.1-.2h.2c.1 0 12.1-1.3 17.8-3.6.3-.1.6 0 .7.3.1.3 0 .6-.3.7-3.8 1.5-10.1 2.6-14.2 3.2-.3.2-.6.3-1 .5 10.2 0 19.5-1.3 23.1-4.7 4.3-4 3.1-12.5.8-10.2z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M250.4 158.2c-3.6 1.7-6.5 3.1-7.6 3.6 2.1-1 4.8-2.2 7.6-3.6z"/>
- <path fill="url(#m)" fill-rule="nonzero" d="M224.6 99.7c.7 0 1.4-.1 2.1-.1v-.2c0-.3.3-.6.6-.5l3.3.1c.3-1.1.7-1.7.8-1.7.2-.2.5-.3.8-.1.2.2.3.5.1.8-.1.1-1.4 1.9-.1 4.9.6 1.5 2.9 2.8 3.8 3.2.2.1.3.3.3.5 0 0 .4 4.6 3.5 8.4 3.4 4.2 8.4 5.7 8.5 5.7.2.1.4.2.4.4 0 0 .6 3.3 1.9 4.6.7.7 2.6 2.6 7.4 1.7.3-.1.6.1.6.4.1.3-.1.6-.4.6-1 .2-1.9.3-2.7.3-3.1 0-4.7-1.2-5.8-2.2-1.3-1.3-1.9-3.9-2.1-4.8-1.1-.4-4.5-1.7-7.4-4.6.6 1 1.2 1.9 2 2.9v.1c0 3.5 2.3 6.4 5.4 7.4.7 1.5 1.3 3.2 1.6 5.3h.1c.3-.1.6.1.7.4 0 .1.6 2.4.4 5.9h1.4c.3-1.1.6-2.3.9-3.5.2.1.5.1.8.2 1.6.2 3.1-.9 3.5-2.5h.2c.8.3 1.7.6 2.6.7 4.1.4 7.7-2.1 9-5.8 2.8-.2 5.1-2.2 5.5-5 .9-1.1 1.8-2.2 2.6-3.3 3.3-.5 5.8-3.4 5.7-6.9 0-.6-.1-1.2-.3-1.8 1.6-1.3 2.6-3.3 2.5-5.5 0-1.8-.8-3.5-2-4.7 0-1.5-.1-3-.3-4.4 1.3-1 2.2-2.5 2.5-4.2 0-.2.1-.5.1-.7V91v-.1c0-.3 0-.6-.1-.9v-.2c0-.3-.1-.5-.2-.7V89l-.3-.9s0-.1-.1-.1c-.1-.2-.2-.5-.4-.7 0 0 0-.1-.1-.1-.3-.5-.7-1-1.2-1.4-.5-.4-1-.8-1.6-1.1-1-.5-2-.8-3.2-.8-2.1-3.4-4.7-6.4-7.8-8.9 0-.4-.1-.9-.2-1.3s-.2-.8-.4-1
.1v-.1c-.1-.4-.3-.7-.5-1v-.1c-.2-.3-.4-.6-.7-.9-.3-.3-.5-.6-.8-.8l-.9-.6s-.1 0-.1-.1c-.3-.2-.6-.3-1-.4-.1 0-.1 0-.2-.1-.3-.1-.7-.2-1-.3h-.2c-.4-.1-.8-.1-1.2-.1h-1c-.2 0-.5.1-.7.2-.1 0-.2 0-.3.1-.6.2-1.2.5-1.8.8-1.6-.5-3.2-.9-4.9-1.1-.2-.2-.4-.4-.6-.5l-.2-.2c-.1-.1-.3-.2-.4-.3-.1-.1-.2-.1-.3-.2-.1-.1-.3-.2-.4-.2-.1 0-.2-.1-.3-.1-.1-.1-.3-.1-.4-.2-.1 0-.2-.1-.3-.1-.2-.1-.3-.1-.5-.1-.1 0-.2-.1-.3-.1-.2 0-.4-.1-.5-.1h-1c-.3 0-.6 0-.9.1-.9.1-1.7.4-2.5.8s-1.4.9-2 1.5c-.7.1-1.4.3-2.1.4-1.4.3-2.7.7-4 1.2-.6.2-1.3.5-1.9.8-.4-.1-.9-.2-1.3-.3-.3 0-.5-.1-.8-.1-.3 0-.7 0-1 .1h-.3c-2.5.4-4.6 2.2-5.5 4.5-.1.3-.2.7-.3 1-.1.3-.1.7-.2 1-.4.3-.7.7-1 1-.7.1-1.4.4-2.1.7-.6.3-1.2.8-1.7 1.3-.3.3-.6.6-.8.9-.5.7-.8 1.4-1.1 2.2-.2.6-.2 1.2-.3 1.8v.2c0 .3 0 .7.1 1-.2.3-.3.6-.5 1-.2.5-.4.9-.6 1.4-.2.4-.4.9-.5 1.3-.2.1-.3.1-.5.2-.1.1-.3.2-.4.3-.4.3-.7.7-.9 1.2-.2.5-.4 1-.4 1.5 0 .8.3 1.6.7 2.1-.1.4-.1.9-.2 1.3s-.1.9-.2 1.3c-.1.7-.1 1.4-.1 2.2.2.2.5.3.7.5l2.3-.7c.2-.1.4 0 .6.1 0 0 1.3 1.3 3.1 1.1.3 0 .5.1.6.3.6-
.3 1.2-.8 1.6-1.5zm37.2 25.8c.2-.2.6-.3.8-.1.1.1 2.3 1.9 4.9-.2 2.1-1.8 2.1-3.7 1.9-4.7-1.6 0-2.9-.6-3.7-1.2-.5-.4-.6-1-.3-1.6.4-.5 1-.6 1.6-.3.3.2 3.2 2.1 6.1-.9 3.4-3.4 1.7-6.8 1.7-6.8-.3-.5-.1-1.2.5-1.5.5-.3 1.2-.1 1.5.5.9 1.7 1.6 5.8-2.1 9.4-1.4 1.4-2.9 2-4.2 2.2.2 1.2.1 3.5-2.3 5.6-1.2 1-2.3 1.3-3.3 1.3-1.8 0-3.1-1.1-3.1-1.1-.2 0-.2-.4 0-.6zm-26-50.3c2.4-.3 3.9.7 4.7 1.7.1-.1.3-.1.4-.2 2.1-.9 3.9-.9 5.3-.4.6-1.2 1.9-2.7 4.7-3.1 4.2-.6 5.5 3.1 5.5 3.2.1.3-.1.6-.4.7-.3.1-.6-.1-.7-.4 0-.1-1-2.9-4.3-2.4-2.3.3-3.3 1.5-3.8 2.4 1.2.6 2 1.4 2.5 2.1.3.5.2 1.2-.3 1.5-.5.3-1.2.2-1.5-.3-.2-.3-2.3-3.1-6.1-1.4-4.4 2-4 5.8-4 5.8.1.6-.4 1.2-1 1.2h-.1c-.6 0-1-.4-1.1-1-.2-1.7.4-5.1 3.9-7.3-.6-.7-1.7-1.4-3.5-1.2-3.7.5-4.2 3.4-4.2 3.5 0 .3-.3.5-.5.5h-.1c-.3-.1-.5-.3-.5-.6 0 0 .6-3.7 5.1-4.3z"/>
- <path fill="url(#n)" fill-rule="nonzero" d="M233 105.8c.5.6 1.1 1.2 1.8 1.6.1.3.3.7.5 1.1-.1-.6-.2-1.1-.3-1.4-.4-.3-1.2-.7-2-1.3z"/>
- <path fill="url(#o)" fill-rule="nonzero" d="M202.5 90.4c1.3 1.2 3.4.6 4.4-.9v-.1c0-.1.3-5.4-2.2-7.4 0 0-.1 0-.1.1l-.2.2s-.1.1-.1.2c-.1.1-.1.2-.2.3 0 .1-.1.1-.1.2-.1.1-.1.2-.2.4 0 .1-.1.1-.1.2-.1.2-.2.3-.3.5 0 .1-.1.1-.1.2-.1.2-.2.5-.3.7 0 .1 0 .1-.1.2-.1.2-.2.4-.2.6 0 .1-.1.2-.1.3-.1.2-.1.3-.2.5 0 .1-.1.2-.1.3 0 .2-.1.3-.1.5 0 .1 0 .2-.1.3 0 .1-.1.3-.1.4V89.7c0 .1 0 .2.1.3v.2c0 .1.1.3.2.3.1-.2.1-.2.2-.1z"/>
- <path fill="url(#p)" fill-rule="nonzero" d="M209.1 94.2V94c-.1-.5-.3-1.4-.7-2.6-.1-.3-.2-.5-.3-.7-.6 2.1-3.7 3.3-5.8 1.5 0 .4-.1.7-.1 1.1 0 .6 0 1.1.1 1.6s.2 1 .4 1.3c.1.1.1.2.2.2.1.1.3.2.4.3.1.1.3.1.4.2 2.1.7 4.6-.6 5.4-2.7z"/>
- <path fill="url(#q)" fill-rule="nonzero" d="M204 98c0 .3.1.5.1.8-.1-.7-.2-1.3-.3-2 .1.4.1.8.2 1.2z"/>
- <path fill="url(#r)" fill-rule="nonzero" d="M210.6 95.5c-.4 2.7-3.6 4.7-6.5 3.5v.2c.1.4.2.8.2 1.1.4 1.6 1 2.9 1.6 3.4 2.8.5 6.9-1.5 7.1-4.5v-.5c-.2-.6-.5-1.4-1.1-2.1-.4-.4-.9-.8-1.3-1.1z"/>
- <path fill="url(#s)" fill-rule="nonzero" d="M214.2 112c-.1 0-.1-.1 0 0-.2-.4 0-.7.3-.8.2-.1 3.9-1.4 3.9-5.2 0-2.6-2.1-4.5-3.5-5.5.2 3.4-3.6 6.1-7 6 1.5 2.5 3.4 3 3.5 3 .6.1 1 .7.9 1.3-.1.5-.6.9-1.1.9.2.2.5.3.7.3.6.3 1.5.2 2.3 0z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M240.4 163.4c-.5 1.1-1 2.3-1.4 3.2-.1.3 0 .6.3.7h.2c.2 0 .4-.1.5-.3.7-1.7 1.6-3.7 2.1-4.6.1-.1.1-.3.2-.4.2-.1.3-.2.5-.2 1-.5 4-1.9 7.6-3.6 3-1.4 6.1-3 9-4.5 0-.3.1-.6.3-.9 0 0 0-.1.1-.2-5.5 2.5-17.4 8.1-18 8.5-.3.2-.8 1.2-1.4 2.3z"/>
- <path fill="url(#t)" fill-rule="nonzero" d="M275.8 140c-.7.2-1.3.6-2 .9v.4c.4 1.9 1.8 3.4 3.5 4.2.5-.6.9-1.1 1.3-1.7.3-.5.6-.9.8-1.3-.8-.2-1.5-.6-2-1.1-.4-.5-.7-1-.9-1.5-.2-.1-.4 0-.7.1z"/>
- <path fill="url(#u)" fill-rule="nonzero" d="M273.3 149.1c.1 0 .1-.1.2-.1l.6-.5c.2-.1.4-.3.6-.4.1-.1.2-.2.3-.2-.3-.2-.7-.4-1-.7-1.4-1.1-2.5-2.7-3-4.4-.1.1-.2.1-.3.2-.2.1-.4.3-.6.4l-.6.5c-.2.2-.4.3-.6.5-.6.5-1.2 1-1.7 1.5-.6.5-1.1 1-1.6 1.5-.9.9-1.8 1.9-2.6 2.9s-1.4 1.8-1.7 2.2c-.2.3-.3.5-.4.7l-.1.2c-.2.3-.2.7-.1 1 .1.4.3.7.6.8.3.2.7.2 1 .1 0 0 .1 0 .3-.1.2-.1.4-.1.7-.3.6-.2 1.4-.6 2.6-1.1h.1c-1.2-2.3-.6-5.1-.6-5.3.1-.6.7-1 1.3-.8.4.1.7.4.8.8 1.8-.4 4.1 0 5.8.6z"/>
- <path fill="url(#v)" fill-rule="nonzero" d="M281.4 141.3c.9-.2 2.7-.9 4.2-3.5-1-.8-2.6.8-3.3-.6-.6-1.1.1-1.5-.4-2.1h-.6c-1.6 0-2.9.7-3.5 1.9-.6 1.1-.3 2.5.6 3.5.6.8 1.8 1.1 3 .8z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M267.5 148.5c.1.2.1.4 0 .6 0 0-.5 2.5.5 4.1.5.8 1.3 1.2 2.4 1.4 1.3.2 2.3 0 3.1-.6 1.2-.9 1.4-2.7 1.4-2.7 0-.4.3-.7.6-.9-.3-.3-.7-.5-1.1-.8-.3-.2-.7-.4-1.2-.5-1.6-.6-3.9-1-5.7-.6z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M148 139.7c-.3.1-.4.5-.3.7 2 4.3 4 8.2 6 12 .1.2.3.3.5.3.1 0 .2 0 .3-.1.3-.1.4-.5.2-.8-2-3.7-4-7.6-6-11.9-.1-.2-.4-.4-.7-.2zM160.4 163.3c.1 0 .2 0 .3-.1.3-.2.3-.5.2-.8-.6-.9-1.2-1.9-1.8-2.8-.1-.1-.2-.2-.4-.3.6 1.2 1 2.4 1.2 3.7.2.2.4.3.5.3zM143.3 129.9h-.2v.4l.4 1c.1.2.3.3.5.3h.2c.3-.1.4-.5.3-.7l-.4-1h-.8zM283.4 171.4c1.5-1.3 3.1-2.7 4.6-4.1.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0-1.7 1.5-3.3 3-5 4.4.3.2.6.4.9.7.2-.1.2-.2.3-.2zM185 190.5c-.2.2-.1.6.1.8.4.3.8.5 1.2.8.5.4 1.1.8 1.6 1.1.1.1.2.1.3.1.1 0 .2-.1.3-.1l.1-.1c.2-.3.1-.6-.1-.8-.7-.5-1.5-1-2.2-1.5-.2-.1-.4-.3-.6-.4-.2-.2-.5-.1-.7.1zM242.5 197.6h.2c4-1.5 8-3.5 12.2-5.7.3-.1.4-.5.2-.8-.1-.3-.5-.4-.8-.2-4.1 2.2-8.1 4.1-12 5.7-.3.1-.4.4-.3.7.1.2.3.3.5.3zM270 181.4c-.2-.2-.5-.3-.8-.1l-.9.7c-.1.1-.2.2-.2.3l1.2.3.5-.4c.4-.2.4-.6.2-.8zM169.9 175c-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8 3 3.6 6 7 9.2 9.8.1.1.2.1.4.1.1 0 .3-.1.4-.2.2-.2.2-.6 0-.8-.6-.5-1.2-1.1-1.7-1.7-1.2-1.2-2.4-2.4-3.6-3.7-1.3-1.2-2.6-2
.7-3.8-4.2zM164 167l-.6-.9c-.2-.3-.5-.3-.8-.2-.3.2-.3.5-.2.8l.6.9c.1.2.3.2.5.2.1 0 .2 0 .3-.1.3-.1.3-.4.2-.7zM191.8 195.5c.3.2.7.4 1 .5.1 0 .2.1.3.1.2 0 .4-.1.5-.3.1-.3 0-.6-.2-.8-.3-.2-.6-.3-1-.5-.3-.1-.6-.1-.8.2-.2.4-.1.7.2.8zM202.4 198.9c-.3-.1-.6.1-.7.4-.1.3.1.6.4.7.7.2 1.5.4 2.2.6l.3-1.1c-.7-.1-1.5-.3-2.2-.6zM169.1 184.2c-1.7-2.3-3.4-4.7-5-7.1-1.6-2.4-3.2-4.9-4.7-7.4-.3.8-.7 1.5-1.2 2.3 4.5 7.3 9.2 13.9 14 19.6l2.3-.7c-1.9-2.1-3.7-4.3-5.4-6.7zM133.2 123l2.1-1.3-2.1 1.3zM271.7 191c.1 0 .2.1.3.1.6.1 1.2.2 1.8.2.3 0 .7 0 1-.1 3.4-2.9 5.2-5 5.3-5 0 0 0-.1.1-.1l-2.4-.6c-1 1-3.1 3-6.1 5.5zM193.6 208.9c.8.3 1.5.6 2.3.8 2.9.9 5.8 1.6 8.6 2.2.8.2 1.6.3 2.5.4 1.6.3 3.2.5 4.8.6l-4.8-1.4c-1.2-.3-2.2-1.1-2.9-2.1-.1 0-.2 0-.3-.1-2.4-.5-4.7-1.1-7.2-1.9-1.4-.4-2.8-1-4.1-1.7-1-.5-1.9-1-2.9-1.6-1.2-.7-2.4-1.6-3.6-2.5-.3-.2-.6-.4-.9-.7l.6 1.9c.1.3.1.5.1.8.2.2.3.5.4.7v.1c.5.4 1.1.7 1.6 1.1 1 .6 1.9 1.2 2.9 1.7.9.9 1.9 1.3 2.9 1.7zM266.3 197.8c-.7-.4-1.3-.8-2-1.3-1.9 1.3-4 2.6-6.2 3.9-5 2.9-10.9 5.
6-17.4 7.6h-.1c-.9.3-1.9.6-2.8.8-.8.2-1.6.4-2.3.6-1.5.4-3.1.7-4.7.9l-.7 2.3c1.7-.3 3.4-.5 5-.9l2.4-.6c1-.2 1.9-.5 2.9-.8 6.3-1.8 12-4.3 17-7 2.8-1.5 5.4-3.1 7.8-4.7.3-.2.7-.5 1.1-.8z"/>
- <path fill="#FFFEFE" fill-rule="nonzero" d="M235.2 188.8c-.7-1.3-1.9-2.3-3.3-2.7l-.9-.3-15.3-4.4c-.5-.1-1-.2-1.6-.2-2.5 0-4.7 1.7-5.4 4l-4.1 14.3-.3 1.1-1.2 4.1c-.2.6-.2 1.1-.2 1.7 0 .3 0 .5.1.8.1.5.2 1 .5 1.5.1.1.1.2.1.3 0 0 0 .1.1.1.1.2.2.4.4.5.7 1 1.7 1.7 2.9 2.1l4.8 1.4 3.8 1.1 7 2 .7.2c.5.1 1 .2 1.6.2.8 0 1.5-.2 2.2-.5 1.5-.7 2.6-1.9 3.1-3.5l.7-2.3 4.9-17.1c.3-1.5.1-3.1-.6-4.4zm-1.7 3.7l-5.6 19.4c-.4 1.5-1.8 2.4-3.2 2.4-.3 0-.6 0-.9-.1l-16.2-4.7c-1.8-.5-2.8-2.4-2.3-4.2l5.6-19.4c.4-1.5 1.8-2.4 3.2-2.4.3 0 .6 0 .9.1l16.2 4.7c1.8.5 2.8 2.4 2.3 4.2z"/>
- <path fill="#FFFEFE" fill-rule="nonzero" d="M228.7 191.1l-12.9-3.7c-.2 0-.3-.1-.5-.1-.7 0-1.4.5-1.6 1.2l-4.7 16.2c-.3.9.3 1.8 1.2 2.1l12.9 3.7c.2 0 .3.1.5.1.7 0 1.4-.5 1.6-1.2l4.7-16.2c.2-.9-.4-1.9-1.2-2.1zm-14.4 7.2c.1-.4.4-.6.8-.6h.2l8.1 2.3c.4.1.7.6.6 1-.1.4-.4.6-.8.6h-.2l-8.1-2.3c-.5-.1-.7-.5-.6-1zm-.9 3.2c.1-.4.4-.6.8-.6h.2l3.2.9c.4.1.7.6.6 1-.1.4-.4.6-.8.6h-.2l-3.2-.9c-.5 0-.8-.5-.6-1zm9.7 6.7l-10-2.9-1.9-.5.4-1.3c.4.6 1 1 1.7 1.2l.9.2 2.4.7c.3.1.6.1.9.1 1.4 0 2.6-.9 2.9-2.2 0-.1.1-.2.1-.3l1.9.6c.3.1.6.1.9.1.4 0 .9-.1 1.3-.3l-1.5 4.6zm1.8-10.3c-.1.4-.4.6-.8.6h-.2l-8.1-2.3c-.4-.1-.7-.6-.6-1 .1-.4.4-.6.8-.6h.2l8.1 2.3c.5.1.8.5.6 1zm1-3.3c-.1.4-.4.6-.8.6h-.2l-8.1-2.3c-.4-.1-.7-.6-.6-1 .1-.4.4-.6.8-.6h.2l8.1 2.3c.4.1.7.6.6 1zM275 168.4c-.4 0-.7-.1-1.1-.1-1.7 0-3.4.3-5.1.9-.7.3-1.4.5-2.1.9-1.1.6-2.1 1.3-3.1 2.2-1.3 1.2-2.5 2.7-3.3 4.3-.7 1.4-.6 3.1.3 4.3-1.3.4-2.3 1.5-2.6 2.8l-1.9 7.3c-.3 1-.1 2.1.4 3 0 .1 0 .1.1.2.2.3.4.5.6.8.5.5 1.2.9 1.9 1.1.3.1.7.1 1 .1 1.1 0 2.1-.4 2.9-1.2
.5.5.9.9 1.5 1.3.6.5 1.3.9 2 1.3l1.2.6c1.5.7 3.1 1.1 4.7 1.3.6.1 1.1.1 1.7.1 2.5 0 5-.6 7.2-1.8 2.8-1.5 5-3.7 6.4-6.5.5-1 .6-2.1.3-3.1 0-.1-.1-.2-.1-.3-.1-.3-.3-.6-.4-.8.5-.2.9-.5 1.3-.8.6-.5 1.1-1.2 1.3-2l1.9-7.3c.3-1.1.1-2.2-.4-3.1-.5-.9-1.4-1.6-2.4-1.9h-.1c-.3-.1-.7-.1-1-.1-1.1 0-2.1.4-2.9 1.2-.5-.6-1.1-1-1.7-1.5-.3-.2-.6-.5-.9-.7-.7-.4-1.4-.8-2.1-1.1-.9-.4-1.9-.7-2.9-1-1.1-.2-1.8-.3-2.6-.4zm10.6 22.1c-1.2 2.4-3.1 4.3-5.5 5.6-2 1-4.1 1.5-6.1 1.5-4.7 0-9.2-2.5-11.5-6.9l-.5 2c-.2.9-1 1.4-1.8 1.4-.2 0-.3 0-.5-.1-1-.3-1.6-1.3-1.4-2.3l1.9-7.3c.2-.9 1-1.4 1.8-1.4.2 0 .3 0 .5.1l7.3 1.9c1 .3 1.6 1.3 1.4 2.3-.2.9-1 1.4-1.8 1.4-.2 0-.3 0-.5-.1l-3.7-1c1.1 2.8 3.5 4.9 6.4 5.6.8.2 1.5.3 2.3.3 3.4 0 6.6-1.8 8.3-4.9.4-.6 1-.9 1.6-.9.3 0 .6.1.9.2h.1c.9.5 1.2 1.6.8 2.6zm-10.6-7c.6 1 1.4 1.6 2.5 1.9l.3.1 2.4.6 1 .3c-.4.3-.7.7-1 1.1v.1c-1.1 2-3.1 3.4-5.3 3.7-.3 0-.7.1-1 .1-.6 0-1.2-.1-1.8-.2-.1 0-.2-.1-.3-.1l-.9-.3c1.2-.5 2.2-1.5 2.5-2.8.4-1.4 0-2.8-1-3.8-.5-.6-1.2-1-2-1.2l-.9-.2-1.2-.3-1.6-.4c.5-.
4.8-.8 1.1-1.4 1.3-2.2 3.7-3.6 6.3-3.6.3 0 .6 0 .9.1.3 0 .6.1.9.2.4.1.8.3 1.2.4h-.1c-1 .4-1.9 1.3-2.3 2.4 0 .1-.1.2-.1.4-.3.8-.2 1.9.4 2.9zm10.4-6l.5-2c.2-.9 1-1.4 1.8-1.4.2 0 .3 0 .5.1 1 .3 1.6 1.3 1.4 2.3l-1.9 7.3c-.2.9-1 1.4-1.8 1.4-.2 0-.3 0-.5-.1l-7.3-1.9c-1-.3-1.6-1.3-1.4-2.3.2-.9 1-1.4 1.8-1.4.2 0 .3 0 .5.1l3.7 1c-1.1-2.8-3.5-4.9-6.4-5.6-.8-.2-1.6-.3-2.4-.3-3.3 0-6.5 1.8-8.2 4.8-.3.7-1 1.1-1.7 1.1-.2 0-.3 0-.5-.1l-.4-.1h-.1c-.9-.5-1.3-1.6-.8-2.5 1.2-2.4 3.1-4.3 5.5-5.6 2-1 4.1-1.5 6.1-1.5 4.8-.2 9.3 2.3 11.6 6.7zM160.2 164.9c0-.6-.1-1.3-.2-1.9-.2-1.3-.6-2.6-1.2-3.7-1.4-2.7-3.7-4.8-6.7-6-.7-.3-1.5-.5-2.3-.6-.7-.1-1.4-.2-2.1-.2h-.4c-1 0-2 .2-3 .4 0-.1-.1-.3-.1-.4-.3-.7-.9-1.2-1.6-1.5-.3-.1-.7-.2-1-.2-.6 0-1.2.2-1.7.5s-.8.8-1 1.3l-1.2 3.2-1.1 2.9c-.4 1.1-.1 2.3.7 3.1-1.3.5-2.2 1.8-2.2 3.3 0 1.9.5 3.7 1.3 5.3.3.7.7 1.3 1.1 1.9 2.3 3.2 6 5.2 10.2 5.2h.1c3.4 0 6.5-1.4 8.8-3.8.6-.6 1.1-1.2 1.6-1.9s.8-1.5 1.2-2.3c.5-1.3.8-2.9.8-4.6zm-12.5 10.5h-.1c-3.6 0-6.8-1.8-8.6-4.6-.6-.9-1.1-1.9
-1.3-3-.2-.8-.4-1.7-.4-2.6 0-.4.1-.7.4-.9.2-.2.6-.4.9-.4.7 0 1.3.6 1.3 1.3 0 2.2 1 4.4 2.7 5.9 1.5 1.3 3.3 1.9 5.1 1.9 2.2 0 4.3-.9 5.8-2.7 2.8-3.2 2.5-8.1-.7-10.9-1.5-1.3-3.3-1.9-5.1-1.9-2.2 0-4.3.9-5.8 2.7l3.7 1.4c.3.1.5.5.4.8-.1.3-.3.4-.6.4h-.2l-5.2-2-.8-.3c-.3-.1-.5-.5-.4-.8l1.2-3.2 1.1-2.8c.1-.3.3-.4.6-.4h.2c.3.1.5.5.4.8l-1.2 3.3c1.9-1.7 4.3-2.5 6.8-2.5 1.2 0 2.4.2 3.6.6 4 1.5 6.6 5.3 6.6 9.5-.1 5.7-4.7 10.3-10.4 10.4zm-5.8-11.5l1.9.7-.2.1h-.1c-.6.3-1 .7-1.3 1.2 0-.2-.1-.5-.1-.8 0-.3 0-.8-.2-1.2zm5.6 1.6l1.7-4.6c.1-.3.3-.4.6-.4h.2c.3.1.5.5.4.8l-1.8 4.8c0 .2-.1.3-.3.4L145 168l-.1-.2-.8-.3c-.1-.3 0-.7.3-.8l3.1-1.2zm-.6-5.7h.4c0 .1-.1.2-.1.3-.1-.2-.2-.3-.3-.3zm3.9 7l1.6-4.4c.4.7.7 1.5.7 2.4.1 1.5-.4 2.9-1.3 4-1 1.2-2.6 1.9-4.2 1.9-.8 0-1.5-.2-2.2-.5.2 0 .3-.1.5-.2l3.3-1.5c.1 0 .2-.1.2-.1.7-.3 1.2-.9 1.4-1.6zM185.7 204c0-.3 0-.5-.1-.8l-.6-1.9-.3-1.1c-.1-.3-.2-.5-.4-.7 0-.3 0-.5-.1-.8l-.9-3.1c-.1-.3-.2-.5-.4-.7 0-.3 0-.5-.1-.8-.7-2.3-2.8-3.9-5.2-3.9-.5 0-1.1.1-1.6.2-.3.1-.5.2-.7.4h-
.2c-.2 0-.4 0-.6.1h-.2l-2.3.7-.6.2c-.3.1-.5.2-.7.4h-.2c-.2 0-.4 0-.6.1l-3.1.9c-.3.1-.5.2-.7.4h-.2c-.2 0-.4 0-.6.1l-3.1.9c-.3.1-.5.2-.7.4h-.2c-.2 0-.4 0-.6.1-2.9.9-4.5 3.9-3.6 6.8.1.3.2.5.4.7 0 .3 0 .5.1.8l.1.2c-.7.7-1.2 1.5-1.5 2.5-.5 1.6-.4 3.3.3 4.8.7 1.4 1.8 2.4 3.2 3-.3.5-.6 1.1-.8 1.8-.9 3.3 1.1 6.7 4.5 7.6.5.1 1 .2 1.6.2 2.8 0 5.3-1.9 6-4.7.3-1 .3-2.1 0-3.1l.6-.8c.1.1.2.1.3.2l5.7 2.1h.1c.6.2 1.1.3 1.7.3 2.3 0 4.4-1.5 5.2-3.7v-.1c.3-1-.1-2-.9-2.5 2.1-1.2 3.2-3.8 2.5-6.2v-.1c-.2-.5-.3-.7-.5-.9zm-2.2-.2l-3.1.9-.9-3.1 3.1-.9.9 3.1zm-4 5.7l-3.1-1.1 2-2.7c.1.1.2.3.2.4 0 .3 0 .5.1.8l.8 2.6zm2.6-10.3l-3.1.9-.9-3.1 3.1-.9.9 3.1zm-4.4-6.8c1.4 0 2.6.9 3.1 2.3l-3.1.9-.9-3.1c.2-.1.5-.1.9-.1zm-2.5.6l.9 3.1-3.1.9-.9-3.1 3.1-.9zm-3 6.5c.3-.1.5-.2.7-.4h.2c.2 0 .4 0 .6-.1l2.5-.7.1.3c-1.5.1-2.8.9-3.7 2l-3.7 5-1-.4c-.5-1.2-1.4-2.2-2.5-2.9l-.2-.8 2.5-.7c.3-.1.5-.2.7-.4h.2c.2 0 .4 0 .6-.1l3-.8zm-1.6-5.2l.9 3.1-3.1.9-.9-3.1 3.1-.9zm-4.6 1.4l.9 3.1-3.1.9-.9-3.1 3.1-.9zm-4.6 1.4l.9 3.1-3.1.9c-.4-1.7.5
-3.5 2.2-4zm7.1 17.9c.1.2.2.5.2.8.2.7.2 1.5.1 2.2-.5 1.8-2.1 3-3.9 3-.3 0-.7 0-1-.1-2.1-.6-3.4-2.7-2.9-4.9.5-1.8 2.1-3 3.9-3 .3 0 .7 0 1 .1l1.7-2.2-2.3-.8c-.4.6-.9 1-1.5 1.4-.6.3-1.2.4-1.8.4-1.5 0-2.9-.8-3.6-2.2-1-2-.2-4.4 1.8-5.4l-.5-1.7 3.1-.9.7 2.3c1.2.4 2.1 1.4 2.5 2.6l.1.5 3.6 1.3 4.6-6.2c.6-.8 1.6-1.2 2.5-1.2.7 0 1.4.2 2 .7L168.5 215zm13.9-2.1c-.4 1.3-1.7 2.2-3 2.2.1.1.1.3 0 .4-.1.2-.3.4-.5.4h-.2l-3.8-1.3c-.3-.1-.4-.4-.4-.7 0-.1.1-.2.2-.3l-2.1-.8 2-2.6 7.8 2.7zm-.6-3.6l-.9-3.1 3.1-.9c.5 1.7-.5 3.5-2.2 4z"/>
- <path fill="#FFFEFE" fill-rule="nonzero" d="M166.9 216.4c-.3-.9-1.1-1.5-2-1.5-.2 0-.4 0-.6.1-1.1.3-1.7 1.5-1.4 2.6.3.9 1.1 1.5 2 1.5.2 0 .4 0 .6-.1h.2c1-.3 1.6-1.4 1.3-2.4-.1-.1-.1-.2-.1-.2zM163.9 207.1c-.3-.8-1.1-1.3-1.9-1.3-.3 0-.5 0-.8.1-1.1.4-1.6 1.6-1.2 2.7.3.8 1.1 1.3 1.9 1.3.3 0 .5 0 .8-.1.1 0 .1 0 .2-.1 1-.4 1.5-1.5 1.1-2.5l-.1-.1zM136.1 109.9c-.3.6-.5 1.2-.6 1.8 0 .1-.1.2-.1.4-.1.7-.2 1.3-.2 2l-.4.2-.6.4-.9.6-.2.1-.4.3-2 1.2-2.7 1.7-2.3 1.4c-.3.1-.5.3-.7.5-1.8 1.4-2.5 3.9-1.5 6 .8 1.8 2.6 3 4.6 3h.2c.7 0 1.3-.2 1.9-.4.3-.2.7-.3 1-.6l.4-.2 1.6-1 1.1-.7.5-.3 1.9-1.2.9-.6 2.2-1.4.6-.4c.6.3 1.3.6 2 .7h.1c.7.2 1.4.2 2.1.2 4.5 0 8.4-3.1 9.4-7.5.3-1.4.3-2.9 0-4.4-.3-1.1-1-2-2.1-2.4h-.1c0-1.1-.5-2.1-1.3-2.8-1.1-.9-2.4-1.5-3.8-1.8h-.1c-.6-.1-1.3-.2-2-.2-1.8 0-3.4.5-4.9 1.4-.8.5-1.6 1.1-2.2 1.8-.4.6-1 1.4-1.4 2.2zm2.8 2.8c.6-2.9 3.2-4.9 6-4.9.4 0 .8 0 1.3.1.9.2 1.7.6 2.4 1.2l-.2.1.1.1-4.4 2.8c-.3.2-.6.5-.7.8-.2.6-.2 1.2.2 1.7.4.6 1 .9 1.7.9.4 0 .7-.1 1-.3l4.6-2.7c.2.9.2 1.9 0 2.8
-.3 1.5-1.2 2.7-2.2 3.5-1.1.8-2.4 1.3-3.8 1.3-.4 0-.9 0-1.3-.2-1-.3-2-.8-2.8-1.6l-.7.4-2.2 1.4-2.4 1.5-2.1 1.3-4 2.5c-.1.1-.2.2-.4.2-.2.1-.4.1-.6.1h-.1c-.6 0-1.1-.3-1.4-.9-.3-.8 0-1.7.8-2l11.5-7.3c-.1-.5-.2-1-.2-1.5-.3-.3-.3-.8-.1-1.3z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M154.8 144.4l-2.2-4.7c-.1-.3-.5-.4-.7-.3-.3.1-.4.5-.3.7l2.2 4.7c.1.2.3.3.5.3.1 0 .2 0 .2-.1.3 0 .4-.4.3-.6zM161 185.3c.1.2.3.2.5.2.1 0 .2 0 .3-.1.3-.2.3-.5.1-.8l-2.5-3.5c-.2-.3-.5-.3-.8-.1-.3.2-.3.5-.1.8l2.5 3.5z"/>
- <path fill="#E1E1E6" fill-rule="nonzero" d="M179 214.8l-3.8-1.3c-.2-.1-.3 0-.5.1-.1.1-.2.2-.2.3-.1.3.1.6.4.7l3.8 1.3h.2c.2 0 .5-.1.5-.4v-.4c-.1-.2-.2-.3-.4-.3zM179.7 181.2c.1 0 .3 0 .4-.1.2-.2.3-.5.1-.8l-2.7-3.2-1.6-1.9c-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8l.9 1.1 3.3 4c.2.1.4.2.5.2z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M268.1 159.5l-6 5.5c-.2.2-.2.6 0 .8.1.1.3.2.4.2.1 0 .3 0 .4-.1l6-5.5c.2-.2.2-.6 0-.8-.2-.3-.5-.3-.8-.1zM125.9 112.2c.1.2.3.4.5.4h.2c.3-.1.4-.4.3-.7l-1.7-4.7c-.1-.3-.4-.4-.7-.3-.3.1-.4.4-.3.7l1.7 4.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M98.9 188.6c.6-.9 1.6-1.5 2.5-1.7-1.1.2-2.2.8-2.9 1.8-.2.2-.3.5-.4.7h.2c.2-.2.3-.5.6-.8zM113 187.5c-.7-.2-1.3-.4-2-.3-1.6 0-3.3.8-4.3 2.1 0 .1.1.2.1.3 1.4-2 3.9-2.8 6.2-2.1zM95.5 213.7c.3.6.7 1.2 1.3 1.6.5.4 1.1.6 1.7.6l-.1-.1c-.6-.1-1.2-.3-1.7-.7-.6-.4-1-.9-1.2-1.4zM90.5 210.7c-2-1.5-2.9-4-2.4-6.3-.6 2.4.3 5 2.4 6.5 1.1.8 2.4 1.1 3.6 1.1.3 0 .7 0 1-.1v-.2c-1.6.4-3.2.1-4.6-1zM91.6 191.8c.4-.5.8-1 1.3-1.4-.6.4-1.2.9-1.6 1.6-1.8 2.5-1.4 5.9.8 7.9.1 0 .2-.1.3-.1-2.3-2-2.7-5.5-.8-8zM116.4 197.4c.2.1.3.2.5.4-.2-.2-.4-.4-.7-.5-.2-.2-.5-.3-.8-.4.3.1.7.3 1 .5zM109.4 218.5l-.6-3.3h-.1l.5 3.3c.1.1.2.1.2 0zM108.5 214.1c.1 0 .1 0 0 0 .1 0 .1 0 0 0zM102.4 213.5c-.1.3-.2.5-.4.7l-.3.3s0 .1.1.1l.3-.3c.1-.2.2-.5.3-.8l.1.1c.3.2.6.3.9.5-.4-.1-.7-.3-1-.6 0 .1 0 0 0 0zM111.9 213.8c0 .1.1.2.2.4.2.4.4.9.5 1.4 0-.1 0-.1.1-.2-.2-.5-.4-1-.5-1.4-.1-.1-.2-.2-.3-.2 0-.3-.2-.5-.5-.5h-.2c-.1 0-.2.1-.2.2.1 0 .1-.1.2-.1.3 0 .6.1.7.4zM110.3 225.1c.1.3-.2.6-.6.8-.5.3-1.2.5
-1.8.5.7-.1 1.4-.3 2-.5.5-.2.8-.6.7-.9l-1-5.4h.1c-.1 0-.2.1-.2.1l.8 5.4zM99.7 215.7l.1.1h.1c-.1 0-.1 0-.2-.1zM104.3 217.3c-.7-.2-1.3-.5-1.9-.9.6.4 1.2.7 1.9.9z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M114.5 211.4c.3.1.5.4.5.7-.4 1.9-1 4.2-2.5 5.8l-.1.1c-.5.6-1.2 1.1-2 1.4.9-.4 1.6-.9 2.1-1.5l.1-.1c1.4-1.6 2-3.9 2.4-5.8.1-.3-.1-.6-.5-.7h-.1c-.3 0-.5.2-.6.5v.1c.1-.3.4-.5.7-.5z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M121.5 195.5c.4-1.4.5-2.9.2-4.4-.4-2.7-1.9-5.1-4.2-6.8-1.8-1.3-3.9-2-6.1-2-1.4 0-2.7.3-4 .8-1.4-.9-3.1-1.3-4.8-1.3-2.4 0-4.7.9-6.4 2.5-3.3.1-6.5 1.8-8.4 4.5-1.9 2.7-2.5 6.2-1.6 9.3-.3.3-.6.7-.9 1.1-3.5 4.9-2.4 11.7 2.5 15.2 1.2.8 2.5 1.4 3.8 1.8.6 1 1.4 1.9 2.4 2.6 1.2.9 2.6 1.4 4 1.5.7.6 1.5 1 2.4 1.5l.7 4.2.1.5c.3 2.1 2.2 4.6 6.2 4.6.7 0 4.4-.1 6.5-2.6.5-.6.8-1.2 1-1.9.2-.8.3-1.6.2-2.4l-.3-2.1c.4-.3.8-.7 1.2-1.1l.2-.2c2.2-2.5 3.1-5.7 3.5-7.9.1-.5.1-1.1.1-1.6.8-.6 1.5-1.4 2.1-2.2 1.8-2.4 2.5-5.4 2-8.4-.4-1.9-1.2-3.7-2.4-5.2zm-1.9 12.1c-.8 1.1-1.8 2-3 2.7.4.6.6 1.4.5 2.1-.4 1.9-1.1 4.8-2.8 6.8l-.1.1c-.6.7-1.3 1.2-2.1 1.7l.7 3.6c.1.5 0 1.1-.2 1.6-.1.3-.2.5-.4.7-1.1 1.3-3.1 1.8-4.6 1.8-2.4 0-3.6-1.2-3.8-2.5l-.1-.5-1-5.5c-1.5-.6-2.7-1.3-3.7-2.2-1.3 0-2.5-.3-3.5-1.1-1-.7-1.8-1.7-2.2-2.8-1.5-.1-2.9-.6-4.1-1.5-1.8-1.3-3.1-3.2-3.5-5.4-.4-2.2.1-4.4 1.4-6.3.5-.7 1.1-1.3 1.7-1.8-1.4-2.7-1.2-6 .6-8.6 1.5-2.2 4.1-3.6 6.8-3.6h.7c1.3-1.6 3.2-2.6 5.3
-2.6 1.4 0 2.8.4 4 1.2.2.2.4.3.6.5 1.2-.8 2.7-1.3 4.2-1.3 1.7 0 3.3.5 4.6 1.4 1.7 1.2 2.9 3 3.3 5.1.3 1.6.1 3.2-.6 4.6 1.5 1.3 2.4 3 2.8 5 .4 2.5-.1 4.9-1.5 6.8z"/>
- <path fill="url(#w)" fill-rule="nonzero" d="M108.2 214.3c.1 0 .2-.1.3-.1-.1 0-.2 0-.3.1z"/>
- <path fill="url(#x)" fill-rule="nonzero" d="M110.3 225.1l-.9-5.4c.1 0 .2-.1.2-.1.2-.1.5-.1.7-.2.8-.3 1.5-.8 2-1.4l.1-.1c1.4-1.6 2.1-3.9 2.5-5.8.1-.3-.1-.6-.5-.7-.3-.1-.6.1-.7.4-.2 1.2-.6 2.6-1.1 3.7v-.1c0 .1 0 .1-.1.2-.2-.5-.4-1-.5-1.4-.1-.2-.1-.3-.2-.4-.1-.3-.4-.5-.7-.4-.1 0-.1.1-.2.1-.1.2-.2.4-.1.6 0 .1.1.3.2.5.2.4.5 1 .6 1.6.2.6.1.9 0 .9l-.1.1c-.4.5-1 .9-1.6 1.1-.2.1-.3.1-.5.2h-.1l-.5-3.3c-.9.3-1.8.4-2.2.4h-.4c-.3 0-.5-.3-.5-.6 0-.1.1-.2.2-.3-.7 0-1.3-.2-2-.4h.1l.5 3s-.1 0-.1-.1c-.7-.2-1.3-.5-2-.9-.1 0-.2 0-.3-.1-1.2-.7-1.9-1.8-2.2-2.7v-.1-.2c-.1-.2-.1-.4-.1-.6v-.1c0-.1-.1-.3-.2-.4-.1-.1-.3-.1-.5 0-.3.1-.3.9-.1 1.8.2.6.6 1.2 1 1.7l.1.1c.3.4.7.7 1 1 1.1.9 2.5 1.4 3.8 1.8l1.3 7.2c1.3 0 2.6.1 3.8.1.1-.1.4-.3.3-.7z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M107.5 226.5h.4c.7-.1 1.4-.3 1.8-.5-1.2-.1-2.5-.1-3.8-.1v.1c.2.4.8.5 1.6.5z"/>
- <path fill="url(#y)" fill-rule="nonzero" d="M107.5 226.5h.4c.7-.1 1.4-.3 1.8-.5-1.2-.1-2.5-.1-3.8-.1v.1c.2.4.8.5 1.6.5z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M105.2 203.6c.8-.3 1.5-.5 2.3-.8-.8.3-1.6.6-2.3.8zM102.8 204.3c-.7.2-1.5.3-2 .5.6-.2 1.3-.3 2-.5zM98.8 214s0 .1 0 0c.2.7.6 1.3.9 1.7h.1c-.5-.5-.8-1-1-1.7zM107.4 202.8c.7-.3 1.4-.6 1.9-.8-.5.2-1.2.5-1.9.8zM99.6 212.7s.1 0 0 0c.1.1.1 0 0 0z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M105.8 214.7c.1-.1.3-.2.4-.2 0 0 1 .1 2-.3.1 0 .2-.1.3-.1h.1c.4-.2.8-.5 1.2-.8l.1-.1.4-.4.5-.5c.1-.1.1-.2.2-.3.6-.9 1-2 1.1-3h.6c2 0 4-1 5.3-2.8 1.9-2.7 1.4-6.4-1-8.5-.1-.1-.3-.2-.5-.4-.3-.2-.6-.4-1-.6-.1 0-.1-.1-.2-.1.2-.2.4-.4.5-.6 1.8-2.6 1.2-6.1-1.4-7.9-.4-.3-.9-.5-1.3-.7-2.2-.7-4.8.1-6.2 2.1 0-.1-.1-.2-.1-.3-.1.1-.1.2-.2.2-.3-.8-.9-1.5-1.6-2-.8-.6-1.7-.8-2.7-.8-.3 0-.5.1-.8.1-1 .3-1.9.8-2.5 1.7-.2.3-.4.6-.5.9h-.2c0 .1-.1.1-.1.2-.6-.2-1.2-.2-1.8-.2-1.2 0-2.3.4-3.3 1-.5.4-1 .8-1.3 1.4-1.8 2.5-1.4 6 .8 8.1-.1 0-.2.1-.3.1l.1.1c-1.3.4-2.4 1.2-3.2 2.4-.2.3-.4.7-.6 1.1v.1l-.3.9c-.5 2.3.4 4.8 2.4 6.3 1.4 1 3.1 1.3 4.6 1.1v.2c0 .3 0 .6.1.9v.1c.1.2.1.4.2.6.3.6.7 1.1 1.2 1.4.5.4 1.1.6 1.7.7-.3-.4-.5-.9-.6-1.4-.7-2.4.3-3 .7-3.2.5-.2 1.1-.2 1.5.1.4.3.7.7.8 1.3 0 .5.3 1.3.9 2l.3-.3c.2-.2.3-.5.4-.7 0 0 .1 0 .1.1.3.2.6.4.9.5.1.1.3.1.4.2h.1c.5.2 1.1.3 1.8.3zm2.1-19.7c.6-.2 1.3.1 1.5.7l.8 2.4c-.8-.1-1.6.2-2.2.8l-.8-2.4c-.3-.7.1-1.3.7-1.5zM97 199.8c-.2
-.6.1-1.3.7-1.5.6-.2 1.3.1 1.5.7l.8 2.4c-.8-.1-1.6.2-2.2.8l-.8-2.4zm6.3 8.1c.1-.1.1-.2.2-.2-.1.1-.2.1-.2.2-.2 0-.4 0-.6-.1-.7-.1-1.4-.3-2.1-.6-.4-.2-.8-.3-1.1-.6-.4-.2-.8-.5-1.2-.8l-.2-.1c-.1-.1-.1-.2 0-.3 0 0 0-.1.1-.1.2-.1.5-.2.7-.3.3-.1.6-.3 1-.4l1.7-.6c1.1-.4 2.3-.8 3.4-1.2 1.2-.4 2.3-.7 3.5-1.1l1.7-.5c.3-.1.7-.2 1-.3.2-.1.5-.1.7-.2.1 0 .2 0 .2.1v.1l-.1.2c-.1.5-.3 1-.5 1.4-.2.4-.4.8-.6 1.1-.4.7-.9 1.3-1.3 1.8-.1.1-.3.2-.4.4-.8.8-1.7 1.3-2.7 1.6-1 .5-2.1.7-3.2.5z"/>
- <path fill="url(#z)" fill-rule="nonzero" d="M203.6 209.1c.1.2.1.3.1.5.1 0 .2 0 .3.1-.1-.3-.3-.4-.4-.6z"/>
- <path fill="url(#A)" fill-rule="nonzero" d="M227 221.9v-1.3-1.4-1.4-.7-1c-.7.3-1.5.5-2.2.5 0 2.6 0 4.6.1 6.2h2.2c-.1-.3-.1-.6-.1-.9z"/>
- <path fill="url(#B)" fill-rule="nonzero" d="M203.3 223.1l-.2-.2-.5-.5c-.1-.1-.2-.2-.2-.3-.1-.2-.3-.3-.4-.5-.1-.1-.2-.2-.2-.3-.2-.2-.3-.4-.5-.5-.1-.1-.2-.2-.2-.3l-.6-.6c-.1-.1-.1-.2-.2-.2-.3-.3-.5-.6-.8-.9-.5-.6-1-1.2-1.5-1.9l-.1-.1-1.2-1.8c0-.1-.1-.1-.1-.2-.4-.6-.7-1.2-1.1-1.9 0-.1-.1-.1-.1-.2-.3-.6-.7-1.3-1-1.9 0-.1 0-.1-.1-.2-.3-.6-.5-1.1-.7-1.7-1-.4-2-.9-3-1.4 1.6 4.2 3.9 8.9 7.1 12.7 1.1 1.3 2 2.3 2.9 3.3.9-.1 1.9-.1 2.8-.2 0 0 0-.1-.1-.2z"/>
- <path fill="url(#C)" fill-rule="nonzero" d="M204.7 212.6c0 .1 0 .1.1.2.1.4.2.8.4 1.2v.1c.1.4.2.7.3 1.1 0 .1.1.2.1.3.1.4.2.7.3 1.1v.1l.3 1.2c0 .1.1.2.1.3.1.3.2.6.2.9 0 .1.1.2.1.3.1.4.2.7.3 1.1 0 .1 0 .1.1.2.1.3.1.6.2.8 0 .1 0 .2.1.3.1.3.1.6.2.9V223c.7 0 1.5-.1 2.3-.1-.4-2.1-1.3-5.4-2.9-10.6-.8-.1-1.6-.3-2.5-.4.1.3.2.5.3.7z"/>
- <path fill="url(#D)" fill-rule="nonzero" d="M214.9 199.4l8.1 2.3h.2c.4 0 .7-.2.8-.6.1-.4-.1-.9-.6-1l-8.1-2.3h-.2c-.4 0-.7.2-.8.6-.1.4.1.8.6 1z"/>
- <path fill="url(#E)" fill-rule="nonzero" d="M267.5 198.4l-1.2-.6c-.4.3-.9.6-1.3.9.9-.1 1.7-.2 2.5-.3z"/>
- <path fill="url(#F)" fill-rule="nonzero" d="M151.3 155.4c-1.2-.4-2.4-.6-3.6-.6-2.5 0-4.9.9-6.8 2.5l1.2-3.3c.1-.3 0-.7-.4-.8h-.2c-.3 0-.5.2-.6.4l-1.1 2.8v4.4l5.2 2h.2c.3 0 .5-.2.6-.4.1-.3 0-.7-.4-.8l-3.7-1.4c1.5-1.8 3.7-2.7 5.8-2.7 1.8 0 3.6.6 5.1 1.9 3.2 2.8 3.6 7.7.7 10.9-1.5 1.8-3.7 2.7-5.8 2.7-1.8 0-3.6-.6-5.1-1.9-1.7-1.5-2.7-3.6-2.7-5.9v2.5c0 1.1-.3 2.2-.9 3 1.9 2.8 5 4.6 8.6 4.6h.1c5.7-.1 10.3-4.7 10.2-10.4.2-4.2-2.4-8-6.4-9.5z"/>
- <path fill="url(#G)" fill-rule="nonzero" d="M144.1 167.6l.8.3.1.2 3.3-1.5c.2-.1.3-.3.3-.4l1.8-4.8c.1-.3 0-.7-.4-.8h-.2c-.3 0-.5.2-.6.4l-1.7 4.6-3.1 1.3c-.3 0-.4.4-.3.7z"/>
- <path fill="url(#H)" fill-rule="nonzero" d="M163 112.5c.1.5.7.5.8 0 1.2-4.8 5-8.6 9.8-9.8.5-.1.5-.7 0-.8-4.8-1.2-8.6-5-9.8-9.8-.1-.5-.7-.5-.8 0-1.2 4.8-5 8.6-9.8 9.8-.5.1-.5.7 0 .8 4.8 1.2 8.5 5 9.8 9.8z"/>
- <path fill="url(#I)" fill-rule="nonzero" d="M234.8 212.7c-.1.5-.2 1.1-.3 1.6v.1c-.1.5-.2 1-.4 1.5-.1.5-.3.9-.4 1.4-.1.4-.3.8-.4 1.1 0 .1-.1.3-.1.4-.1.2-.2.5-.3.7-.1.1-.1.3-.2.4-.1.2-.2.4-.2.6-.1.1-.1.3-.2.4-.1.2-.2.4-.2.5-.1.1-.1.3-.2.4-.1.2-.2.3-.2.5-.1.1-.1.2-.2.3 0 0 0 .1-.1.1.8 0 1.7 0 2.5.1.8-1.7 1.5-3.5 2-4.9.6-1.7 1.1-4 1.6-6.9l-2.4.6c-.1.3-.1.6-.2 1l-.1.1z"/>
- <path fill="url(#J)" fill-rule="nonzero" d="M191.9 204.4l-.3-.9c1.4 1.1 3.3 2 6 2.5h.1c.3 0 .5-.2.5-.5.1-.3-.1-.6-.4-.6-5.2-1-7.3-3.8-8.2-5.4-.1-.4-.3-.8-.4-1.2 0-.1-.1-.3-.1-.5l-.3-1.2c0-.2-.1-.4-.1-.5-.1-.4-.1-.8-.2-1.2v-.6-1c-.1.1-.2.1-.3.1-.1 0-.2 0-.3-.1-.5-.4-1.1-.7-1.6-1.1-.1 4.4.9 8.4 3 11.4l.3.9c1 .6 1.9 1.1 2.9 1.6-.3-.6-.4-1.2-.6-1.7z"/>
- <path fill="url(#K)" fill-rule="nonzero" d="M178.1 85.3c-.1-.3-.5-.3-.6 0-.8 3.2-3.4 5.8-6.6 6.6-.3.1-.3.5 0 .6 3.2.8 5.8 3.4 6.6 6.6.1.3.5.3.6 0 .8-3.2 3.4-5.8 6.6-6.6.3-.1.3-.5 0-.6-3.3-.9-5.8-3.4-6.6-6.6z"/>
- <path fill="url(#L)" fill-rule="nonzero" d="M180.4 204.7l3.1-.9-.9-3-3.1.9"/>
- <path fill="url(#M)" fill-rule="nonzero" d="M176.8 200.9c-.9 0-1.9.4-2.5 1.2l-4.6 6.2-3.6-1.3-.1-.5c-.4-1.2-1.3-2.2-2.5-2.6l-.7-2.3-3.1.9.5 1.7c-2 1-2.8 3.4-1.8 5.4.7 1.4 2.1 2.2 3.6 2.2.6 0 1.2-.1 1.8-.4.6-.3 1.2-.8 1.5-1.4l2.3.8-1.7 2.2c-.3-.1-.7-.1-1-.1-1.8 0-3.4 1.2-3.9 3-.6 2.1.7 4.3 2.9 4.9.3.1.7.1 1 .1 1.8 0 3.4-1.2 3.9-3 .2-.7.2-1.5-.1-2.2-.1-.3-.1-.5-.2-.8l10.3-13.5c-.6-.3-1.3-.5-2-.5zm-13.9 8.8c-.1 0-.1 0-.2.1-.2.1-.5.1-.8.1-.8 0-1.6-.5-1.9-1.3-.4-1.1.1-2.3 1.2-2.7.2-.1.5-.1.8-.1.8 0 1.6.5 1.9 1.3 0 0 0 .1.1.1.4 1-.1 2.1-1.1 2.5zm2.8 9.2h-.2c-.2.1-.4.1-.6.1-.9 0-1.7-.6-2-1.5-.3-1.1.3-2.3 1.4-2.6.2-.1.4-.1.6-.1.9 0 1.7.6 2 1.5v.1c.4 1.1-.2 2.2-1.2 2.5z"/>
- <path fill="url(#N)" fill-rule="nonzero" d="M274.7 179.9c.4-1.1 1.2-2 2.3-2.4-.4-.2-.8-.3-1.2-.4-.3-.1-.6-.1-.9-.2-.2 1-.4 1.9-.8 3h.6z"/>
- <path fill="url(#O)" fill-rule="nonzero" d="M180.9 206.3l.9 3.1c1.7-.5 2.6-2.3 2.1-4l-3 .9z"/>
- <path fill="url(#P)" fill-rule="nonzero" d="M284.7 187.9c-.4-.2-.7-.3-1-.3-.7 0-1.3.3-1.6.9-1.7 3.1-4.9 4.9-8.3 4.9-.8 0-1.5-.1-2.3-.3-2.9-.7-5.3-2.8-6.4-5.6l3.7 1c.2 0 .3.1.5.1.8 0 1.6-.6 1.8-1.4.3-1-.3-2-1.4-2.3l-7.3-1.9c-.2 0-.3-.1-.5-.1-.8 0-1.6.6-1.8 1.4l-1.9 7.3c-.3 1 .3 2 1.4 2.3.2 0 .3.1.5.1.8 0 1.6-.6 1.8-1.4l.5-2c2.4 4.4 6.9 6.9 11.5 6.9 2.1 0 4.2-.5 6.1-1.5 2.3-1.3 4.3-3.2 5.5-5.6.5-.9.2-2-.8-2.5z"/>
- <path fill="url(#Q)" fill-rule="nonzero" d="M172.7 212.8l2.1.8c.1-.1.3-.1.5-.1l3.8 1.3c.2 0 .3.2.3.3 1.3 0 2.6-.9 3-2.2l-7.7-2.7-2 2.6z"/>
- <path fill="url(#R)" fill-rule="nonzero" d="M176.1 196l-.9-3-3.1.9 1 3"/>
- <path fill="url(#S)" fill-rule="nonzero" d="M171.5 197.4l-.9-3.1-3.1 1 1 3"/>
- <path fill="url(#T)" fill-rule="nonzero" d="M166.9 198.8l-.9-3.1-3.1 1 1 3"/>
- <path fill="url(#U)" fill-rule="nonzero" d="M162.3 200.2l-.9-3.1c-1.7.5-2.6 2.3-2.1 4l3-.9z"/>
- <path fill="url(#V)" fill-rule="nonzero" d="M274.7 180c-.2 0-.4-.1-.6-.1-.4 1.3-1 2.7-1.8 4.1.9 1 1.3 2.4 1 3.8-.3 1.3-1.3 2.3-2.5 2.8l.9.3c3-2.5 5.1-4.5 6.1-5.5l-.3-.1c-1.1-.3-2-1-2.5-1.9-.6-1-.7-2.1-.4-3.1 0-.1.1-.2.1-.3z"/>
- <path fill="url(#W)" fill-rule="nonzero" d="M274.9 191.2c2.2-.3 4.2-1.7 5.3-3.7v-.1c.3-.4.6-.8 1-1.1l-1-.3s0 .1-.1.1c0 .2-1.9 2.2-5.2 5.1z"/>
- <path fill="url(#X)" fill-rule="nonzero" d="M187.6 158.4c-1.4-.9-3.2-.6-4 .7-.8 1.3-.3 3 1.1 3.9 1.4.9 3.2.6 4-.7.8-1.2.3-3-1.1-3.9z"/>
- <path fill="url(#Y)" fill-rule="nonzero" d="M276.7 136.6c-.3.7-.4 1.4-.4 2.1l-.9.3c-1.2.5-2.5 1.1-3.7 1.8-.2.1-.4.3-.7.4-.4.2-.7.5-1.2.8-.2.1-.4.3-.6.4l-.6.5c-.1.1-.3.2-.4.3h-.8c-1.1.1-9.8 2-18 3.9.6-1.9 1.2-3.8 1.6-5.8 1.3 0 2.7-.1 4-.2 1 .9 2.3 1.3 3.7 1.3 2.1 0 3.9-1.1 4.9-2.7.5.1 1 .1 1.5.1 4.8 0 9.1-3 10.7-7.5 3-1 5.2-3.7 5.7-6.9.6-.9 1.2-1.8 1.8-2.8 4-1.5 6.6-5.7 6-10 0-.4-.1-.7-.2-1.1 1.5-1.9 2.1-4.4 1.8-6.8-.3-2.1-1.2-4.1-2.7-5.6-.3-2.4-.8-4.7-1.5-7 .1-.4.1-.9.1-1.3 0-3.3-1.7-6.4-4.6-8.1-2.8-4.3-6.6-8-10.8-10.8-1.3-3.8-4.8-6.4-9-6.4-1.4 0-2.8.3-4.1.9-1.2-.3-2.4-.6-3.6-.8-1.7-1.5-4-2.4-6.2-2.4-.4 0-.8 0-1.2.1-2 .2-3.8 1.1-5.3 2.5-2.4.5-4.8 1.2-7 2.1-.6-.1-1.3-.2-2-.2-4.6 0-8.5 3.4-9.3 7.8l-.1.1c-4.1 1.1-7 4.8-7 9.1v.7c-.4.8-.8 1.7-1.1 2.5-1.6 1-2.6 2.8-2.6 4.8 0 .4 0 .7.1 1.1-.6-.6-1.2-1.2-1.9-1.7-.2-1.3-.8-2.4-1.4-3.4.3-2-.6-3.9-1.8-6.3-.2-.4-.4-.9-.7-1.3-.5-1-1.4-1.6-2.4-1.6-1.5 0-2.7 1.2-3.9 3.8-.7 1.6-2.2 5.3-1.1 7.6-.5 3.6 0 6 1.5 7.1l.1.1c.2 1.6.6 3.2 1.1 4.6-11 4.2
-28.2 12.1-33.8 19.4-1.3 1.8-1.6 4.3-.6 7.6 1.9 6.5 8.8 16.5 14 18.4 7.3 2.7 17.2 4.3 27.1 4.3h2c-2.1 1.4-4.1 2.9-6 4.5-3.9 1.5-7 2.8-9.5 3.9-.5-.8-1-1.5-1.6-2.2-1.1-1.3-2.4-2.4-3.8-3.3-2.9-1.8-6.2-2.8-9.7-2.8-6.2 0-11.9 3.1-15.2 8.3-1.1 1.7-1.8 3.4-2.3 5.3l.6.9c.2.3.1.6-.1.8-.1.1-.2.1-.3.1-.2 0-.3-.1-.5-.2-.5 3.2-.1 6.5 1 9.4 1.6 2.5 3.3 4.8 5 7.1.6.6 1.3 1.1 2.1 1.6 2.9 1.8 6.2 2.8 9.7 2.8 1.2 0 2.4-.1 3.5-.3l2.4-.6c-.2 1.1-.3 2.1-.3 3.2.7.5 1.4 1 2.2 1.5v-.1-1.3c0-.2 0-.5.1-.7 0-.4.1-.9.1-1.3 0-.3.1-.5.1-.8.1-.4.2-.9.2-1.3v-.2c0-.2.1-.4.1-.6.1-.5.2-.9.3-1.4.1-.3.1-.6.2-.8.1-.5.3-.9.4-1.4.1-.3.2-.6.3-.8.2-.5.4-1 .5-1.4.1-.3.2-.6.3-.8.2-.5.4-1 .7-1.5.1-.3.2-.5.4-.8.3-.5.5-1.1.8-1.6.1-.2.2-.5.4-.7.3-.6.7-1.2 1-1.8.1-.2.2-.4.3-.5.2-.3.4-.6.6-.8 3-4.4 5.4-6.8 5.4-6.8.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.2-.2-.6-.2-.8 0-.1.1-2.3 2.3-5.1 6.4-1.1.2-2.1.3-3.1.5h-.1c-.4.1-.8.1-1.1.2h-.2c-.3 0-.6.1-.9.1h-.2c-.3 0-.6.1-.9.1-.2 0-.4 0-.6.1h-.7-.2s-.8 0-1.2-.5c0-.1-.1-.1-.1-.2s-.1-.1-.1-.2v-.6c0-.
2.1-.5.3-.9.1-.1.1-.2.2-.4.2-.3.6-.6 1.2-1 .1 0 .1-.1.2-.1s.1-.1.2-.1c1.1-.6 2.6-1.4 4.4-2.2 4.1-1.9 9.7-4.1 14.3-5.9.1 0 .1-.1.2-.1.5-.4 1-.9 1.6-1.3.4-.3.7-.6 1.1-.8.3-.3.7-.5 1-.8.8-.6 1.5-1.1 2.3-1.6.2-.1.4-.3.6-.4.5-.3 1.1-.7 1.6-1 .1-.1.3-.2.4-.3.8-.5 1.6-.9 2.4-1.4.3-.2.6-.4 1-.5 4.1-.6 10.4-1.6 14.2-3.2.3-.1.4-.4.3-.7-.1-.3-.4-.4-.7-.3-5.7 2.3-17.7 3.6-17.8 3.6h-.2c-1.7.1-3.4.2-5.1.2-9.9 0-19.5-1.6-26.3-4.1-.7-.3-1.4-.7-2.3-1.4-.2-.2-.4-.3-.6-.5-.4-.4-.8-.8-1.3-1.2-.2-.2-.4-.4-.6-.7-.4-.5-.9-1-1.3-1.5s-.8-1.1-1.2-1.6c-.6-.8-1.2-1.7-1.8-2.6-.4-.6-.7-1.2-1.1-1.8-2-3.6-3.3-7.2-2.9-9.7v-.1c.1-.6.3-1.1.7-1.6.2-.2.4-.4.6-.7.1-.1.1-.2.2-.2.1-.2.3-.3.4-.5l.3-.3.4-.4.3-.3c.1-.1.3-.3.5-.4.1-.1.2-.2.4-.3.2-.1.3-.3.5-.4.1-.1.3-.2.4-.3.2-.1.3-.3.5-.4.1-.1.3-.2.4-.3.2-.1.4-.3.6-.4.1-.1.3-.2.4-.3.2-.1.4-.3.6-.4.1-.1.3-.2.4-.3.2-.2.5-.3.7-.5.1-.1.2-.2.4-.2.3-.2.7-.4 1-.6.1-.1.2-.1.3-.2.3-.2.7-.4 1-.6.2-.1.3-.2.5-.3.2-.1.5-.3.7-.4.2-.1.4-.2.5-.3.2-.1.5-.3.7-.4l.6-.3c.2-.1.5-.3.7-.4l.6-.3c.2-
.1.5-.2.7-.4l.6-.3c.2-.1.5-.2.7-.4l.6-.3c.2-.1.5-.2.7-.3.2-.1.4-.2.7-.3.2-.1.5-.2.7-.3.2-.1.5-.2.7-.3.2-.1.5-.2.7-.3.2-.1.4-.2.7-.3.3-.1.5-.2.8-.3.5-.2.9-.4 1.4-.6l.6-.3c.3-.1.5-.2.8-.3l.6-.3c.3-.1.5-.2.8-.3l.6-.3c.3-.1.5-.2.8-.3.2-.1.4-.2.6-.2.3-.1.5-.2.8-.3.2-.1.4-.2.6-.2.3-.1.5-.2.8-.3.2-.1.4-.1.5-.2.3-.1.5-.2.8-.3.2-.1.4-.1.5-.2.3-.1.5-.2.8-.3.2-.1.3-.1.5-.2s.4-.1.6-.2c-.1.2-.1.5 0 .7 1.8 5.7 5.9 6.6 6.1 6.6h.2c.5 0 1-.4 1.1-.9.1-.6-.3-1.2-.9-1.3-.1 0-2-.5-3.5-3 3.4.1 7.2-2.6 7-6 1.4 1 3.5 2.9 3.5 5.5 0 3.8-3.7 5.1-3.9 5.2-.3.1-.4.4-.4.7 0 0 0 .1.1.1.1.2.3.3.5.3h.2s4.6-1.6 4.7-6.2c0-2-1-3.6-2.1-4.8l1.4-.4c.5.4 1.7 1.2 3.2 1.2h.6c.3 0 .5-.3.5-.6v-.1c-.1-.2-.3-.4-.6-.3-1.7.2-3.1-1.1-3.1-1.1-.1-.1-.4-.2-.6-.1l-2.3.7c-.2-.2-.5-.4-.7-.5 0-.7.1-1.4.1-2.2 0-.4.1-.9.2-1.3s.1-.9.2-1.3c-.5-.6-.7-1.3-.7-2.1 0-.6.1-1.1.4-1.5.2-.5.5-.9.9-1.2.1-.1.3-.2.4-.3.1-.1.3-.2.5-.2.2-.5.3-.9.5-1.3.2-.5.4-.9.6-1.4.1-.3.3-.7.5-1 0-.3-.1-.7-.1-1v-.1-.1c0-.6.1-1.3.3-1.8.2-.8.6-1.6 1.1-2.2.2-.3.5-.7.8-.9.5-
.5 1.1-.9 1.7-1.3.6-.3 1.3-.6 2.1-.7.3-.4.7-.7 1-1 0-.3.1-.7.2-1 .1-.4.2-.7.3-1 .9-2.3 3-4 5.5-4.5h.3c.3 0 .7-.1 1-.1.3 0 .6 0 .8.1.5.1.9.1 1.3.3.6-.3 1.3-.5 1.9-.8 1.3-.5 2.6-.9 4-1.2.7-.2 1.4-.3 2.1-.4.6-.6 1.2-1.1 2-1.5.8-.4 1.6-.7 2.5-.8.3 0 .6-.1.9-.1h1c.2 0 .4.1.5.1.1 0 .2.1.3.1.2 0 .3.1.5.1.1 0 .2.1.3.1.1.1.3.1.4.2.1 0 .2.1.3.1.1.1.3.2.4.2.1.1.2.1.3.2.1.1.3.2.4.3l.2.2c.2.2.4.3.6.5 1.7.2 3.3.6 4.9 1.1.6-.3 1.2-.6 1.8-.8.1 0 .2 0 .3-.1.2-.1.5-.1.7-.2h1c.4 0 .8 0 1.2.1h.2c.4.1.7.2 1 .3.1 0 .1 0 .2.1.3.1.7.3 1 .4 0 0 .1 0 .1.1l.9.6c.3.2.6.5.8.8.3.3.5.6.7.9v.1c.2.3.4.7.5 1v.1c.1.4.3.7.4 1.1.1.4.2.8.2 1.3 3.1 2.5 5.8 5.5 7.8 8.9 1.2 0 2.2.3 3.2.8.6.3 1.1.7 1.6 1.1.5.4.9.9 1.2 1.4 0 0 0 .1.1.1.1.2.3.5.4.7 0 0 0 .1.1.1l.3.9v.1c.1.2.1.5.2.7v.2c0 .3.1.6.1.9V92.9c0 .2-.1.5-.1.7-.3 1.7-1.2 3.1-2.5 4.2.2 1.5.3 2.9.3 4.4 1.2 1.2 2 2.8 2 4.7.1 2.2-.9 4.2-2.5 5.5.2.6.3 1.2.3 1.8.1 3.4-2.4 6.3-5.7 6.9-.8 1.2-1.7 2.3-2.6 3.3-.5 2.8-2.8 4.8-5.5 5-1.2 3.7-4.9 6.2-9 5.8-.9-.1-1.8-.3-2.6-.7h-.2c-.
4 1.6-1.9 2.6-3.5 2.5-.3 0-.5-.1-.8-.2-.3 1.2-.6 2.4-.9 3.5h1-2.4c.2-3.6-.3-5.8-.4-5.9-.1-.3-.4-.5-.7-.4h-.1c-.2.1-.4.4-.3.6 0 0 .9 3.8-.1 9.4-.4 1.4-.8 2.8-1.3 4.3-.1.2-.1.4-.2.6-.3.9-.6 1.7-1 2.6 7.4-1.8 15.5-3.6 19.4-4.4l-.6.6c-.9.9-1.9 2-2.7 2.9-.8 1-1.4 1.8-1.8 2.3-.2.3-.4.5-.5.7 0 0 0 .1-.1.1-.1.1-.1.2-.1.2-.2.3-.2.6-.3.9-2.9 1.5-6 3.1-9 4.5-2.9 1.4-5.5 2.7-7.6 3.6-.2.1-.3.2-.5.2-.1.1-.1.3-.2.4-.1.2-.2.4-.2.6 0 0 0 .1-.1.1-.1.4-.3.7-.4 1.1v.1c-.1.4-.3.8-.4 1.2-.1.4-.3.9-.4 1.3-.4 1.4-.8 2.9-1.1 4.4-1 4.8-1 5-.9 5.1.1.2.3.4.5.4h.2c.3-.1.4-.3.4-.6s.2-1.4.5-2.9c.9-.2 1.8-.3 2.6-.4 1.2-1.2 2.8-2 4.5-2.1 2-.2 3.9.6 5.3 1.8.8-.3 1.7-.5 2.7-.4 1.3.1 2.6.5 3.6 1.3 1.3-.2 2.4-.4 3.5-.7.4-.1.8-.3 1.2-.4.9-.8 1.9-1.6 3.1-2.2.7-.4 1.4-.6 2.1-.9 2.1-1.9 3.3-4 3.8-5.3.1-.2.1-.3.2-.5 0-.1.1-.3.1-.3.1-.2.1-.3.1-.3v.1c.1.1.2.3.3.6.4.9 1.1 2.6 1.5 4.9.8.1 1.6.2 2.3.3-.6-4.3-2.2-7-2.3-7.1-.4-.7-1.1-1.1-1.9-1.1h-.3c-.9.1-1.6.8-1.8 1.7-.1.2-1.6 5.6-7.9 8-2-1.7-4.3-3.1-7-4.3-2.9-1.2-6.1-1.8-9.7-1.8
-.8 0-1.6 0-2.5.1.1-.2.2-.4.2-.6 2.4-1.1 9.7-4.6 16.1-7.9.5.4 1.1.7 1.7.7.2 0 .4 0 .7-.1 0 0 .1 0 .3-.1.2-.1.5-.2.8-.3.6-.2 1.5-.6 2.7-1.2.1 0 .1-.1.2-.1.1.1.1.2.2.2.8.9 2 1.5 3.4 1.7.5.1.9.1 1.3.1 1.3 0 2.5-.4 3.5-1.1 2-1.5 2.3-4.1 2.3-4.2.1-.6-.4-1.2-1-1.2-.2 0-.4 0-.6.1-.3.2-.6.5-.6.9 0 0-.2 1.8-1.4 2.7-.7.6-1.8.8-3.1.6-1.1-.2-1.9-.6-2.4-1.4-1.1-1.6-.6-4-.5-4.1v-.6c-.1-.4-.4-.7-.8-.8-.6-.1-1.2.2-1.3.8 0 .1-.7 2.9.6 5.3h-.1c-1.1.5-2 .9-2.6 1.1-.3.1-.6.2-.7.3-.2.1-.3.1-.3.1-.4.1-.7 0-1-.1-.3-.2-.6-.5-.6-.8-.1-.3-.1-.7.1-1l.1-.2c.1-.2.2-.4.4-.7.3-.4.8-1.2 1.7-2.2.8-1 1.7-2 2.6-2.9.5-.5 1-1 1.6-1.5.6-.5 1.1-1 1.7-1.5.2-.2.4-.3.6-.5l.6-.5c.2-.1.4-.3.6-.4.1-.1.2-.1.3-.2.5 1.7 1.6 3.3 3 4.4.3.2.7.5 1 .7-.1.1-.2.2-.3.2-.2.2-.4.3-.6.4l-.6.5c-.1 0-.1.1-.2.1.4.2.8.3 1.2.5l.3-.3c.2-.2.4-.3.6-.5.7-.5 1.2-1 1.7-1.5 1-1 1.9-2 2.6-3.1.5-.7.8-1.3 1.1-1.8.3 0 .6 0 .9-.1 1.3-.3 4.6-1.7 6.4-7.7.2-.5 0-1.1-.5-1.5-.4-.4-1-.4-1.5-.2-.9.5-2.5 1-4.4.9-1.7-.1-3.3.5-4.3 1.6-.4-.4-.6-.1-.8.3 0-.1 0 0 0 0zm1
2.3-31.5c0 .3.1.6.1.9-.1-.3-.1-.6-.1-.9 0-.4-.1-.7-.2-1.1.1.4.1.8.2 1.1zm-104.7 62.1c-1.2 2-.9 3.4-.5 4.3.7 1.2 1.9 1.7 2.9 1.8h.6c.5 0 1.5-.1 4.7-.5-.7 1.3-1.4 2.6-2 3.9-.2-.2-.4-.4-.7-.5-1.5-.8-3.3-.3-4.1 1.1-.8 1.4-.2 3.2 1.3 4 .5.3 1 .4 1.5.4-.5 1.6-.9 3.1-1.2 4.6-2 .8-4 1.1-6.1 1.1-3.1 0-6.3-.9-9.1-2.6-7.9-5-10.2-15.5-5.2-23.3 3.2-5.1 8.7-7.8 14.3-7.8 3.1 0 6.3.9 9.1 2.6 2.1 1.3 3.7 3.1 5 5-9.3 4-10 5.2-10.5 5.9zm17.8-77.5c0-.1 0-.2-.1-.3v-.2-.4-.3-.4-.3c0-.1.1-.3.1-.4 0-.1 0-.2.1-.3 0-.2.1-.3.1-.5 0-.1.1-.2.1-.3.1-.2.1-.3.2-.5 0-.1.1-.2.1-.3.1-.2.1-.4.2-.6 0-.1 0-.1.1-.2.1-.2.2-.5.3-.7 0-.1.1-.1.1-.2.1-.2.2-.3.3-.5 0-.1.1-.1.1-.2.1-.1.1-.2.2-.4 0-.1.1-.1.1-.2.1-.1.1-.2.2-.3 0-.1.1-.1.1-.2l.2-.2s.1 0 .1-.1c2.4 1.9 2.2 7.3 2.2 7.4v.1c-1.1 1.6-3.1 2.1-4.4.9-.1-.1-.2-.1-.2-.2-.1-.1-.1-.2-.2-.3v.1zM204 98c-.1-.4-.1-.8-.1-1.2-.1-.1-.3-.1-.4-.2-.1-.1-.3-.2-.4-.3-.1-.1-.2-.1-.2-.2-.2-.3-.3-.7-.4-1.3-.1-.5-.1-1-.1-1.6 0-.3 0-.7.1-1.1 2.1 1.8 5.2.5 5.8-1.5.1.2.2.4.3.7.4 1.2.6 2.2.7 2.6v
.2c-.8 2.2-3.3 3.4-5.3 2.7.1.7.2 1.3.3 2-.3-.2-.3-.5-.3-.8zm9.1 1.2c-.2 3-4.3 5-7.1 4.5-.7-.5-1.2-1.8-1.6-3.4-.1-.4-.2-.7-.2-1.1V99c2.9 1.2 6.1-.8 6.5-3.5.4.3.9.7 1.4 1.2.7.7 1 1.5 1.1 2.1-.1.1-.1.3-.1.4zm74.3 13.9c-.1-.7-.3-1.3-.5-1.9.2.6.4 1.2.5 1.9 0 .2 0 .5.1.7-.1-.3-.1-.5-.1-.7zm-1.1-12.7c.5.4 1 .9 1.4 1.5-.4-.6-.8-1.1-1.4-1.5zm-20.4 37.3h-.5.5zm-3.3-.4c.3.1.7.2 1 .2-.4-.1-.7-.1-1-.2-.1 0-.1 0 0 0-.1 0-.1 0 0 0zm-2 2.5c-.3.2-.7.3-1.1.4.5 0 .8-.2 1.1-.4zm-1.4.5h-.3.3zm-12.9 26.1h.1-.4.3zm31.4-29.4c.6-1.2 1.9-1.9 3.5-1.9h.6c.5.6-.2 1 .4 2.1.7 1.3 2.3-.3 3.3.6-1.5 2.6-3.3 3.3-4.2 3.5-1.2.3-2.5 0-3.1-.8-.8-1-1-2.4-.5-3.5zm-.2 4.3c.5.6 1.2.9 2 1.1-.2.4-.5.8-.8 1.3-.4.6-.9 1.2-1.3 1.7-1.7-.7-3.1-2.3-3.5-4.2v-.4c.7-.3 1.3-.7 2-.9.3-.1.5-.2.7-.3.2.7.5 1.2.9 1.7z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M219.1 84.8c0-.6.1-1.3.3-1.8-.2.5-.3 1.2-.3 1.8z"/>
- <path fill="url(#Z)" fill-rule="nonzero" d="M219.1 84.8c0-.6.1-1.3.3-1.8-.2.5-.3 1.2-.3 1.8z"/>
- <path fill="url(#aa)" fill-rule="nonzero" d="M219.1 84.8c0-.6.1-1.3.3-1.8-.2.5-.3 1.2-.3 1.8z"/>
- <path fill="url(#ab)" fill-rule="nonzero" d="M178.6 177.5c-.4-.2-.8-.3-1.1-.4l2.7 3.2c.2.2.2.6-.1.8-.1.1-.2.1-.4.1s-.3-.1-.4-.2l-3.3-4c-.9.1-1.6.6-2 1.3-.2.3-.3.7-.3 1.1 1.2 1.3 2.4 2.6 3.6 3.7 1.4.3 2.7-.2 3.3-1.2.7-1.4-.2-3.4-2-4.4z"/>
- <path fill="url(#ac)" fill-rule="nonzero" d="M267.8 172.1c-2.3 1.3-4.3 3.2-5.5 5.6-.5.9-.1 2.1.8 2.5h.1l.4.1c.2 0 .3.1.5.1.7 0 1.4-.4 1.7-1.1 1.7-3 4.9-4.8 8.2-4.8.8 0 1.6.1 2.4.3 2.9.7 5.3 2.8 6.4 5.6l-3.7-1c-.2 0-.3-.1-.5-.1-.8 0-1.6.6-1.8 1.4-.3 1 .3 2 1.4 2.3l7.3 1.9c.2 0 .3.1.5.1.8 0 1.6-.6 1.8-1.4l1.9-7.3c.3-1-.3-2-1.4-2.3-.2 0-.3-.1-.5-.1-.8 0-1.6.6-1.8 1.4l-.5 2c-2.4-4.4-6.9-6.9-11.5-6.9-2.2.2-4.3.7-6.2 1.7z"/>
- <path fill="url(#ad)" fill-rule="nonzero" d="M180.7 194.6c-.4-1.4-1.7-2.3-3.1-2.3-.3 0-.6 0-.9.1l.9 3.1 3.1-.9z"/>
- <path fill="url(#ae)" fill-rule="nonzero" d="M172.6 172.1c.8-1.4.2-3.2-1.3-4-1.5-.8-3.3-.3-4.1 1.1-.8 1.4-.2 3.2 1.3 4 1.5.8 3.3.3 4.1-1.1z"/>
- <path fill="url(#af)" fill-rule="nonzero" d="M175.8 164.2c1.7 0 3.1-1.3 3.1-2.9 0-1.6-1.4-2.9-3.1-2.9-1.7 0-3.1 1.3-3.1 2.9 0 1.6 1.4 2.9 3.1 2.9z"/>
- <path fill="url(#ag)" fill-rule="nonzero" d="M224.1 117.1c.4 0 .9.1 1.3.1 0-.1.1-.2.1-.3v-3c0-.7-.6-1.3-1.3-1.3-.7 0-1.3.6-1.3 1.3v3c0 .1 0 .2.1.3.2-.1.7-.1 1.1-.1z"/>
- <path fill="url(#ah)" fill-rule="nonzero" d="M237.5 199.2c.6-7.2 1.2-16.6 1.3-16.7 0-.3-.2-.6-.5-.6s-.6.2-.6.5c0 .2-1.4 19.4-1.9 23.9v.3c0 .2-.1.5-.1.7v.1c-.1.6-.2 1.1-.2 1.7v.2c.8-.2 1.6-.4 2.3-.6.1-.9.3-1.8.4-2.8 5.1-.6 12.8-2.1 20-5.6 2.3-1.3 4.3-2.6 6.2-3.9-.5-.4-1-.8-1.5-1.3-.8.7-1.8 1.2-2.9 1.2-.3 0-.7 0-1-.1-1.4.9-3 1.8-4.7 2.6-6.6 3-13 4.1-17.1 4.5.1-.9.2-1.8.2-2.9 1.8-.1 3.6-.2 5.5-.5 5.9-.9 10.7-2.9 14.2-4.8-.2-.2-.4-.5-.6-.8 0 0 0-.1-.1-.2-3.4 1.9-8 3.8-13.7 4.7-1.8.2-3.5.4-5.2.4z"/>
- <path fill="url(#ai)" fill-rule="nonzero" d="M264.9 127.4c1 0 2.1-.3 3.3-1.3 2.4-2 2.5-4.3 2.3-5.6 1.4-.2 2.8-.8 4.2-2.2 3.6-3.7 2.9-7.8 2.1-9.4-.3-.5-1-.8-1.5-.5-.5.3-.8 1-.5 1.5 0 0 1.7 3.4-1.7 6.8-2.9 2.9-5.8 1.1-6.1.9-.5-.4-1.2-.2-1.6.3-.4.5-.2 1.2.3 1.6.8.5 2.1 1.1 3.7 1.2.2.9.2 2.9-1.9 4.7-2.6 2.1-4.8.3-4.9.2-.2-.2-.6-.2-.8.1-.2.2-.2.6.1.8 0-.2 1.2.9 3 .9z"/>
- <path fill="url(#aj)" fill-rule="nonzero" d="M249.6 126.6c1 1 2.7 2.2 5.8 2.2.8 0 1.7-.1 2.7-.3.3-.1.5-.3.4-.6-.1-.3-.3-.5-.6-.4-4.9.9-6.7-1-7.4-1.7-1.3-1.3-1.9-4.5-1.9-4.6 0-.2-.2-.4-.4-.4-.1 0-5.1-1.5-8.5-5.7-3.1-3.9-3.5-8.4-3.5-8.4 0-.2-.1-.4-.3-.5-.8-.4-3.2-1.7-3.8-3.2-1.3-3.1.1-4.9.1-4.9.2-.2.2-.6-.1-.8-.2-.2-.6-.2-.8.1 0 0-.5.6-.8 1.7l-3.3-.1c-.3 0-.6.2-.6.5v.2c.1.2.3.4.5.4l3.2.1c0 .9.1 2 .6 3.2.4.9 1.2 1.7 2 2.3.8.6 1.6 1.1 2.1 1.3 0 .3.1.8.3 1.4.4 1.8 1.3 4.7 3.5 7.3.4.5.8 1 1.3 1.4 2.9 2.9 6.4 4.2 7.4 4.6.2 1 .8 3.6 2.1 4.9z"/>
- <path fill="url(#ak)" fill-rule="nonzero" d="M179 200.2l3.1-1-.9-3-3.1.9"/>
- <path fill="url(#al)" fill-rule="nonzero" d="M231.2 188.3l-16.2-4.7c-.3-.1-.6-.1-.9-.1-1.5 0-2.8 1-3.2 2.4l-5.6 19.4c-.5 1.8.5 3.7 2.3 4.2l16.2 4.7c.3.1.6.1.9.1 1.5 0 2.8-1 3.2-2.4l5.6-19.4c.5-1.8-.5-3.7-2.3-4.2zm-1.4 4.9l-4.7 16.2c-.2.7-.9 1.2-1.6 1.2-.2 0-.3 0-.5-.1l-12.9-3.7c-.9-.3-1.4-1.2-1.2-2.1l4.7-16.2c.2-.7.9-1.2 1.6-1.2.2 0 .3 0 .5.1l12.9 3.7c.9.2 1.5 1.2 1.2 2.1z"/>
- <path fill="url(#am)" fill-rule="nonzero" d="M99.3 199.1c-.2-.6-.9-1-1.5-.7-.6.2-1 .9-.7 1.5l.8 2.4c.6-.6 1.4-.9 2.2-.8l-.8-2.4z"/>
- <path fill="url(#an)" fill-rule="nonzero" d="M224.4 196.8l-8.1-2.3h-.2c-.4 0-.7.2-.8.6-.1.4.1.9.6 1l8.1 2.3h.2c.4 0 .7-.2.8-.6.1-.4-.2-.8-.6-1z"/>
- <path fill="url(#ao)" fill-rule="nonzero" d="M108 198.9c.6-.6 1.4-.9 2.2-.8l-.8-2.4c-.2-.6-.9-1-1.5-.7-.6.2-1 .9-.7 1.5l.8 2.4z"/>
- <path fill="url(#ap)" fill-rule="nonzero" d="M106.2 206.7c1-.5 2-1 3.1-.7.1-.1.3-.2.4-.4.5-.5.9-1.1 1.3-1.8.2-.4.4-.7.6-1.1.2-.4.3-.9.5-1.4l.1-.2v-.1c0-.1-.1-.2-.2-.1-.2.1-.5.1-.7.2-.3.1-.7.2-1 .3l-1.7.5c-1.2.3-2.3.7-3.5 1.1-1.1.4-2.3.8-3.4 1.2l-1.7.6c-.3.1-.6.3-1 .4-.2.1-.5.2-.7.3 0 0-.1 0-.1.1-.1.1 0 .2 0 .3l.2.1c.4.3.8.6 1.2.8.4.2.8.4 1.1.6.7.3 1.4.5 2.1.6.2 0 .4 0 .5.1.1-.1.1-.2.2-.2.7-.9 1.7-1 2.7-1.2zm-5.4-1.9c.6-.1 1.3-.3 2-.5-.7.2-1.4.3-2 .5zm6.6-2c.7-.3 1.4-.6 1.9-.8-.5.2-1.2.5-1.9.8-.7.3-1.5.6-2.3.8.8-.2 1.6-.5 2.3-.8z"/>
- <path fill="url(#aq)" fill-rule="nonzero" d="M225.3 193.6l-8.1-2.3h-.2c-.4 0-.7.2-.8.6-.1.4.1.9.6 1l8.1 2.3h.2c.4 0 .7-.2.8-.6.1-.4-.2-.9-.6-1z"/>
- <path fill="url(#ar)" fill-rule="nonzero" d="M164 84.3c-.2 0-.2.3 0 .3 1.8.5 3.3 1.9 3.7 3.7 0 .2.3.2.3 0 .5-1.8 1.9-3.3 3.7-3.7.2 0 .2-.3 0-.3-1.6-.4-2.9-1.6-3.5-3.1h-.7c-.6 1.5-1.9 2.7-3.5 3.1z"/>
- <path fill="url(#as)" fill-rule="nonzero" d="M213.9 202.6l3.2.9h.2c.4 0 .7-.2.8-.6.1-.4-.1-.9-.6-1l-3.2-.9h-.2c-.4 0-.7.2-.8.6-.1.4.2.9.6 1z"/>
- <path fill="url(#at)" fill-rule="nonzero" d="M227.9 119.2l-.3-.3c-.1-.1-.2-.2-.3-.2-.7-.5-1.8-1.1-3.2-1.1-2.9 0-4.4 2.2-4.5 2.3-.3.5-.2 1.2.3 1.5.5.3 1.2.2 1.5-.3 0 0 .9-1.3 2.6-1.3 1.1 0 1.9.5 2.3.9l.2.2.2.2c.2.3.6.5.9.5.2 0 .4-.1.6-.2.5-.3.7-1 .3-1.5.1 0-.1-.3-.6-.7z"/>
- <path fill="url(#au)" fill-rule="nonzero" d="M196.8 121.5c.5.3 1.2.2 1.5-.3 0 0 .1-.2.4-.4.4-.4 1.2-.9 2.2-.9 1.7 0 2.6 1.3 2.6 1.3.2.3.6.5.9.5.2 0 .4-.1.6-.2.5-.3.7-1 .3-1.5-.1-.1-1.5-2.3-4.5-2.3-1.9 0-3.2 1-3.9 1.7l-.3.3c-.2.2-.3.4-.3.4-.2.4 0 1.1.5 1.4z"/>
- <path fill="url(#av)" fill-rule="nonzero" d="M200.9 117.1c.4 0 .9.1 1.3.1 0-.1.1-.2.1-.3v-3c0-.7-.6-1.3-1.3-1.3-.7 0-1.3.6-1.3 1.3v3c0 .1 0 .2.1.3.3-.1.7-.1 1.1-.1z"/>
- <path fill="url(#aw)" fill-rule="nonzero" d="M207.7 137.3l-1.5-.6c-.7-.3-1.5-.5-2.2-.8l-3.8-1.3-7.5-2.4c-.2-.1-.4-.1-.6-.2-1.1 1.2-2.3 2.4-2.8 2.7-.4.2-3.4-.5-3.5-.8-.1-.2.3-1.9.7-3.5-.5-.1-.9-.3-1.4-.4l-.6-.1c-.3 1.4-.7 3.1-.9 3.2-.4.3-2.9-1.2-3.1-1.5-.1-.2-.5-1.6-.7-2.9-.3-.1-.5-.1-.8-.2-.5-.1-1.1-.2-1.6-.4h-.2c-.2.1-.3.3-.3.5l.1.5c.3 1.1.7 2.2 1.2 3 .4.9.9 1.7 1.3 2.5.9 1.5 1.9 2.7 3 3.8.3.3.6.5.9.8.2-.1.4-.1.6-.1-.2 0-.4.1-.6.1 1.9 1.6 3.9 2.7 6 3.3h.2c2.2.6 4.4.8 6.9.5.4 0 .8-.1 1.2-.2 1.5-.3 3-.8 4.6-1.5.8-.4 1.6-.8 2.5-1.3.8-.5 1.7-1.1 2.6-1.9l.4-.3c0-.1.1-.1.1-.2.2 0 0-.2-.2-.3z"/>
- <path fill="url(#ax)" fill-rule="nonzero" d="M231.2 80.2c.4 0 .6-.2.6-.5 0-.1.5-3 4.2-3.5 1.8-.3 2.9.5 3.5 1.2-3.5 2.2-4.1 5.7-3.9 7.3.1.6.6 1 1.1 1h.1c.6-.1 1-.6 1-1.2 0 0-.4-3.8 4-5.8 3.8-1.7 5.8 1 6.1 1.4.3.5 1 .6 1.5.3s.6-1 .3-1.5c-.5-.7-1.3-1.5-2.5-2.1.5-.9 1.6-2.1 3.8-2.4 3.3-.5 4.2 2.3 4.3 2.4.1.3.4.5.7.4.3-.1.5-.4.4-.7 0 0-1.3-3.8-5.5-3.2-2.8.4-4.1 2-4.7 3.1-1.5-.5-3.3-.5-5.3.4-.1.1-.3.1-.4.2-.8-1-2.2-2.1-4.7-1.7-4.5.6-5.1 4.4-5.2 4.4 0 .2.3.5.6.5z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M207.7 223.7v.2c0 .2.1.4.1.6v.2c0 .2.1.4.1.6v.5c0 .1 0 .2-.1.2l-.2.2H207.3h-.1-.1c-.1 0-.1 0-.2-.1h-.1c-.1 0-.2-.1-.3-.2 0 0-.1 0-.1-.1-.1-.1-.2-.1-.3-.2l-.1-.1c-.1-.1-.2-.1-.3-.2-.1 0-.1-.1-.2-.1l-.3-.3-.2-.2-.3-.3-.2-.2-.5-.5-.1-.1-.4-.4c-1 .1-1.9.1-2.8.2 3.3 3.6 5 4.9 6.6 4.9.9 0 1.8-.4 2.3-1.2.4-.6.8-1.1.2-4.3-.8 0-1.5.1-2.3.1.1.4.1.6.2.8z"/>
- <path fill="url(#ay)" fill-rule="nonzero" d="M207.7 223.7v.2c0 .2.1.4.1.6v.2c0 .2.1.4.1.6v.5c0 .1 0 .2-.1.2l-.2.2H207.3h-.1-.1c-.1 0-.1 0-.2-.1h-.1c-.1 0-.2-.1-.3-.2 0 0-.1 0-.1-.1-.1-.1-.2-.1-.3-.2l-.1-.1c-.1-.1-.2-.1-.3-.2-.1 0-.1-.1-.2-.1l-.3-.3-.2-.2-.3-.3-.2-.2-.5-.5-.1-.1-.4-.4c-1 .1-1.9.1-2.8.2 3.3 3.6 5 4.9 6.6 4.9.9 0 1.8-.4 2.3-1.2.4-.6.8-1.1.2-4.3-.8 0-1.5.1-2.3.1.1.4.1.6.2.8z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M231.2 223.1c-.1.1-.1.2-.2.3-.1.2-.2.3-.3.4 0 .1-.1.2-.1.2-.1.2-.2.4-.4.5v.1c-.1.2-.3.4-.4.5 0 .1-.1.1-.1.1-.1.1-.2.2-.2.3 0 .1-.1.1-.1.1l-.2.2-.1.1c-.1.1-.1.1-.2.1l-.1.1c-.1 0-.1.1-.2.1 0 0-.1 0-.1.1h-.2-.1-.1-.1c-.1 0-.2-.1-.2-.1l-.1-.1c-.1-.1-.1-.3-.2-.6s-.1-.6-.1-1c0-.3-.1-.7-.1-1.1v-.9h-2.2c.2 4.5.8 4.9 1.4 5.4.5.4 1.2.6 1.8.6 2.3 0 4.3-2.8 5.8-5.9-.8 0-1.6 0-2.5-.1-.3.4-.4.5-.4.6z"/>
- <path fill="url(#az)" fill-rule="nonzero" d="M231.2 223.1c-.1.1-.1.2-.2.3-.1.2-.2.3-.3.4 0 .1-.1.2-.1.2-.1.2-.2.4-.4.5v.1c-.1.2-.3.4-.4.5 0 .1-.1.1-.1.1-.1.1-.2.2-.2.3 0 .1-.1.1-.1.1l-.2.2-.1.1c-.1.1-.1.1-.2.1l-.1.1c-.1 0-.1.1-.2.1 0 0-.1 0-.1.1h-.2-.1-.1-.1c-.1 0-.2-.1-.2-.1l-.1-.1c-.1-.1-.1-.3-.2-.6s-.1-.6-.1-1c0-.3-.1-.7-.1-1.1v-.9h-2.2c.2 4.5.8 4.9 1.4 5.4.5.4 1.2.6 1.8.6 2.3 0 4.3-2.8 5.8-5.9-.8 0-1.6 0-2.5-.1-.3.4-.4.5-.4.6z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M167.7 80.6c-.1.2-.1.4-.2.6h.7c-.1-.2-.2-.4-.2-.6 0-.2-.3-.2-.3 0z"/>
- <path fill="url(#aA)" fill-rule="nonzero" d="M167.7 80.6c-.1.2-.1.4-.2.6h.7c-.1-.2-.2-.4-.2-.6 0-.2-.3-.2-.3 0z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M118.4 58.7c.1.2.2.3.4.3h.1c.3-.1.4-.3.4-.6v-.1l-1.9-5.3c-.1-.3-.4-.4-.6-.3-.3.1-.4.4-.3.6l1.9 5.4z"/>
- <path fill="url(#aB)" fill-rule="nonzero" d="M118.4 58.7c.1.2.2.3.4.3h.1c.3-.1.4-.3.4-.6v-.1l-1.9-5.3c-.1-.3-.4-.4-.6-.3-.3.1-.4.4-.3.6l1.9 5.4z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M134.3 121.9c.2-.2.5-.4.9-.2v.1l2.4-1.5v-3.5l-3.4 2.1v3h.1zM137.7 164.3c-.2.2-.4.6-.4.9 0 .9.1 1.8.4 2.6v-3.5z"/>
- <path fill="url(#aC)" fill-rule="nonzero" d="M137.7 164.3c-.2.2-.4.6-.4.9 0 .9.1 1.8.4 2.6v-3.5z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M115.5 59c.3 0 .5-.2.5-.5v-5.3c0-.3-.2-.5-.5-.5s-.5.2-.5.5v5.3c0 .3.2.5.5.5z"/>
- <path fill="url(#aD)" fill-rule="nonzero" d="M115.5 59c.3 0 .5-.2.5-.5v-5.3c0-.3-.2-.5-.5-.5s-.5.2-.5.5v5.3c0 .3.2.5.5.5z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M112.6 59c.3 0 .5-.2.5-.5v-5.8c0-.3-.2-.5-.5-.5s-.5.2-.5.5v5.8c0 .3.2.5.5.5z"/>
- <path fill="url(#aE)" fill-rule="nonzero" d="M112.6 59c.3 0 .5-.2.5-.5v-5.8c0-.3-.2-.5-.5-.5s-.5.2-.5.5v5.8c0 .3.2.5.5.5z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M114 59c.3 0 .5-.2.5-.5v-4.8c0-.3-.2-.5-.5-.5s-.5.2-.5.5v4.8c0 .3.3.5.5.5z"/>
- <path fill="url(#aF)" fill-rule="nonzero" d="M114 59c.3 0 .5-.2.5-.5v-4.8c0-.3-.2-.5-.5-.5s-.5.2-.5.5v4.8c0 .3.3.5.5.5z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M129.1 125.6l4.1-2.6v-.5c0-.1-.1-.1-.1-.2 0 0 .1 0 .1.1v-2.9l-5.6 3.6c-.8.3-1.1 1.2-.8 2 .2.6.8.9 1.3.9.2 0 .4 0 .6-.1.1-.1.2-.2.4-.3z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M139 115.8l-1.3.9v3.5l2.2-1.4v-8.3c-.5.7-.9 1.5-1.1 2.3-.1.5-.1 1-.1 1.4.1.6.1 1.1.3 1.6zM139.9 165.2c0-.7-.6-1.3-1.3-1.3-.4 0-.7.1-.9.4v3.5c.3 1.1.7 2.1 1.3 3 .6-.9.9-1.9.9-3v-2.6z"/>
- <path fill="url(#aG)" fill-rule="nonzero" d="M139.9 165.2c0-.7-.6-1.3-1.3-1.3-.4 0-.7.1-.9.4v3.5c.3 1.1.7 2.1 1.3 3 .6-.9.9-1.9.9-3v-2.6z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M138.7 159.7c-.1.3 0 .7.4.8l.8.3v-4.4l-1.2 3.3z"/>
- <path fill="url(#aH)" fill-rule="nonzero" d="M138.7 159.7c-.1.3 0 .7.4.8l.8.3v-4.4l-1.2 3.3z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M198 217c.5.6.9 1.3 1.5 1.9-.5-.7-1-1.3-1.5-1.9z"/>
- <path fill="url(#aI)" fill-rule="nonzero" d="M198 217c.5.6.9 1.3 1.5 1.9-.5-.7-1-1.3-1.5-1.9z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M207.8 226l-.2.2c.1-.1.2-.1.2-.2z"/>
- <path fill="url(#aJ)" fill-rule="nonzero" d="M207.8 226l-.2.2c.1-.1.2-.1.2-.2z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M224.1 117.6c1.4 0 2.5.5 3.2 1.1-.7-.5-1.8-1.1-3.2-1.1z"/>
- <path fill="url(#aK)" fill-rule="nonzero" d="M224.1 117.6c1.4 0 2.5.5 3.2 1.1-.7-.5-1.8-1.1-3.2-1.1z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M224.1 119.9c1.1 0 1.9.5 2.3.9-.4-.4-1.2-.9-2.3-.9z"/>
- <path fill="url(#aL)" fill-rule="nonzero" d="M224.1 119.9c1.1 0 1.9.5 2.3.9-.4-.4-1.2-.9-2.3-.9z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M134.3 121.9v-3.1l-1.1.7v2.9s-.1 0-.1-.1c0 .1.1.1.1.2v.5l2.1-1.3v-.1c-.5-.1-.8 0-1 .3z"/>
- <path fill="url(#aM)" fill-rule="nonzero" d="M150.7 112.6l-4.5 2.7c-.3.2-.7.3-1 .3-.6 0-1.3-.3-1.6-.9-.4-.6-.4-1.3-.1-1.8.1-.4.4-.7.8-1l4.2-2.7c-.7-.5-1.5-.9-2.3-1.1-.4-.1-.8-.1-1.3-.1-2 0-3.8 1-4.9 2.5-.5.7-.9 1.5-1.1 2.3-.1.5-.1 1-.1 1.4 0 .5.1 1 .3 1.5v.1l-1.3.8-3.4 2.1-1.1.7-5.6 3.6c-.8.3-1.1 1.2-.8 2 .2.6.8.9 1.3.9.2 0 .4 0 .6-.1.1-.1.3-.1.4-.2l4.1-2.6 2.1-1.3 2.4-1.5 2.2-1.4.7-.5c.8.8 1.7 1.3 2.8 1.6.5.1.9.2 1.4.2 1.4 0 2.7-.5 3.7-1.3s1.8-2 2.1-3.4c.2-1 .2-1.9 0-2.8z"/>
- <path fill="#FFFEFE" fill-rule="nonzero" d="M143.5 114.7c.4.6 1 .9 1.6.9.4 0 .7-.1 1-.3l4.5-2.7c.2.9.2 1.9 0 2.8-.3 1.4-1.1 2.6-2.1 3.4 1.1-.8 1.9-2.1 2.2-3.5.2-.9.2-1.9 0-2.8l-4.6 2.7c-.3.2-.7.3-1 .3-.6 0-1.3-.3-1.7-.9-.3-.5-.4-1.2-.2-1.7-.1.5-.1 1.2.3 1.8z"/>
- <path fill="url(#aN)" fill-rule="nonzero" d="M143.5 114.7c.4.6 1 .9 1.6.9.4 0 .7-.1 1-.3l4.5-2.7c.2.9.2 1.9 0 2.8-.3 1.4-1.1 2.6-2.1 3.4 1.1-.8 1.9-2.1 2.2-3.5.2-.9.2-1.9 0-2.8l-4.6 2.7c-.3.2-.7.3-1 .3-.6 0-1.3-.3-1.7-.9-.3-.5-.4-1.2-.2-1.7-.1.5-.1 1.2.3 1.8z"/>
- <path fill="#FFFEFE" fill-rule="nonzero" d="M126.8 125.1c-.3-.8 0-1.7.8-2l5.6-3.6 1.1-.7 3.4-2.1 1.3-.8v-.1l-11.5 7.3c-.8.3-1.1 1.3-.8 2 .3.6.8.9 1.4.9h.1c-.7 0-1.2-.3-1.4-.9z"/>
- <path fill="url(#aO)" fill-rule="nonzero" d="M126.8 125.1c-.3-.8 0-1.7.8-2l5.6-3.6 1.1-.7 3.4-2.1 1.3-.8v-.1l-11.5 7.3c-.8.3-1.1 1.3-.8 2 .3.6.8.9 1.4.9h.1c-.7 0-1.2-.3-1.4-.9z"/>
- <path fill="#FFFEFE" fill-rule="nonzero" d="M139.9 110.5c1.1-1.5 2.9-2.5 4.9-2.5.4 0 .8 0 1.3.1.8.2 1.6.6 2.3 1.1l.2-.1c-.7-.6-1.5-1-2.4-1.2-.4-.1-.8-.1-1.3-.1-2.8 0-5.4 2-6 4.9-.1.5-.1 1-.1 1.6 0-.5 0-1 .1-1.4.1-1 .5-1.7 1-2.4z"/>
- <path fill="url(#aP)" fill-rule="nonzero" d="M139.9 110.5c1.1-1.5 2.9-2.5 4.9-2.5.4 0 .8 0 1.3.1.8.2 1.6.6 2.3 1.1l.2-.1c-.7-.6-1.5-1-2.4-1.2-.4-.1-.8-.1-1.3-.1-2.8 0-5.4 2-6 4.9-.1.5-.1 1-.1 1.6 0-.5 0-1 .1-1.4.1-1 .5-1.7 1-2.4z"/>
- <path fill="url(#aQ)" fill-rule="nonzero" d="M106.4 207.6c.1 0 .1 0 0 0h.1c1-.3 1.9-.9 2.7-1.6-1.1-.3-2 .2-3.1.7-1 .2-2 .3-2.7 1l-.2.2c1.2.2 2.3 0 3.2-.3z"/>
- <path fill="url(#aR)" fill-rule="nonzero" d="M118.3 196.1c.7-1.4.9-3 .6-4.6-.4-2.1-1.5-3.9-3.3-5.1-1.4-1-3-1.4-4.6-1.4-1.5 0-3 .5-4.2 1.3-.2-.2-.4-.3-.6-.5-1.2-.8-2.5-1.2-4-1.2-2.1 0-4 1-5.3 2.6h-.7c-2.7 0-5.2 1.4-6.8 3.6-1.8 2.6-1.9 5.9-.6 8.6-.7.5-1.2 1.1-1.7 1.8-1.3 1.8-1.8 4.1-1.4 6.3.4 2.2 1.6 4.1 3.5 5.4 1.2.9 2.6 1.4 4.1 1.5.4 1.1 1.2 2.1 2.2 2.8 1 .7 2.2 1.1 3.5 1.1 1 .9 2.2 1.6 3.7 2.2l1 5.5h2.3l-1.3-7.2c-1.3-.4-2.7-1-3.8-1.8-.4-.3-.7-.6-1-1h-.1l-.1-.1c-.4-.4-.7-1-.9-1.6v-.1c-.3-.9-.2-1.7.1-1.8.2-.1.4-.1.5 0 .1.1.2.3.2.4v.2c0 .2.1.4.1.6V213.9c.3.9 1 2 2.2 2.7.1 0 .2.1.3.1.6.4 1.3.6 1.9.9 0 0 .1 0 .1.1l-.5-3h-.1-.1c-.1-.1-.3-.1-.4-.2-.3-.1-.6-.3-.9-.5 0 0-.1 0-.1-.1-.1.3-.2.5-.4.7l-.3.3s0-.1-.1-.1c-.6-.7-.9-1.5-.9-2-.1-.6-.3-1-.8-1.3-.4-.3-1-.3-1.5-.1-.5.2-1.4.8-.7 3.2.1.5.4 1 .6 1.4l.1.1c-.6-.1-1.2-.3-1.7-.6-.6-.4-1-1-1.3-1.6-.1-.2-.2-.4-.2-.6v-.1c-.1-.3-.1-.6-.1-.9-.3.1-.7.1-1 .1-1.2 0-2.5-.3-3.6-1.1-2.2-1.5-3-4.1-2.4-6.5l.3-.9v-.1c.2-.4.4-.7.6-1.1.8-1.2 2-2 3.2-2.4l-.
1-.1c-2.1-2.1-2.5-5.4-.8-7.9.5-.7 1-1.2 1.6-1.6 1-.7 2.2-1 3.3-1 .6 0 1.2.1 1.8.2 0-.1.1-.1.1-.2.1-.3.2-.5.4-.7.7-1 1.8-1.6 2.9-1.8.3 0 .5-.1.8-.1.9 0 1.8.2 2.7.8.7.5 1.3 1.2 1.6 2 .1-.1.1-.2.2-.2 1.1-1.4 2.7-2.1 4.3-2.1.7 0 1.3.1 2 .3.5.2.9.4 1.3.7 2.6 1.8 3.2 5.3 1.4 7.9-.2.2-.3.4-.5.6.1 0 .1.1.2.1.3.1.5.3.8.4.2.2.4.3.7.5 2.4 2.2 2.9 5.8 1 8.5-1.2 1.8-3.2 2.8-5.3 2.8h-.6c-.1 1.1-.4 2.1-1.1 3-.1.1-.1.2-.2.3-.1.2-.3.3-.5.5l-.4.4-.1.1c-.4.3-.8.6-1.2.8h-.1c-.1 0-.2.1-.3.1-1 .4-2 .3-2 .3-.2 0-.3.1-.4.2-.1.1-.2.2-.2.3 0 .3.2.6.5.6h.4c.5 0 1.3-.1 2.2-.4h.1l.6 3.3c.2-.1.4-.1.5-.2.6-.3 1.2-.7 1.6-1.1l.1-.1c.1-.1.1-.3 0-.9-.1-.6-.4-1.2-.6-1.6-.1-.2-.1-.3-.2-.5s0-.4.1-.6l.2-.2h.2c.2 0 .5.1.6.4 0 .1.1.2.2.4.2.4.4.9.5 1.4v.1c.6-1.2.9-2.5 1.1-3.7v-.1c.1-.3.3-.5.6-.5h.1c.3.1.5.4.5.7-.4 1.9-1 4.2-2.4 5.8l-.1.1c-.6.6-1.3 1.2-2.1 1.5-.2.1-.5.2-.7.2h-.1l1 5.4c.1.3-.2.7-.7.9l2.7.3c.2-.5.3-1 .2-1.6l-.7-3.6c.8-.4 1.4-1 2.1-1.7l.1-.1c1.8-2.1 2.5-4.9 2.8-6.8.1-.8 0-1.5-.5-2.1 1.2-.6 2.2-1.5 3-2.7 1.3-1.9
1.8-4.2 1.4-6.5.2-2.4-.8-4.2-2.2-5.4z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M107.9 226.5h-.4c-.8 0-1.5-.2-1.5-.6v-.1h-2.3l.1.5c.2 1.2 1.3 2.5 3.8 2.5 1.5 0 3.5-.5 4.6-1.8.2-.2.3-.5.4-.7l-2.7-.3c-.5.2-1.3.4-2 .5z"/>
- <path fill="url(#aS)" fill-rule="nonzero" d="M107.9 226.5h-.4c-.8 0-1.5-.2-1.5-.6v-.1h-2.3l.1.5c.2 1.2 1.3 2.5 3.8 2.5 1.5 0 3.5-.5 4.6-1.8.2-.2.3-.5.4-.7l-2.7-.3c-.5.2-1.3.4-2 .5z"/>
- <path d="M-30-28h352v303H-30z"/>
- </g>
-</svg>
diff --git a/browser/extensions/onboarding/content/img/figure_default.svg b/browser/extensions/onboarding/content/img/figure_default.svg
deleted file mode 100644
index c52e4b8500f7..000000000000
--- a/browser/extensions/onboarding/content/img/figure_default.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="272" height="247" viewBox="0 0 272 247" xmlns="http://www.w3.org/2000/svg"><title>default-browser</title><defs><linearGradient x1="-12.708%" y1="-28.803%" x2="102.994%" y2="115.824%" id="a"><stop stop-color="#FFCCD7" offset="40.06%"/><stop stop-color="#EDBEE2" offset="100%"/></linearGradient><linearGradient x1="-78.121%" y1="-55.724%" x2="136.609%" y2="135.651%" id="b"><stop stop-color="#FFE900" offset="28.07%"/><stop stop-color="#FFCC07" offset="32.21%"/><stop stop-color="#FF8119" offset="41.22%"/><stop stop-color="#FF0B36" offset="54.35%"/><stop stop-color="#FF0039" offset="55.5%"/><stop stop-color="#ED00B5" offset="85.24%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-36-18h352v303H-36z"/><g fill-rule="nonzero"><g fill="#D7D7DB"><path d="M116.6 201.9H42.1c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h74.6c.6 0 1.1.5 1.1 1.1-.1.6-.6 1.1-1.2 1.1zM104 195.9H71c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h33c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zM109.7 206.7h-3.3c-.3 0-.6-.
2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-12.2 0H84.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-23.5 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6H74c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-5.5 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.3 0H42.8c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-23.4 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.3 0H1.5c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6z"/></g><path d="M138.8 171.9c-2.8 0-5-2.1-5-4.8V49.7c0-2.9 2.4-5.3 5.3-5.3h126.1c2.9 0 5.3 2.4 5.3 5.3v117.4c0 2.6-2.2 4.8-5 4.8H138.8z" fill="#FFF"/><path d="M265.2 45.4c2.3 0 4.2 1.9 4.2 4.2V167c0 2-1.7 3.7-3.9 3.7H138.8c-2.2 0-3.9-1.6-3.9-3.7V49.7c0-2.3 1.9-4.2 4.2-4.2h126.1v-.1zm0-2.2H139.1c-3.5 0-6.4 2.9-6.4 6.4V167c0 3.2 2.8 5.9 6.1 5.9h126.7c3.4 0 6.1-2.6 6.1-5.9V49.7c0-3.
6-2.9-6.5-6.4-6.5z" fill="#D7D7DB"/><path d="M264.8 66.4V165c0 .9-.1 1.2-.1 1.2s-.3.1-1.2.1H140.8c-.9 0-1.2-.1-1.2-.1s-.1-.3-.1-1.2V66.4h125.3zm1.1-1.1H138.3V165c0 2 .4 2.4 2.4 2.4h122.7c2 0 2.4-.4 2.4-2.4V65.3h.1z" fill="#D7D7DB"/><g fill="#D7D7DB"><circle cx="2.9" cy="3.3" r="2.8" transform="translate(143 52)"/><circle cx="3.1" cy="3.3" r="2.8" transform="translate(152 52)"/><path d="M233.8 58.5h-63.4c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1h63.4c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1z"/><g><circle cx="3.2" cy="3.3" r="2.8" transform="translate(246 52)"/><circle cx="3.4" cy="3.3" r="2.8" transform="translate(255 52)"/></g></g><path d="M21.8 23.4h23.9S38.2 6.7 54.1 4.5c14.2-1.9 19.8 12.6 19.8 12.6s1.7-8.4 10.1-6.8c8.3 1.6 14.5 15 14.5 15h20.8" fill="#F9F9FA"/><path d="M119.7 21.4h-5.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h5.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-15.3 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.5-.1c-.2 0-.4-.1-.5-.3-.2-.3-.7-1.
4-1.7-2.9-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2 1 1.5 1.6 2.6 1.7 2.9.1.3 0 .6-.2.8-.2.1-.3.1-.3.1zm-52.8-.6h-1.6c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h.8c-.1-.2-.2-.5-.3-.9-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.6.6 1.6.1.2.1.4 0 .5-.2.2-.4.3-.6.3zm-10.5 0H22.2c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm8.9-6c-.3 0-.5-.2-.6-.5 0-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.3-.1.6-.5.6.1 0 0 0 0 0zM73.6 13c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.4.4.7.5 1 .1.3 0 .6-.2.8-.1 0-.2.1-.3.1zm17.9-1.5c-.1 0-.3 0-.4-.1-2.3-2.1-4.6-3.4-6.8-3.8-.7-.1-1.4-.2-2-.2-1 0-2 .2-2.8.5-.3.1-.6 0-.7-.3-.1-.3 0-.6.3-.7 1-.4 2.1-.6 3.3-.6.7 0 1.4.1 2.2.2 2.4.5 4.9 1.8 7.3 4 .2.2.2.6 0 .8-.1.2-.3.2-.4.2zM70.6 8.3c-.2 0-.3-.1-.4-.2-.7-.9-1.5-1.6-2.3-2.3-.2-.2-.3-.6-.1-.8.2-.2.6-.3.8-.1.8.7 1.6 1.6 2.4 2.5.2.2.2.6-.1.8-.1.1-.2.1-.3.1zm-23-3.8c-.2 0-.3-.1-.4-.2-.2-.2-.2-.6.1-.8C49.1 2 51.5 1.1 54.5.6c2.1-.3 4.1-.2 6 .1.3.1.5.4.4.7-.1.3-.3.5-.7.4-1.8-.4-3.7-
.4-5.6-.1-2.8.4-5 1.3-6.6 2.6-.1.2-.2.2-.4.2z" fill="#D7D7DB"/><path d="M120.4 25.6H21.8c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h98.6c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z" fill="#F9F9FA"/><path d="M15.2 181.9c-2.8 0-5-2.1-5-4.8V59.7c0-2.9 2.4-5.3 5.3-5.3h126.1c2.9 0 5.3 2.4 5.3 5.3v117.4c0 2.6-2.2 4.8-5 4.8H15.2z" fill="#FFF"/><path d="M141.6 55.5c2.3 0 4.2 1.9 4.2 4.2V177.1c0 2-1.7 3.7-3.9 3.7H15.2c-2.2 0-3.9-1.6-3.9-3.7V59.7c0-2.3 1.9-4.2 4.2-4.2h126.1zm0-2.2H15.5c-3.5 0-6.4 2.9-6.4 6.4V177.1c0 3.2 2.8 5.9 6.1 5.9h126.7c3.4 0 6.1-2.6 6.1-5.9V59.7c0-3.5-2.9-6.4-6.4-6.4z" fill="#D7D7DB"/><path d="M141.2 76.4V175c0 .9-.1 1.2-.1 1.2s-.3.1-1.2.1H17.2c-.9 0-1.2-.1-1.2-.1s-.1-.3-.1-1.2V76.4h125.3zm1.1-1.1H14.8V175c0 2 .4 2.4 2.4 2.4h122.7c2 0 2.4-.4 2.4-2.4V75.3z" fill="#D7D7DB"/><g fill="#D7D7DB"><circle cx="3.3" cy="3.3" r="2.8" transform="translate(19 62)"/><circle cx="3.5" cy="3.3" r="2.8" transform="translate(28 62)"/><path d="M110.2 68.6H46.9c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4
-3.1 3.1-3.1h63.4c1.7 0 3.1 1.4 3.1 3.1v.3c-.1 1.7-1.5 3.1-3.2 3.1z"/><g><circle cx="3.6" cy="3.3" r="2.8" transform="translate(122 62)"/><circle cx="2.8" cy="3.3" r="2.8" transform="translate(132 62)"/></g></g><path d="M210 28.8h13.3s-4.2-9.3 4.7-10.5c7.9-1.1 11 7 11 7s.9-4.7 5.6-3.8c4.6.9 8 8.3 8 8.3h11.6" fill="#F9F9FA"/><path d="M223.7 27.3h-13.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.3v.5l.5-.2c.1.2.1.4 0 .6-.2.2-.3.3-.5.3zm36.5-.2h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-20.8-3.3h-.1c-.3-.1-.5-.4-.4-.7.1-.4 1.1-4.3 5-4.3.4 0 .8 0 1.2.1 1.7.3 3.5 1.4 5.2 3.1.2.2.2.6 0 .8-.2.2-.6.2-.8 0-1.6-1.6-3.1-2.5-4.6-2.8-.4-.1-.7-.1-1-.1-3 0-3.8 2.8-3.9 3.4-.1.3-.4.5-.6.5zm-15.3-5.1c-.1 0-.3 0-.4-.1-.2-.2-.2-.6 0-.8.8-.8 1.8-1.5 3.1-1.8.3-.1.6.1.7.4.1.3-.1.6-.4.7-1.1.3-2 .8-2.6 1.5-.1.1-.3.1-.4.1zm8.3-1.6h-.2c-.3-.1-.7-.2-1-.2-.3-.1-.5-.3-.5-.6.1-.3.3-.5.6-.5l1.2.3c.3.1.5.4.4.7 0 .1-.2.3-.5.3z" fill="#D7D7DB"/><path d="M265.1 31h-54.9c-.6 0-1.1-.5-1.1-1.1 0-.6.
5-1.1 1.1-1.1h54.9c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1zM237.9 58H87.8c-5.8 0-10.6 4.8-10.6 10.6v139.9c0 5.5 4.6 9.9 10.2 9.9h150.9c5.6 0 10.2-4.5 10.2-9.9V68.6c0-5.8-4.7-10.6-10.6-10.6z" fill="#F9F9FA"/><ellipse fill="#EDEDF0" cx="164.5" cy="239.7" rx="82" ry="6.8"/><path d="M148.2 68.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6l-6.3-5.1-.2-.2H87.7c-2.8 0-5 2.2-5 5v140c0 2.4 2.1 4.4 4.6 4.4h150.9c2.6 0 4.6-1.9 4.6-4.4V68.1c0-2.8-2.2-5-5-5h-83.3c-.1 0-.1.1-.2.2l-6.1 5zm-41.4 3.1c1.9 0 3.4 1.5 3.4 3.4s-1.5 3.4-3.4 3.4-3.4-1.5-3.4-3.4 1.5-3.4 3.4-3.4zm-10.9 0c1.9 0 3.4 1.5 3.4 3.4s-1.5 3.4-3.4 3.4-3.4-1.5-3.4-3.4 1.5-3.4 3.4-3.4zm133.9 0c1.9 0 3.4 1.5 3.4 3.4s-1.5 3.4-3.4 3.4-3.4-1.5-3.4-3.4 1.6-3.4 3.4-3.4zm-10.9 0c1.9 0 3.4 1.5 3.4 3.4s-1.5 3.4-3.4 3.4-3.4-1.5-3.4-3.4 1.6-3.4 3.4-3.4zm-18.3-.4c2 0 3.7 1.6 3.7 3.7v.3c0 2-1.6 3.7-3.7 3.7h-5.8c.9 2.6.9 5.5-.2 8h44.3v118.7c0 2.4-.5 2.9-2.9 2.9H89.8c-2.4 0-2.9-.5-2.9-2.9V86.7h73.3c-1.1-2.6-1.1-5.5-.2-8h-34.9c-2 0-3.7-1.6-3.7-3.7v-.3c0-2 1.6-3.7
3.7-3.7h75.5z" fill="#FFF"/><path d="M190.6 91.5l-11.1 9c-.6.5-1.3.7-2.1.7s-1.5-.3-2.1-.7l-11.1-9c-1.3-.8-2.3-1.9-3.1-3.1-.4-.6-.7-1.1-.9-1.7H86.9v118.7c0 2.4.5 2.9 2.9 2.9H236c2.4 0 2.9-.5 2.9-2.9V86.7h-44.3c-.3.6-.6 1.2-1 1.8-.8 1.2-1.8 2.2-3 3zm10.1 24c7.4 8.8 8.2 21.5 1.8 31.1-1.9 2.9-4.3 5.3-7.2 7.3l-30.2 24.7c-.9.7-2.1 1.1-3.3 1.1-1.2 0-2.4-.4-3.3-1.2l-30.4-24.6c-3-2-5.6-4.5-7.5-7.5-6.7-10.3-5.3-24 3.4-32.7 4.9-4.9 11.4-7.6 18.3-7.6 7 0 13.5 2.7 18.4 7.6.3.3.6.4.8.4.2 0 .5-.1.9-.4 4.9-4.9 11.4-7.6 18.3-7.6 7.8.2 15 3.5 20 9.4z" fill="url(#a)"/><path d="M162.5 113.8c-.3.3-.7.4-.9.4-.2 0-.5-.1-.8-.4-4.9-4.9-11.4-7.6-18.4-7.6-6.9 0-13.4 2.7-18.3 7.6-8.7 8.6-10.1 22.4-3.4 32.7 1.9 3 4.4 5.5 7.5 7.5l30.4 24.6c.9.7 2.1 1.2 3.3 1.2 1.2 0 2.3-.4 3.3-1.1l30.2-24.7c2.9-2 5.3-4.4 7.2-7.3 6.3-9.6 5.6-22.3-1.8-31.1-5-5.9-12.2-9.3-19.9-9.3-7 0-13.5 2.7-18.4 7.5zM199 117c6.7 8 7.4 19.7 1.6 28.4-1.8 2.8-4.2 5-6.7 6.7l-30.3 24.7c-.6.4-1.2.7-1.9.7s-1.3-.2-1.9-.7l-30.5-24.7c-2.6-1.7-5-4-6.9-6.9-
6.1-9.3-4.8-22 3.1-29.9 4.6-4.6 10.7-6.9 16.8-6.9 6.1 0 12.2 2.3 16.8 7 .7.7 1.5 1 2.4 1 .9 0 1.7-.3 2.4-1 4.6-4.6 10.7-6.9 16.8-6.9 6.8 0 13.5 2.8 18.3 8.5z" fill="#FFF"/><path d="M138 115.4c-7.6 1.7-13.2 8.1-13.8 15.8-.2 2.2 1.5 4.1 3.6 4.3h.3c2.1 0 3.8-1.6 3.9-3.6.4-4.3 3.4-7.8 7.6-8.7 2.2-.5 3.5-2.6 3-4.7-.3-2.2-2.4-3.6-4.6-3.1z" fill="#F9F9FA"/><path d="M184.5 71.4c-2.6 0-5.1.9-7.1 2.6-2-1.7-4.5-2.6-7.1-2.6-2.9 0-5.7 1.1-7.7 3.2-1.2 1.2-2 2.5-2.6 4-.9 2.6-.9 5.5.2 8 .3.6.6 1.2.9 1.7.8 1.2 1.8 2.3 3.1 3.1l11.1 9c.6.5 1.3.7 2.1.7s1.5-.3 2.1-.7l11.1-9c1.2-.8 2.2-1.8 3-3 .4-.6.7-1.2 1-1.8 1.1-2.6 1.1-5.5.2-8-.4-1.2-1.1-2.3-1.9-3.3-2.1-2.5-5.2-3.9-8.4-3.9zm7.3 15.8c-.7 1-1.5 1.8-2.5 2.5l-11.2 9.1c-.2.2-.4.2-.7.2-.2 0-.5-.1-.7-.2l-11.2-9.1c-1-.6-1.9-1.5-2.6-2.5-2.2-3.4-1.8-8.1 1.1-11 1.7-1.7 3.9-2.5 6.2-2.5 2.2 0 4.5.9 6.2 2.6.2.2.6.4.9.4.3 0 .6-.1.9-.4 1.7-1.7 3.9-2.6 6.2-2.6 2.5 0 4.9 1 6.7 3.1 2.5 2.9 2.8 7.2.7 10.4z" fill="#FFF"/><path d="M168.7 76.2c-2.8.6-4.8 3-5.1 5.8-.1.8.5 1
.5 1.3 1.6h.1c.8 0 1.4-.6 1.5-1.3.1-1.6 1.3-2.9 2.8-3.2.8-.2 1.3-1 1.1-1.7-.1-.9-.9-1.4-1.7-1.2zM138.1 63l.2.2 6.3 5.1c.5.4 1.1.6 1.8.6.6 0 1.3-.2 1.8-.6l6.2-5.1c.1 0 .1-.1.2-.2.7-.5 1.3-1.1 1.7-1.8.1-.1.2-.3.2-.4 1.5-2.6 1.2-5.9-.7-8.1-1.4-1.6-3.4-2.6-5.5-2.6-1.4 0-2.8.4-4 1.2-1.2-.8-2.6-1.2-4-1.2-1.9 0-3.7.7-5.1 2.1-2.3 2.3-2.7 5.8-1.2 8.6.1.1.1.3.2.4.6.7 1.2 1.3 1.9 1.8zm.8-9.2c1-1 2.2-1.4 3.5-1.4 1.3 0 2.5.5 3.5 1.5.1.1.3.2.5.2s.4-.1.5-.2c1-1 2.2-1.4 3.5-1.4 1.4 0 2.8.6 3.8 1.8 1.4 1.7 1.5 4.1.3 5.9-.4.6-.9 1-1.4 1.4l-6.3 5.1c-.1.1-.3.1-.4.1-.1 0-.3 0-.4-.1l-6.3-5.1c-.5-.4-1-.8-1.4-1.4-1.3-2.2-1.1-4.8.6-6.4z" fill="#F9F9FA"/><path d="M139.3 58c.1 0 .1 0 0 0 .5 0 .9-.3.9-.8.1-.9.7-1.6 1.6-1.8.4-.1.7-.5.6-1-.1-.4-.5-.7-1-.6-1.6.4-2.7 1.7-2.9 3.3 0 .4.4.8.8.9z" fill="#F9F9FA"/><path d="M245.2 68.1V208c0 3.6-3.1 6.6-6.9 6.6H87.4c-3.8 0-6.9-3-6.9-6.6V68.1c0-4 3.2-7.2 7.2-7.2h48.4c.1.1.1.3.2.4.5.7 1.1 1.3 1.8 1.8H87.7c-2.8 0-5 2.2-5 5V208c0 2.4 2.1 4.4 4.6 4.4h150.9c2.6 0 4.6-1.9 4.6-
4.4V68.1c0-2.8-2.2-5-5-5h-83.3c.7-.5 1.3-1.1 1.7-1.8.1-.1.2-.3.2-.4h81.4c4.1-.1 7.4 3.2 7.4 7.2zM95.9 78.2c1.9 0 3.4-1.5 3.4-3.4s-1.5-3.4-3.4-3.4-3.4 1.5-3.4 3.4 1.5 3.4 3.4 3.4zm10.9 0c1.9 0 3.4-1.5 3.4-3.4s-1.5-3.4-3.4-3.4-3.4 1.5-3.4 3.4 1.5 3.4 3.4 3.4zm14.6-3.6v.3c0 2 1.6 3.7 3.7 3.7H160c.5-1.5 1.4-2.8 2.6-4 2.1-2.1 4.8-3.2 7.7-3.2 2.6 0 5.1.9 7.1 2.6 2-1.7 4.5-2.6 7.1-2.6 3.2 0 6.3 1.4 8.4 3.9.8 1 1.5 2.1 1.9 3.3h5.8c2 0 3.7-1.6 3.7-3.7v-.3c0-2-1.6-3.7-3.7-3.7h-75.5c-2 .1-3.7 1.7-3.7 3.7zm97.5 3.6c1.9 0 3.4-1.5 3.4-3.4s-1.5-3.4-3.4-3.4-3.4 1.5-3.4 3.4 1.6 3.4 3.4 3.4zm10.9 0c1.9 0 3.4-1.5 3.4-3.4s-1.5-3.4-3.4-3.4-3.4 1.5-3.4 3.4 1.6 3.4 3.4 3.4zm-49 30.3c6.7 0 13.4 2.8 18.2 8.5 6.7 8 7.4 19.7 1.6 28.4-1.8 2.8-4.2 5-6.7 6.7l-30.3 24.7c-.6.4-1.2.7-1.9.7s-1.3-.2-1.9-.7l-30.5-24.7c-2.6-1.7-5-4-6.9-6.9-6.1-9.3-4.8-22 3.1-29.9 4.6-4.6 10.7-6.9 16.8-6.9 6.1 0 12.2 2.3 16.8 7 .7.7 1.5 1 2.4 1 .9 0 1.7-.3 2.4-1 4.8-4.6 10.9-6.9 16.9-6.9zm-38 9.9c-.5-2.2-2.6-3.5-4.7-3-7.6 1.7-13.2 8.1-1
3.8 15.8-.2 2.2 1.5 4.1 3.6 4.3h.3c2.1 0 3.8-1.6 3.9-3.6.4-4.3 3.4-7.8 7.6-8.7 2.2-.5 3.6-2.7 3.1-4.8zm48.4-41.6c2.5 2.9 2.7 7.3.6 10.5-.7 1-1.5 1.8-2.5 2.5l-11.2 9.1c-.2.2-.4.2-.7.2-.2 0-.5-.1-.7-.2l-11.2-9.1c-1-.6-1.9-1.5-2.6-2.5-2.2-3.4-1.8-8.1 1.1-11 1.7-1.7 3.9-2.5 6.2-2.5 2.2 0 4.5.9 6.2 2.6.2.2.6.4.9.4.3 0 .6-.1.9-.4 1.7-1.7 3.9-2.6 6.2-2.6 2.5-.1 5 .9 6.8 3zm-20.7.5c-.2-.8-1-1.3-1.7-1.1-2.8.6-4.8 3-5.1 5.8-.1.8.5 1.5 1.3 1.6h.1c.8 0 1.4-.6 1.5-1.3.1-1.6 1.3-2.9 2.8-3.2.7-.2 1.2-1 1.1-1.8zM138.2 60c-1.3-1.9-1-4.6.6-6.2 1-1 2.2-1.4 3.5-1.4 1.3 0 2.5.5 3.5 1.5.1.1.3.2.5.2s.4-.1.5-.2c1-1 2.2-1.4 3.5-1.4 1.4 0 2.8.6 3.8 1.8 1.4 1.7 1.5 4.1.3 5.9-.4.6-.9 1-1.4 1.4l-6.3 5.1c-.1.1-.3.1-.4.1-.1 0-.3 0-.4-.1l-6.3-5.1c-.5-.5-1-1-1.4-1.6zm.4-2.9c0 .5.3.9.8.9h.1c.4 0 .8-.3.8-.8.1-.9.7-1.6 1.6-1.8.4-.1.7-.5.6-1-.1-.4-.5-.7-1-.6-1.6.3-2.8 1.7-2.9 3.3zM158 42.4c-2.1-3.2-1.6-7.5 1.1-10.2 1.6-1.6 3.6-2.4 5.7-2.4s4.2.8 5.7 2.4c.2.2.5.3.8.3.3 0 .6-.1.8-.3 1.6-1.6 3.7-2.4 5.7-2.4 2.3 0 4.6 1 6.2
2.9 2.3 2.7 2.5 6.7.6 9.7-.6 1-1.4 1.7-2.3 2.3L172 53.2c-.2.2-.4.2-.6.2-.2 0-.5-.1-.6-.2l-10.4-8.4c-1-.7-1.8-1.4-2.4-2.4zm.6-4.8c-.1.7.5 1.4 1.2 1.5h.1c.7 0 1.3-.5 1.3-1.2.1-1.5 1.2-2.7 2.6-3 .7-.2 1.2-.9 1-1.6-.2-.7-.9-1.2-1.6-1-2.5.5-4.4 2.6-4.6 5.3z" fill="url(#b)"/><path d="M159 46.5l10.3 8.4c.6.5 1.3.7 2 .7s1.5-.3 2-.7l10.3-8.4c1.1-.8 2.1-1.7 2.8-2.8 2.5-3.8 2.2-8.9-.7-12.4-2-2.3-4.9-3.7-7.9-3.7-2.4 0-4.7.8-6.6 2.3-1.9-1.5-4.2-2.4-6.6-2.4-2.8 0-5.3 1.1-7.3 3-3.5 3.4-4 8.9-1.4 13 1 1.3 1.9 2.2 3.1 3zm0-14.3c1.6-1.6 3.6-2.4 5.7-2.4s4.2.8 5.7 2.4c.2.2.5.3.8.3.3 0 .6-.1.8-.3 1.6-1.6 3.7-2.4 5.7-2.4 2.3 0 4.6 1 6.2 2.9 2.3 2.7 2.5 6.7.6 9.7-.6 1-1.4 1.7-2.3 2.3L172 53.2c-.2.2-.4.2-.6.2-.2 0-.5-.1-.6-.2l-10.4-8.4c-.9-.6-1.7-1.4-2.4-2.4-2.1-3.2-1.7-7.5 1-10.2z" fill="#F9F9FA"/><path d="M159.8 39.1h.1c.7 0 1.3-.5 1.3-1.2.1-1.5 1.2-2.7 2.6-3 .7-.2 1.2-.9 1-1.6-.2-.7-.9-1.2-1.6-1-2.6.6-4.5 2.8-4.7 5.4 0 .6.6 1.3 1.3 1.4z" fill="#F9F9FA"/></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_library.svg b/browser/extensions/onboarding/content/img/figure_library.svg
deleted file mode 100644
index aad20181b996..000000000000
--- a/browser/extensions/onboarding/content/img/figure_library.svg
+++ /dev/null
@@ -1,689 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="267" height="240">
- <defs>
- <linearGradient id="a" x1="-287.251713%" x2="363.382118%" y1="-127.999431%" y2="247.172106%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="b" x1="-8347.28%" x2="11424.26%" y1="-8337.33%" y2="11434.21%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="c" x1="-2354.3122%" x2="2468.01463%" y1="-738.5544%" y2="843.1688%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="d" x1="-11316.73%" x2="8454.81%" y1="-5346.60952%" y2="4068.40952%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="e" x1="-156.148629%" x2="205.305484%" y1="-480.49483%" y2="430.938303%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="f" x1="-11777.11%" x2="7994.43%" y1="-1542.90541%" y2="1128.92432%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="g" x1="-1966.10678%" x2="1385.00169%" y1="-2646.49545%" y2="1847.03636%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="h" x1="-1259.26087%" x2="945.558937%" y1="-1283.95691%" y2="942.373333%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="i" x1="-4828.28387%" x2="3895.46452%" y1="-2550.56897%" y2="2112.12414%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="j" x1="-1420.34388%" x2="1159.68716%" y1="-3565.4194%" y2="2819.67133%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="k" x1="-6578.28%" x2="13193.26%" y1="-6566.33%" y2="13205.21%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="l" x1="-690.589109%" x2="1266.98911%" y1="-1068.60597%" y2="1882.37015%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="m" x1="-3693.78418%" x2="6240.18862%" y1="-1360.99327%" y2="2373.67085%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="n" x1="-51.4002563%" x2="99.3496099%" y1="-59.6430664%" y2="133.087695%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="o" x1="-47.4074974%" x2="121.810771%" y1="-106.87209%" y2="132.306567%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="p" x1="-701.943676%" x2="609.202314%" y1="-537.964802%" y2="487.22249%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="q" x1="-1074.53%" x2="834.91%" y1="-358.218519%" y2="348.981481%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="r" x1="-5230.64688%" x2="3222.21875%" y1="-2856.73793%" y2="1806.91207%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="s" x1="-1536.40601%" x2="955.898444%" y1="-3896.2795%" y2="2345.49035%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="t" x1="-2573.03736%" x2="4141.82528%" y1="-7694%" y2="12077.54%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="u" x1="-105.756%" x2="253.726545%" y1="-959.543678%" y2="1313.04713%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="v" x1="-113.495628%" x2="246.641894%" y1="-1951.93556%" y2="2441.74%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="w" x1="-203.741261%" x2="362.77851%" y1="-8794.04%" y2="10977.5%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="x" x1="-8901.65455%" x2="9072.47273%" y1="-4629.9%" y2="4785.11905%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="y" x1="-135.885507%" x2="273.463147%" y1="-6854.87692%" y2="8354%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="z" x1="-237.240755%" x2="222.496119%" y1="-950.902381%" y2="659.16369%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="A" x1="-323.294457%" x2="276.418625%" y1="-16784.12%" y2="10262.94%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="B" x1="-324.50885%" x2="273.863496%" y1="-16876.15%" y2="10170.29%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="C" x1="-8757.43409%" x2="-13250.9636%" y1="-25788.3267%" y2="-38969.3533%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="D" x1="-4977.81154%" x2="-7512.62308%" y1="-21732.3667%" y2="-32716.5611%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="E" x1="-778.197863%" x2="-1200.66709%" y1="-2873.70382%" y2="-4382.98244%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="F" x1="-3162.7925%" x2="-4810.42083%" y1="-25654.4533%" y2="-38835.4867%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="G" x1="-1053.32338%" x2="1514.40909%" y1="-4984.71765%" y2="6645.6%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="H" x1="-5039.72338%" x2="-7607.45714%" y1="-23040.7706%" y2="-34671.0941%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="I" x1="143.631333%" x2="-4.86%" y1="790.352632%" y2="-381.952632%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="J" x1="-2552.41333%" x2="-3870.516%" y1="-20494.2053%" y2="-30900.2789%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="K" x1="-1250.60304%" x2="-1918.56115%" y1="-38487.33%" y2="-58258.87%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="L" x1="-37598.9%" x2="-57370.44%" y1="-17879.1857%" y2="-27294.2048%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="M" x1="-882.727251%" x2="-1363.78637%" y1="-29434.6846%" y2="-44643.5692%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="N" x1="-268.313828%" x2="273.677355%" y1="-882.118713%" y2="699.481287%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="O" x1="-420.455862%" x2="943.098621%" y1="-4784.28571%" y2="9338.24286%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="P" x1="-587.656122%" x2="1429.84796%" y1="-3859.74375%" y2="8497.475%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="Q" x1="-597.567708%" x2="1461.96771%" y1="-6217.96%" y2="13553.58%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="R" x1="-989.3%" x2="1835.20571%" y1="-6563.19091%" y2="11410.9364%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="S" x1="-1683.03158%" x2="3520.00526%" y1="-4061.93125%" y2="8295.28125%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="T" x1="-289.56383%" x2="551.778298%" y1="-736.619802%" y2="1220.95842%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="U" x1="-8102.24%" x2="11669.3%" y1="-8112.37%" y2="11659.17%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="V" x1="-527.27218%" x2="959.309774%" y1="-7671.89%" y2="12099.65%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="W" x1="-563.298261%" x2="1155.96609%" y1="-4360.425%" y2="7996.7875%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="X" x1="-595.656881%" x2="1218.24587%" y1="-7031.95%" y2="12739.59%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="Y" x1="-4261.16471%" x2="7369.15294%" y1="-5186.16429%" y2="8936.36429%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="Z" x1="-7291.52%" x2="12480.03%" y1="-7323.1%" y2="12448.44%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aa" x1="-46.8866667%" x2="106.777333%" y1="-610.354545%" y2="437.354545%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="ab" x1="-954.992%" x2="1681.21333%" y1="-6801.97273%" y2="11172.1545%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ac" x1="-53.1965517%" x2="108.827586%" y1="-138.8375%" y2="154.825%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="ad" x1="-2268.40345%" x2="4549.36897%" y1="-4153.9%" y2="8203.3125%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ae" x1="-134.196822%" x2="349.214914%" y1="-7485.96%" y2="12285.58%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="af" x1="-203.129153%" x2="467.092542%" y1="-7412.3%" y2="12359.24%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ag" x1="-8254.16%" x2="11517.38%" y1="-4829.67647%" y2="6800.64118%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ah" x1="-261.207831%" x2="281.860241%" y1="-1137.19462%" y2="943.173846%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="ai" x1="-353.298433%" x2="352.892428%" y1="-15403.61%" y2="11643.5%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aj" x1="-355.267885%" x2="350.914099%" y1="-15487.8%" y2="11558.97%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="ak" x1="-2084.69358%" x2="-3141.99572%" y1="-5548.86479%" y2="-8333.58732%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="al" x1="-2136.94011%" x2="-3223.28791%" y1="-39758.41%" y2="-59529.95%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="am" x1="-8671.43111%" x2="-13065.1111%" y1="-39159.26%" y2="-58930.8%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="an" x1="42.05%" x2="39.02%" y1="40.85%" y2="37.83%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ao" x1="-1655.02189%" x2="-2503.58541%" y1="-18008.5045%" y2="-26995.5636%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ap" x1="26.16%" x2="23.82%" y1="17.93%" y2="15.58%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aq" x1="-7321.04%" x2="-10915.8655%" y1="-26976.66%" y2="-40157.6867%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ar" x1="-3806.45143%" x2="-5689.45619%" y1="-33702.4583%" y2="-50178.75%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="as" x1="-719.07449%" x2="1298.42959%" y1="-4375.10588%" y2="7255.21176%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="at" x1="-4193.87653%" x2="-6211.37959%" y1="-24406.3118%" y2="-36036.6294%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="au" x1="-524.679508%" x2="1095.93852%" y1="-4333.45%" y2="8023.7625%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="av" x1="-3315.91393%" x2="-4936.53115%" y1="-25616.6063%" y2="-37973.8188%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aw" x1="-1422.94082%" x2="2612.06735%" y1="-5115.85714%" y2="9006.67143%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ax" x1="-8372.54082%" x2="-12407.5531%" y1="-29439.4643%" y2="-43561.9929%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="ay" x1="-2040.6303%" x2="3950.74545%" y1="-6860.53%" y2="12911.01%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="az" x1="-12359.7364%" x2="-18351.1091%" y1="-40913.58%" y2="-60685.12%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aA" x1="-1005.75152%" x2="1989.93788%" y1="-6296.96364%" y2="11677.1727%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aB" x1="-6165.30303%" x2="-9160.98939%" y1="-37254.2727%" y2="-55228.4%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aC" x1="-2871.84%" x2="5036.776%" y1="-4515.63125%" y2="7841.58125%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aD" x1="-16493.056%" x2="-24401.672%" y1="-25798.7875%" y2="-38156%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aE" x1="-4836.46667%" x2="8344.56%" y1="-7269.91%" y2="12501.63%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aF" x1="-27538.4933%" x2="-40719.52%" y1="-41322.96%" y2="-61094.5%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aG" x1="123.979381%" x2="7.09896907%" y1="645.125%" y2="-299.65%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aH" x1="-4143.41443%" x2="-6181.71959%" y1="-33849.65%" y2="-50325.925%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aI" x1="110.22963%" x2="13.6574074%" y1="263.406667%" y2="-84.2533333%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aJ" x1="-7493.57037%" x2="-11154.9667%" y1="-27110.28%" y2="-40291.3067%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aK" x1="-1314.06588%" x2="-1982.02331%" y1="-40374.36%" y2="-60145.89%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aL" x1="-39504.49%" x2="-59276.05%" y1="-23215.4176%" y2="-34845.7353%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aM" x1="-935.697066%" x2="-1419.10856%" y1="-40260.71%" y2="-60032.24%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aN" x1="-239.365731%" x2="302.59479%" y1="-1057.81832%" y2="1006.59618%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aO" x1="-195.98196%" x2="188.238494%" y1="-262.20413%" y2="218.292299%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aP" x1="-148.239568%" x2="156.504317%" y1="-236.10625%" y2="205.1375%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aQ" x1="-684.479137%" x2="737.933813%" y1="-1012.53646%" y2="1046.99896%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- <linearGradient id="aR" x1="-802.736152%" x2="689.739334%" y1="-1056.80385%" y2="890.777014%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aS" x1="-1124.88665%" x2="549.535228%" y1="-1423.71471%" y2="673.128094%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aT" x1="-465.885211%" x2="339.528169%" y1="-152.931663%" y2="157.298039%">
- <stop stop-color="#FFE900" offset="28.07%"/>
- <stop stop-color="#FFCC07" offset="32.21%"/>
- <stop stop-color="#FF8119" offset="41.22%"/>
- <stop stop-color="#FF0B36" offset="54.35%"/>
- <stop stop-color="#FF0039" offset="55.5%"/>
- <stop stop-color="#ED00B5" offset="85.24%"/>
- </linearGradient>
- <linearGradient id="aU" x1="-632.473239%" x2="759.889437%" y1="-217.098158%" y2="319.212821%">
- <stop stop-color="#FFCCD7" offset="40.06%"/>
- <stop stop-color="#EDBEE2" offset="100%"/>
- </linearGradient>
- </defs>
- <g fill="none" fill-rule="evenodd">
- <path d="M150.1 145.9v-.2.2zM152.6 147.1c0 .9.3 1.9.9 2.8-.6-.9-.9-1.9-.9-2.8zM149.7 154.2c0-.2-.1-.5-.3-.6.2.2.3.4.3.6 0 0-.1.7.8 1.8-.9-1-.8-1.8-.8-1.8zM229.2 188.9c.4-1.5.7-3 .8-4.4 0-.5.1-1 .1-1.5 0 .5-.1 1-.1 1.5-.1 1.4-.4 2.9-.8 4.4zM103.1 216.7h.8l-.3-.3c-.1.2-.3.3-.5.3zM235.1 153.6v.2c.4.1.8.3 1.1.6.8.7 1 1.8.7 2.7.1-.2.1-.4.1-.6.1-1.3-.7-2.5-2-2.9v-.2l-.1-.9c-1.5-.1-3-.2-4.6-.4l-.3 3.3 5.1-1.8zM245.1 143.8c6.7-3.5 11.1-12.3 10.9-20.8.3 8.5-4.2 17.3-10.9 20.8-3.5 1.8-8.8 2.6-14.2 2.7 5.4-.1 10.7-.8 14.2-2.7zM228.5 173.5l-.1 1.1c.6.3 1.3.5 1.9.8v.1c.1 0 .1.1.2.1-.1-1.3-.2-2.8-.4-4.3.1 1 .1 2 .2 2.9-.6-.2-1.2-.4-1.8-.7zM147.3 150.3l1-2.8-.1.1-.9 2.7c-.2.3 0 .6.3.7h.1c-.4-.1-.5-.4-.4-.7zM210.1 73.1c.5.1 1 .2 1.6.4-.5-.1-1-.3-1.6-.4zM155.1 180c0 .1.5 2.8 1.3 6.9h.1c-.8-4.1-1.3-6.9-1.3-7 0-.2.1-.4.2-.5-.2.1-.4.3-.3.6zM160 204.4h.2c-1.2-5.1-2.3-10.7-3.2-15.3h-.1c.8 4.6 1.9 10.2 3.1 15.3z"/>
- <path d="M239.9 150.3c-.8.1-1.6.2-2.4.2-.1-.1-.3-.1-.4-.1-2.1-.1-4.3-.2-6.4-.4v.1c2.1.2 4.2.4 6.3.5.1 0 .3 0 .4.1.8 0 1.6-.1 2.4-.2 6.9-.9 11-3.2 15.3-8.7 1.4-1.7 3-4.6 4.1-7.8-1.2 3.2-2.7 5.9-4.1 7.7-4.3 5.4-8.4 7.7-15.2 8.6zM104 200.6c0-.1 0-.1 0 0 0-.1 0-.1 0 0zM145.8 157.9l-.2-.3v-.1l.1.1M140.7 165.2h-.1l-.6.9v.1M252 110.6c-2.8-4.7-6.4-9.1-8.6-11.7 2.2 2.6 5.8 7 8.6 11.7zM206.9 117.5c-.2-.3-.5-.5-.7-.7-.6-.5-1.4-.7-2.1-.7 1 0 2.1.5 2.8 1.4.5.8 1.5 1 2.3.5.1-.1.2-.1.3-.2-.1.1-.2.1-.3.2-.8.5-1.8.3-2.3-.5zM218.4 218.6c-.2 3.3-.2 5.7-.2 7.4h.1c-.1-1.7 0-4.1.1-7.4-6.4 1.4-13 2.3-19.7 2.4-7.5.1-14.9-.8-22.2-2.6v.1c7.2 1.8 14.6 2.7 22.1 2.6 6.7-.2 13.3-1 19.8-2.5zM209 117.5h-.1.1zM244.8 117.2c-.5.4-1.2.3-1.6-.2-.2-.3-.4-.5-.7-.7-.7.4-1.4.6-2.2.6-1 0-1.9-.3-2.6-.9-.4.3-.8.6-1.1 1-.1.2-.3.4-.6.4.2.2.5.4.7.6 2.9 2 6.8 1.3 8.8-1.6.3-.5.2-1.2-.3-1.5-.3-.2-.6-.2-1-.1.3.3.6.6.8 1 .4.5.2 1.1-.2 1.4zM241.5 113.3c.3-.3.4-.6.4-1.1v-3.5c0-.7-.4-1.3-1.1-1.5.4.3.7.8.7 1.3v3.5c0 .2-.1.5-.2.7-.5-.
1-1.1-.2-1.6-.2-.3 0-.6 0-.9.1.1.2.1.4.3.5.7 0 1.6 0 2.4.2zM200.6 117.5l.3-.3.6-.6c-.2.2-.4.4-.6.7 0 0-.1.1-.3.2zM208.1 114.6c-.1 0-.1-.1-.2-.2-1.5-1.1-3.3-1.4-5-1 1.8-.4 3.7.1 5.2 1.2zM209.5 116.7c0-.2 0-.5-.1-.7l-.3-.3.3.3c.1.2.2.5.1.7zM159.7 206.8c.7 3.1 1.5 6.2 2.6 9.2.3.9 2.2 6 4.6 10.2h.1c-2.5-4.2-4.3-9.3-4.7-10.3-1-3-1.9-6-2.6-9.1-1.2.1-2.5.1-3.8.1-4-.1-7.9-.5-11.8-1.2v.1c3.9.7 7.8 1.1 11.7 1.1 1.3 0 2.6 0 3.9-.1zM198.4 115.7c1.1-1.5 2.7-2.5 4.4-2.8-.1-.2-.1-.4-.1-.6v-3.5c0-.9.7-1.6 1.6-1.6-.9 0-1.6.7-1.6 1.6v3.5c0 .2 0 .4.1.6-1.8.2-3.4 1.3-4.4 2.8-.5.7-.3 1.5.2 2.1-.6-.6-.7-1.5-.2-2.1zM156.8 110.8c.3-.1.4-.4.3-.7l-1.2-2.9V106.9l-.3-1 .3.9v.1l-.3-1 .4 1.1v.2l1.2 2.9c0 .3-.1.6-.4.7h-.3c.2.1.3.1.3 0zM164.8 90.6l-.1 4.1M164.9 97.3l-.3-2.4c.1.8.2 1.7.3 2.5V97.3zM184.8 79.4l.2-.2 2.6-1.1h-.1l-2.4 1c-.2.1-.3.2-.3.3z"/>
- <path d="M214.8 223.5v-.9c-1.3.2-2.6.4-3.8.6-4.1.6-8.2 1-12.4 1-6.3 0-12.6-.5-18.8-1.7 0 1.3 0 2.3-.1 3.3 4.7-.1 9.6-.2 14.7-.2 7.1 0 13.9.1 20.4.3v-2.4zM159.1 216.9c-.7-1.9-1.3-4.2-2-6.8h-1.3c-3.9-.1-7.9-.4-11.7-1.1v1.9h1c1 0 1.9 1 1.9 2.2v1.4c0 1.2-.8 2.1-1.7 2.2h.2l.4.3c.2-.2.4-.3.7-.3h.8c1.9.1 3.1.4 3.6.9 1.6 1.3 2.6 4.2 2.6 7.5 0 .5-.1 1.2-.2 1.9 3.1-.2 6.3-.4 9.8-.6-.6-1-1.1-2.1-1.6-3.2-.9-1.9-1.8-4.1-2.5-6.3zM235.4 114.9c-.2.1-.3.3-.3.4.1-.1.2-.2.3-.4.1 0 .1 0 0 0zM150.3 134.7c0-12.6 1.1-21.9 3.3-27.6l-.2-.5c-.4-1.2.3-2.4 1.5-2.8l.3-.1c2-3.6 4.4-6.9 7.3-9.9l.1-3.3c0-1.2 1-2.2 2.2-2.2l3.5.1c3.3-2.6 6.8-5 10.5-7.1l1.4-5.3c.3-1.2 1.5-1.8 2.6-1.6h-.1c-1.2-.3-2.4.4-2.7 1.6l-1.4 5.3c-3.7 2-7.2 4.4-10.5 7.1l-3.5-.1c-1.2 0-2.2 1-2.2 2.2l-.1 3.3c-2.8 3-5.3 6.3-7.3 9.9l-.3.1c-1.2.4-1.8 1.6-1.5 2.8l.2.5c-2.2 5.7-3.3 15-3.3 27.6-.6 3.6-1.3 7.2-2.2 10.6l-4.8 2.9 5-2.8c.9-3.5 1.6-7.1 2.2-10.7zM149.2 158.3c.7.7 1.6 1.5 2.8 2.1-1.2-.6-2.1-1.3-2.8-2.1zM206.5 72.8c.6 0 1.3.1 1.9.1.6 0 1.1.
1 1.7.2-.7-.1-1.3-.2-1.9-.3-.6-.1-1.2-.1-1.9-.1-5.7.2-11.4 1.3-16.7 3.4l.2.1c5.3-2 10.9-3.2 16.7-3.4zM140.8 153.8c-.5-.9-.6-1.9-.4-2.8-.3.9-.2 1.9.4 2.8l2.6 4.3-2.6-4.3zM227.3 212.8c-1.9 1.7-4.1 3-6.5 4v.1c2.3-1 4.5-2.3 6.5-4.1-.1.1-.1.1 0 0zM162.3 170.7l-.1-1.2c-2.4.6-4.8 1.4-7.2 2.3-.4-2.9-.8-5.5-1.1-7.6.3 2.1.7 4.8 1.1 7.7-.1 0-.2.1-.4.2.4 2.2 1.1 5.1 1.5 7.4-.3-2.2-.7-4.4-1-6.4 2.4-1.1 4.7-1.9 7.2-2.4zM174.5 205.9v2.9"/>
- <path d="M152.3 147.3c-.2-3.1-.3-6.4-.4-9.8.2-1 .4-1.9.5-2.8 0-10.7.9-20.1 2.9-26v-.1c-2 5.9-2.9 15.3-2.9 26.1-.2.9-.3 1.8-.5 2.8v.2c0-.1 0-.2.1-.3 0 3.5.1 6.8.3 9.9 0 .1 0 .1 0 0zM236.4 182.5c-.4 15.2-3.8 25.4-5.2 29-.3 1.4-.7 2.7-1.1 3.8-1.6 4.5-3.5 8.5-5.2 11.1 1.7-2.6 3.7-6.6 5.3-11.2.4-1.1.7-2.4 1.1-3.8 1.4-3.6 4.8-13.7 5.2-29v-2.3s-.1 0-.1-.1v2.5zM149 153.6c.1-.6.3-1.3.6-1.9-.3.6-.6 1.2-.6 1.9h.2c-.1-.1-.2-.1-.2 0zM174.2 215.2v.2h-.1l.1-.2-.1.3c.1 2.1.1 4.1.1 6 0 1.7 0 3.2-.1 4.5h.1c.1-1.3.1-2.9.1-4.6 0-1.9-.1-3.9-.1-6h.1v-.2l-.2-5.8c0-.1 0-.2.1-.3-.1.1-.2.3-.2.4l.2 5.7zM236.5 172.8v-2.2c-.1-.7-.1-1.6-.2-2.4.1 1.5.2 3 .2 4.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M7.7 72.3v98.1c0 1 .1 1.2.1 1.2s.2.1 1.2.1h121.1l-.6-1.9c-.9-3.1.3-6.3 2.9-7.9V72.3H7.7zm45.8 65.5c0 1.8-1.5 3.3-3.3 3.3-1.8 0-3.3-1.5-3.3-3.3V98.4c0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3v39.4zm9.8 0c0 1.8-1.5 3.3-3.3 3.3-1.8 0-3.3-1.5-3.3-3.3V105c0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3v32.8zm9.9 0c0 1.8-1.5 3.3-3.3 3.3-1.8 0-3.3-1.5-3.3-3.3v-36.1c0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3v36.1zm20.8 3.1c-.4.1-.8.2-1.1.2-1.3 0-2.6-.8-3.1-2.2l-13.1-36.1c-.6-1.7.3-3.6 2-4.2 1.7-.6 3.6.3 4.2 2L96 136.7c.6 1.7-.3 3.5-2 4.2zM133.5 171.4c-.1 0-.1 0 0 0l.5 1.7-.5-1.7z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M127.3 173.2l1.8.1c.1-.2.3-.4.5-.5H9c-2 0-2.5-.4-2.5-2.5V71.2h127v90.2c.2-.1.4-.2.7-.2l3.6-1.1v-4.8c-1.3-2.3-1.2-5 0-7.1V55.4c0-2.3-1.9-4.2-4.2-4.2H6.5c-2.3 0-4.2 1.9-4.2 4.2v118.3c0 2 1.8 3.7 3.9 3.7h90c.3-.6.6-1.2 1.1-1.5.9-.7 2.6-.8 3.8-.8.5 0 .9.2 1.2.5l.5-.4h19.1c1.3-1.2 3-2 4.9-2h.5zm9.1-13.5l-.1-.2.1.2zm-.1-.3v.4l-.3-.9.3.5zm-9.6-101.2c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9zm-9.2 0c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9zM35 61c0-1.7 1.4-3.1 3.1-3.1H102c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1H38.1c-1.7 0-3.1-1.4-3.1-3.1V61zm-12.4-2.8c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9zm-9.3 0c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.4-2.9 2.9-2.9zM136.4 173.1l-.1-.3-.2-.6-1.1-3.7c-.2-.8.2-1.6 1-1.8-.8.2-1.2 1.1-1 1.8l1.1 3.7.3.9.1.5c-.5.6-.9 1.1-1.4 1.7.5-.6 1-1
.1 1.4-1.7l-.1-.5z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M138.7 159.7c.3-.5.6-1.1.8-1.7l-1.7-2.8v4.7l.9-.2zM6.2 177.5c-2.2 0-3.9-1.6-3.9-3.7V55.4c0-2.3 1.9-4.2 4.2-4.2h127.1c2.3 0 4.2 1.9 4.2 4.2V148c.5-.9 1.3-1.7 2.2-2.3V55.4c0-3.6-2.9-6.5-6.5-6.5H6.5c-3.6 0-6.5 2.9-6.5 6.5v118.3c0 3.3 2.8 5.9 6.2 5.9h89.2c.2-.8.4-1.5.7-2.2H6.2v.1zM139 167.8l1.1-1.6v-.1l-1.1 1.7c-.2.1-.2.4 0 .5-.1-.1-.1-.3 0-.5z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M6.5 71.2v99.2c0 2 .4 2.5 2.5 2.5h120.5c.2-.2.4-.5.7-.7l-.1-.4H9c-1 0-1.2-.1-1.2-.1s-.1-.2-.1-1.2V72.3h124.7V162c.3-.2.7-.4 1.1-.6V71.2H6.5zM132.8 169.2c-.2-.7-.2-1.4 0-2.1-.3.6-.3 1.4 0 2.1l.7 2.3v-.1l-.7-2.2zM13.3 64c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9 0 1.6 1.4 2.9 2.9 2.9zM22.6 64c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9 0 1.6 1.3 2.9 2.9 2.9zM38.1 64.3H102c1.7 0 3.1-1.4 3.1-3.1V61c0-1.7-1.4-3.1-3.1-3.1H38.1c-1.7 0-3.1 1.4-3.1 3.1v.3c0 1.7 1.4 3 3.1 3zM117.5 64c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9 0 1.6 1.3 2.9 2.9 2.9zM126.7 64c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9 0 1.6 1.3 2.9 2.9 2.9z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M60 101.6c-1.8 0-3.3 1.5-3.3 3.3v32.8c0 1.8 1.5 3.3 3.3 3.3 1.8 0 3.3-1.5 3.3-3.3v-32.8c0-1.8-1.4-3.3-3.3-3.3zM69.9 98.4c-1.8 0-3.3 1.5-3.3 3.3v36.1c0 1.8 1.5 3.3 3.3 3.3 1.8 0 3.3-1.5 3.3-3.3v-36.1c0-1.9-1.5-3.3-3.3-3.3zM50.2 95.1c-1.8 0-3.3 1.5-3.3 3.3v39.4c0 1.8 1.5 3.3 3.3 3.3 1.8 0 3.3-1.5 3.3-3.3V98.4c0-1.8-1.5-3.3-3.3-3.3zM82.8 100.5c-.6-1.7-2.5-2.6-4.2-2-1.7.6-2.6 2.5-2 4.2l13.1 36.1c.5 1.3 1.7 2.2 3.1 2.2.4 0 .8-.1 1.1-.2 1.7-.6 2.6-2.5 2-4.2l-13.1-36.1zM122.5 21.4h1.1c.3 0 .6-.2.6-.6 0-.4-.2-.6-.6-.6h-1.1c-.3 0-.6.2-.6.6 0 .4.3.6.6.6zM133.7 21.4h4.5c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-4.5c-.3 0-.6.2-.6.6 0 .3.2.6.6.6zM116.9 21.1c.1.2.3.3.5.3h.6c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-.3c-.2-.4-.6-1.2-1.2-2.1-.2-.3-.5-.3-.8-.2-.3.2-.3.5-.2.8.9 1.3 1.3 2.1 1.4 2.4zM66.7 4.5c.1 0 .2 0 .3-.1 1.6-1.2 3.7-2.1 6.4-2.4 2.1-.3 4-.2 5.9.2.3.1.6-.1.7-.4.1-.3-.1-.6-.4-.7-2-.4-4.1-.5-6.3-.2-2.9.4-5.2 1.3-6.9 2.7-.2.2-.3.5-.1.8.1 0 .3.1.4.1zM41.3
20.7h13.4c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6H41.3c-.3 0-.6.2-.6.6 0 .3.3.6.6.6zM98.6 7.9c1.3-.4 2.7-.5 4.3-.2 2.3.4 4.8 1.8 7.2 4.1.1.1.2.2.4.2.1 0 .3-.1.4-.2.2-.2.2-.6 0-.8-2.6-2.5-5.2-3.9-7.7-4.4-1.8-.3-3.4-.3-4.9.2-.3.1-.4.4-.4.7.1.3.5.5.7.4zM92.1 13.1c.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.3-.7-.1-.3-.3-.6-.5-1-.1-.3-.5-.4-.8-.2-.3.1-.4.5-.2.8.2.3.3.6.5.9zM89.1 8.5c.1.1.3.2.4.2.1 0 .2 0 .3-.1.2-.2.3-.5.1-.8-.7-.9-1.5-1.8-2.3-2.5-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.9.7 1.6 1.5 2.3 2.4zM63.4 14.6s.1 0 0 0c.4 0 .6-.3.6-.6 0-.4-.1-.7-.1-1.1 0-.3-.3-.5-.6-.5h-.1c-.2.1-.4.3-.4.6 0 .4.1.8.1 1.1 0 .1 0 .1.1.2 0 .2.2.3.4.3zM65.5 20.4c.1-.2.1-.4 0-.5 0 0-.3-.7-.6-1.7-.1-.3-.4-.5-.7-.4-.3.1-.5.4-.4.7.1.4.3.8.4 1h-.7c-.2.1-.4.3-.4.5 0 .3.2.6.6.6H65.1c.1.1.3 0 .4-.2z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M40.9 25.6h97.9c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1H116c-2-3.7-7.1-11.7-13.4-12.9-8.4-1.6-10 6.7-10 6.7S87 2.7 73 4.6c-6.5.9-9 4.2-9.8 7.8h.1c.3 0 .6.2.6.5 0 .4.1.7.1 1.1 0 .3-.2.6-.5.6h-.1c-.2 0-.4-.1-.5-.3-.1 1.9.1 3.8.5 5.3h.7c-.1-.3-.2-.6-.4-1-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.7.6 1.7.1.2.1.4 0 .5-.1.2-.3.3-.5.3h-1.3c.4 1.5.9 2.5.9 2.7H40.7c-.6 0-1.1.5-1.1 1.1.1.5.6 1 1.3 1z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M229.2 52.9c.3-1 1.2-3.2 3.8-3.2.3 0 .7 0 1 .1 1.6.3 3.2 1.3 4.8 3 .2.2.6.2.8 0 .2-.2.2-.6 0-.8-1.8-1.9-3.6-3-5.4-3.4-.4-.1-.8-.1-1.2-.1-3.5 0-4.6 3-4.9 4-.1.3.1.6.4.7h.2c.1 0 .2 0 .3-.1.1 0 .2-.1.2-.2zM213.5 48.4c.1 0 .3-.1.4-.2.6-.7 1.5-1.1 2.6-1.4.3-.1.5-.4.4-.7-.1-.3-.4-.5-.7-.4-1.3.4-2.4.9-3.1 1.7-.2.2-.2.6 0 .8.1.2.3.2.4.2zM246.3 56.9h3.3c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-3.3c-.3 0-.6.2-.6.6 0 .3.3.6.6.6zM220.7 46.6c.4.1.7.2 1 .3h.2c.2 0 .5-.1.5-.4.1-.3-.1-.6-.4-.7-.4-.1-.8-.2-1.1-.3-.3-.1-.6.1-.7.4 0 .4.2.7.5.7zM213.5 56.8c.1-.2.1-.4 0-.5l-.1-.1c-.1-.3-.4-.4-.7-.3-.1 0-.1.1-.2.1h-12.7c-.3 0-.6.2-.6.6 0 .3.2.6.6.6H213c.2-.2.4-.3.5-.4z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M199.6 60.7h54.5c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1h-12.9c-1.1-2.1-3.9-6.5-7.4-7.2-2.4-.5-3.8.5-4.6 1.6 0 .1-.1.2-.2.3-.6 1-.8 1.9-.8 1.9s-3.1-8-10.9-7c-5.8.8-6 5-5.4 7.8h.7s.1-.1.2-.1c.3-.1.6 0 .7.3l.1.1c.1.2.1.4 0 .5-.1.2-.3.3-.5.3h-.9c.2.9.5 1.4.5 1.5h-13.2.2c-.6 0-1.1.5-1.1 1.1-.1.6.4 1.1 1 1.1z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M173.7 229.1c-.1.2-.1.4-.2.5 0 0-.1 0-.1.1.1 0 .2-.1.3-.1.3-.3.5-1.6.6-3.6h-.1c-.2 1.5-.3 2.6-.5 3.1zM173.1 232c.5 0 1-.1 1.5-.4-.4.2-.9.4-1.5.4-2.1 0-4.3-2.7-6.1-5.8h-.1c1.8 3.2 4 5.8 6.2 5.8z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M231.1 226.7c-2.6 4.8-5.9 8.5-9.7 8.5-1.4 0-2.9-.5-4-1.4-1.7-1.4-2.5-2.9-2.6-7.8-6.4-.2-13.3-.3-20.4-.3-5 0-9.9.1-14.7.2-.2 5.1-1 6.6-2.7 7.9-1.1.9-2.5 1.4-4 1.4-4 0-6.8-3.6-8.7-6.8-.4-.6-.8-1.3-1.1-2-3.4.2-6.7.4-9.8.6-.3 2-1.1 4.5-2.2 5.4-1.1.9-3.1 1.1-4.5 1.1-.6 0-1-.3-1.4-.6l-.6.6H97.4c-1 0-1.9-.7-2.2-1.7l-.3-1.1v-.2c-5.9.7-9.4 1.5-9.4 2.4 0 2.1 17.6 3.7 39.4 3.7 3.5 0 6.8 0 10-.1 12.2 2.1 34.3 3.4 59.5 3.4 38.5 0 69.7-3.2 69.7-7.1 0-2.6-13.2-4.8-33-6.1z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M219.5 231.3c.5.4 1.2.7 1.9.7.6 0 1.3-.2 1.9-.6-.6.4-1.2.6-1.8.6-.7 0-1.4-.3-2-.7-.6-.6-1.2-1.1-1.3-5.3h-.1c.2 4.3.8 4.8 1.4 5.3zM223.3 228.4c.5-.5 1-1.2 1.5-2-.5.8-1 1.4-1.5 2z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M102.1 188.2l-.3-.2c-.1.2-.3.3-.6.3h-.7c-1.6-.1-2.6-.3-3.1-.7l-.6-.6H83c-.6 0-1.1.5-1.1 1.1 0 .6.5 1.1 1.1 1.1h19.4c.1-.4.2-.7.5-.9h-.8v-.1zM156.8 189.1h.1c-.2-.8-.3-1.5-.4-2.2h-.1c.1.7.3 1.4.4 2.2zM27.3 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6H24c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h3.3zM19.5 193h-1.1c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h1.1c.3 0 .6-.2.6-.6 0-.3-.3-.6-.6-.6zM68.5 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-3.3c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h3.3zM49.6 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6H36.2c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h13.4zM102 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-1.1c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h1.1zM60.7 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-1.1c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h1.1zM91.4 193.6c0-.3-.2-.6-.6-.6H77.4c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h13.4c.3-.1.6-.3.6-.6z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M65.7 230.4c-.3.9-.6 1.7-1.1 2.1-.8.8-2.3.9-3.4.9-.4 0-.8-.3-1-.6l-.5.5H24.5h-.1c2.2 1.6 12.1 2.7 24 2.7 13.5 0 24.4-1.5 24.4-3.4 0-.7-2.7-1.6-7.1-2.2z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M28.3 224.9h32.9c.1 0 .1 0 .2.1-.1-.4-.1-.7-.3-1H27.2v4.6h33.7c.2-.3.3-.7.4-1.1h-33c-.2 0-.4-.2-.4-.4s.2-.4.4-.4h32.9c.1 0 .2 0 .2.1v-1.1c-.1.1-.2.1-.3.1H28.3c-.2 0-.4-.2-.4-.4s.2-.5.4-.5z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M59.2 231.8l.8-.9.3.1c.3.1.5.3.6.5.1.1.2.3.3.3 1.2 0 2.1-.2 2.5-.6.6-.5 1.3-3.3 1.3-5.1 0-2.6-.7-4.6-1.4-5.2-.1-.1-.8-.3-1.9-.4-.1.4-.2.7-.7.8h-.3l-.9-.9H24.3c-.1 0-.3.1-.3.3v1.2c0 .2.1.3.3.3H62l.2.4c1.3 2.4.8 5.9-.4 7.3l-.2.2H24.3c-.1 0-.2 0-.2.1s-.1.2 0 .3l.2 1c0 .1.1.2.2.2h34.7v.1z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M59.7 233.4l.5-.5c.2.3.6.6 1 .6 1.1 0 2.6-.2 3.4-.9.4-.4.8-1.2 1.1-2.1.5-1.5.7-3.3.7-4.3 0-2.8-.8-5.4-1.9-6.5-.4-.4-1.3-.7-2.7-.8h-.6c-.3 0-.4.1-.5.3l-.3-.3h-36c-.9 0-1.7.9-1.7 2v1.2c0 1.1.7 2 1.7 2h.9v4.6h-.9c-.5 0-1 .3-1.3.8-.3.5-.4 1.1-.3 1.7l.2 1c.2.8.8 1.4 1.5 1.5h35.2v-.3zm-35.5-1.8l-.2-1v-.3c0-.1.1-.1.2-.1h37.2l.2-.2c1.3-1.4 1.7-4.9.4-7.3l-.2-.4H24.3c-.1 0-.3-.1-.3-.3v-1.2c0-.2.1-.3.3-.3h35.5l.9.9h.3c.4-.1.6-.5.7-.8 1.2.1 1.8.3 1.9.4.7.7 1.4 2.7 1.4 5.2 0 1.8-.7 4.6-1.3 5.1-.4.3-1.3.6-2.5.6-.1-.1-.2-.3-.3-.3-.2-.2-.3-.5-.6-.5l-.3-.1-.8.9H24.5l-.3-.3zm4.1-5.9h32.9c.1 0 .2-.1.3-.1v1.1c-.1-.1-.1-.1-.2-.1h-33c-.2 0-.4.2-.4.4s.2.4.4.4h33c-.1.4-.2.8-.4 1.1H27.2v-4.6h33.9c.1.3.2.7.3 1-.1 0-.1-.1-.2-.1H28.3c-.2 0-.4.2-.4.4s.2.5.4.5z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M174.2 215.4v-.2M236.7 157.9c.2-.2.3-.4.3-.6.1-.2.1-.5.1-.7 0 .2-.1.4-.1.6-.1.2-.2.4-.3.7zM161.3 204.2v.1h.1v-.1h-.1zM173.7 229.1c-.1.1-.1.2-.2.3-.4.3-1 .1-1.7-.5-.1 0-.1-.1-.2-.2-.3-.2-.5-.5-.8-.9.9 1.1 1.7 1.8 2.3 1.8h.2s.1 0 .1-.1c.1 0 .2-.1.3-.4z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M233.4 212.2c-.3 1.4-.7 2.7-1.1 3.8-.5 1.4-4.6 12.7-9 15.4-.6.4-1.3.6-1.9.6-.7 0-1.3-.2-1.9-.7-.7-.5-1.3-1-1.3-5.3 0-1.7 0-4.1.2-7.4-6.5 1.5-13.1 2.3-19.7 2.4-7.4.1-14.9-.7-22.1-2.6.2 11.4-.6 12-1.5 12.8-.1.1-.3.2-.5.3-.5.3-1 .4-1.5.4-2.2 0-4.4-2.6-6.2-5.8-2.5-4.2-4.3-9.3-4.6-10.2-1-3-1.9-6.1-2.6-9.2-1.3.1-2.6.1-3.9.1-3.9-.1-7.9-.5-11.7-1.1v3.2c3.9.7 7.8 1 11.7 1.1h1.3c.7 2.7 1.3 5 2 6.8.8 2.2 1.6 4.3 2.6 6.3.5 1.1 1 2.1 1.6 3.2.4.7.7 1.3 1.1 2 2 3.2 4.7 6.8 8.7 6.8 1.4 0 2.9-.5 4-1.4 1.6-1.3 2.4-2.9 2.7-7.9 0-1 .1-2.1.1-3.3 6.2 1.2 12.5 1.8 18.8 1.7 4.1 0 8.3-.4 12.4-1 1.2-.2 2.5-.4 3.8-.6v3.4c.1 4.9.9 6.4 2.6 7.8 1.1.9 2.5 1.4 4 1.4 3.8 0 7.1-3.7 9.7-8.5.2-.4.5-.8.7-1.3 1.4-2.8 2.6-5.6 3.6-8.5.4-1.1.8-2.4 1.2-3.9 1.5-4 4.8-14.1 5.4-29-1-1.2-2.1-2.3-3.3-3.3v1.8c-.5 15.4-3.9 25.8-5.4 29.7z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M137.8 148.1c-1.2 2.1-1.3 4.8 0 7.1v.1l1.7 2.8c-.3.6-.6 1.1-.8 1.7l-.8.3-3.6 1.1c-.2.1-.5.2-.7.2-.4.2-.8.4-1.1.6-2.5 1.7-3.8 4.9-2.9 7.9l.6 1.9.1.4c-.2.3-.4.5-.7.7-.2.2-.3.4-.5.5l-1.8-.1h-.6c-1.9 0-3.6.8-4.9 2h10.3l1.8-2.1-.5-1.7-.7-2.2c-.2-.7-.2-1.5 0-2.2.3-1.1 1.2-2.1 2.4-2.5l5.8-1.8c.8-1.4 1.6-3 2.3-4.7l-2.6-4.3c-.5-.9-.7-1.9-.4-2.8.2-.9.8-1.8 1.7-2.3l1.1-.7 4.8-2.9c.9-3.3 1.7-6.9 2.2-10.6 0-12.6 1.1-21.9 3.3-27.6l-.2-.5c-.4-1.2.3-2.4 1.5-2.8l.3-.1c2-3.6 4.4-6.9 7.3-9.9l.1-3.3c0-1.2 1-2.2 2.2-2.2l3.5.1c3.3-2.6 6.8-5 10.5-7.1l1.4-5.3c.3-1.2 1.6-1.9 2.7-1.6h.2l6.5 1.8c5.3-2.1 11-3.2 16.7-3.4.6 0 1.3 0 1.9.1.6 0 1.3.1 1.9.3h.1c.5.1 1 .2 1.6.4 3.9 1.1 8.5 3.5 13.9 7.2 6.2 4.5 12.1 9.4 17.5 14.7.7 0 1.3.3 1.8.8 3.5 3.3 6.7 7 9.7 10.8 3 3.2 6.8 8.1 8.1 13.3 2 7.8-2.2 17.9-5.9 22.5-4.7 5.9-9.2 8.5-16.7 9.5-.7.1-1.5.2-2.4.2 1.9 1.8 2.1 4.8.5 6.9 1 1.5 1.1 3.3.2 4.8-.1.1-.1.3-.2.5.2 4.9.4 10.9.4 14.4 1.1.9 2.2 1.9 3.2 3 .2-6.2 0-12.5-.4-18.7
l-.3.1c-.3 0-.5-.2-.5-.5s.2-.6.5-.6c.2 0 .4-.1.5-.2 0-.6-.1-1.2-.1-1.8 1-1.6 1.5-3.6 1.3-5.5l1-.2c.2-.3.5-.3.8-.2.9-.2 1.7-.4 2.5-.7 0-.3.2-.6.5-.6.2 0 .4.1.5.2 4.5-1.7 8.1-4.5 11.6-9 3.8-4.7 8.8-15.6 6.6-25 0-.1 0-.3-.1-.4-.1-.1-.1-.5-.2-.7-.6-1.8-1.3-3.5-2.2-5.2-.4-.7-.8-1.5-1.3-2.2-1.2-1.8-2.5-3.6-3.9-5.2-.3-.4-.6-.7-1-1.1l-.1-.2c-3-4-6.3-7.7-9.9-11.1-.7-.7-1.6-1.2-2.5-1.4-8-7.7-24.5-22.1-36.2-22.9-.7 0-1.4-.1-2.1-.1-5.8.1-11.5 1.2-16.9 3.2l-5.7-1.6c-3-.8-6 .9-6.8 3.9l-1.1 3.9c-3 1.8-6 3.7-8.7 5.9H165c-3 0-5.5 2.4-5.6 5.4v2c-2.4 2.6-4.5 5.5-6.3 8.5-2.1 1.2-3.3 3.6-2.8 5.9-2.1 6.1-3.2 15.3-3.2 27.5-.5 3-1.1 5.9-1.8 8.7l-4.8 2.9c-.1 0-.1.1-.2.1-1.2 1.2-2 2-2.5 3z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M136.3 159.7v-.3l-.2-.5.2.9M155.9 106.8l-.3-.9.3 1"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M230.3 174.3c0-1-.1-2-.2-2.9-.1-.7-.2-1.4-.2-2.1-.3-.1-.6-.1-1-.2l-.4 4.5c.6.2 1.2.4 1.8.7zM242.5 116.3c-.7-.6-1.6-.9-2.6-1-.8 0-1.6.2-2.3.7.7.6 1.7.9 2.6.9.9 0 1.7-.2 2.3-.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M174.5 205.9c9.6 4.4 20.4 5.7 30.8 3.8 14.7-2.9 21.6-12.6 23.9-20.8.4-1.5.7-3 .8-4.4 0-.5.1-1 .1-1.5.2-2.5.2-5 .2-7.5v-.1c-.6-.3-1.3-.6-1.9-.8l-1.1 11.7c-.1.9-.8 1.5-1.7 1.5l-22.1 3.1c-.9.9-2.9 2.3-6.5 2.5h-.8c-3.3 0-5.3-1.4-6.2-2.3l-24.9-3.6c-.9 0-1.6-.7-1.6-1.5l-1.2-15.4c-2.4.6-4.8 1.4-7.1 2.3.3 2 .6 4.2 1 6.4.1.1.2.2.2.4l.2.9c.6 3.2 2.6 14.1 4.8 23.4v.1h.1v.1h.1c.8 3.7 1.7 7.3 2.9 10.9 2 5.6 4.5 10.3 6.4 12.7.3.3.6.6.8.9.1 0 .1.1.2.2.7.6 1.3.8 1.7.5.1 0 .1-.1.2-.3.2-.5.3-1.6.4-3.2.1-1.3.1-2.8.1-4.5 0-1.9 0-3.9-.1-6v-.2h.1l-.2-5.8c0-.2.1-.3.2-.4.1-.1.2-.2.3-.2l-.1-2.9z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M152 137.6c.1 3.3.2 6.6.4 9.8l.3-.3v.1c-.1.9.3 1.9.8 2.9.8 1.4 2.1 2.7 3.2 3.7 1.8-1 3.3-1.2 4-1.2l-.3-4.3c0-.5.1-1 .5-1.3.3-.3.8-.5 1.3-.5h.3l1.4-6.1c.1-.4.4-.8.8-.8.4-.1 10.5-2.3 19.1 1.5 7.1 3.1 11.3 7.9 13.1 10.5 1.5-2.6 5.2-7.4 12.7-11 6.3-3.1 15.5-3.4 16.7-2.9.3.1.6.4.7.7.2.6 1.3 4.5 1.9 7.1h.2c.5 0 1 .1 1.3.5.2.2.4.5.4.8 5.4-.1 10.7-.9 14.2-2.7 6.7-3.5 11.1-12.3 10.9-20.7 0-1.2-.2-2.4-.4-3.6-.6-2.9-2-5.9-3.7-8.9-2.8-4.7-6.4-9.1-8.6-11.7-.3-.3-.5-.6-.8-.9 0 0-.1 0-.1.1C231 87.2 216.6 76.1 208 75.5c-.6 0-1.1-.1-1.7-.1-5.7.2-11.3 1.4-16.6 3.5l-.5-.1-3.8 1.7h-.1c-.3.1-.6 0-.7-.3-.1-.2 0-.4.1-.6 0-.1.1-.2.2-.3l2.4-1-5.1-1.4-1.7 6.2c-4.1 2.2-8 4.8-11.6 7.8l-4.3-.1-.1 4.1v.1l-.1.1.3 2.4v.3c0 .2-.2.4-.4.5h-.2c-.2 0-.4-.2-.5-.4l-.3-1.8c-2.7 2.9-5 6.1-6.8 9.6l-1.1.3.3 1V107.3l1.2 2.9c.1.3 0 .6-.3.7h-.3c-.2 0-.4-.1-.5-.4l-.7-1.7c-2 5.9-2.9 15.3-2.9 26 .1.9 0 1.8-.2 2.8zm82.7-21.8c.1-.2.2-.3.4-.4.1-.2.2-.3.3-.4.3-.2.5-.5.8-.7.8-.6 1.8-.9 2.
7-1.1-.1-.2-.2-.3-.3-.5h-.3c-.1-.2-.1-.4-.1-.6v-3.5c0-.9.7-1.6 1.6-1.6.3 0 .6.1.9.3.6.2 1.1.8 1.1 1.5v3.5c0 .4-.2.8-.4 1.1 1 .3 2 .8 2.8 1.5.3-.1.7-.1 1 .1.5.3.7 1 .3 1.5-2 2.9-5.9 3.6-8.8 1.6-.3-.2-.5-.4-.7-.6-.3.1-.7.1-1-.1-.5-.4-.6-1.1-.3-1.6zm-36.4-.2c1.1-1.5 2.7-2.5 4.5-2.8-.1-.2-.1-.4-.1-.6v-3.5c0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6v3.5c0 .2-.1.5-.2.7 1.6.4 3 1.4 4 2.7.4.7.3 1.6-.2 2.1-.1.1-.2.2-.3.2-.8.5-1.8.3-2.3-.5-.7-.9-1.7-1.4-2.8-1.5H203.5c-.2 0-.4.1-.5.1h-.1c-.6.2-1.2.6-1.6 1.2-.5.8-1.5 1-2.3.5-.1-.1-.2-.1-.3-.2-.7-.3-.8-1.2-.4-1.9zM236.2 154.4c-.3-.3-.7-.5-1.1-.6v-.2l-5 1.9v.1h.4c.1 0 3-.3 6.2 2.3.1-.2.2-.5.3-.7.3-1 0-2-.8-2.8z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M161.7 166.1c-3.6.4-6.2-.6-7.8-1.9.3 2.1.7 4.7 1.1 7.6 2.3-.9 4.7-1.7 7.2-2.3l-.1-.8c-.2-.9-.4-1.7-.4-2.6z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M136.4 159.7l-.1-.3"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M156.4 186.9H145c-.1.3-.2.5-.4.7h.8l.3.2c.1-.2.3-.3.6-.3h.7c1.6.1 2.6.3 3.1.7.3.2.5.5.8.8h6c-.2-.7-.4-1.4-.5-2.1zM150.2 182.9c0-.3-.2-.6-.6-.6h-7.5v1.1h7.5c.3 0 .6-.2.6-.5z"/>
- <path fill="url(#a)" fill-rule="nonzero" d="M252 110.6c1.7 3 3.1 6 3.7 8.9.2 1.2.4 2.4.4 3.6.2 8.5-4.2 17.3-10.9 20.8-3.5 1.9-8.8 2.6-14.2 2.7v.5l-.3 2.9c2.1.2 4.2.4 6.4.4.1 0 .3 0 .4.1.8 0 1.6-.1 2.4-.2 6.9-.9 11-3.2 15.3-8.7 1.4-1.7 2.9-4.5 4.1-7.7 1.5-4.1 2.4-8.8 1.3-12.8-1.2-4.7-4.7-9.3-7.7-12.5-2.9-3.8-6-7.3-9.5-10.6-.1-.1-.3-.2-.5-.2-.1 0-.3.1-.4.1.2.3.5.6.8.9 2.3 2.7 5.9 7.1 8.7 11.8z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M242.6 98c.2.3.5.6.8.9-.3-.3-.6-.6-.8-.9z"/>
- <path fill="url(#b)" fill-rule="nonzero" d="M242.6 98c.2.3.5.6.8.9-.3-.3-.6-.6-.8-.9z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M252 110.6c1.7 3 3.1 6 3.7 8.9.2 1.2.4 2.4.4 3.6 0-1.2-.2-2.4-.4-3.6-.6-2.9-2-6-3.7-8.9z"/>
- <path fill="url(#c)" fill-rule="nonzero" d="M252 110.6c1.7 3 3.1 6 3.7 8.9.2 1.2.4 2.4.4 3.6 0-1.2-.2-2.4-.4-3.6-.6-2.9-2-6-3.7-8.9z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M229.9 169.3c.1.7.1 1.4.2 2.1 0-.8-.1-1.5-.2-2.1z"/>
- <path fill="url(#d)" fill-rule="nonzero" d="M229.9 169.3c.1.7.1 1.4.2 2.1 0-.8-.1-1.5-.2-2.1z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M220.4 226.2c0 1.8.2 3.1.5 3.3.1.1.3.2.5.2.5 0 1.2-.5 1.9-1.3.5-.5 1-1.2 1.5-2-1.4-.1-2.9-.2-4.4-.2z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M205.3 209.7c-10.4 1.9-21.2.6-30.8-3.8 9.6 4.4 20.3 5.8 30.8 3.8 14.7-2.8 21.6-12.5 23.9-20.8-2.3 8.3-9.2 17.9-23.9 20.8z"/>
- <path fill="url(#e)" fill-rule="nonzero" d="M205.3 209.7c-10.4 1.9-21.2.6-30.8-3.8 9.6 4.4 20.3 5.8 30.8 3.8 14.7-2.8 21.6-12.5 23.9-20.8-2.3 8.3-9.2 17.9-23.9 20.8z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M230.1 183c.2-2.5.3-5 .2-7.4 0 2.4 0 4.9-.2 7.4z"/>
- <path fill="url(#f)" fill-rule="nonzero" d="M230.1 183c.2-2.5.3-5 .2-7.4 0 2.4 0 4.9-.2 7.4z"/>
- <path fill="url(#g)" fill-rule="nonzero" d="M236.4 180.1v-1c-1.9-1.3-3.9-2.4-5.9-3.4 0 .7.1 1.3.1 1.8 2 .8 3.9 1.4 5.8 2.6z"/>
- <path fill="url(#h)" fill-rule="nonzero" d="M236.5 172.8c-.1-1.6-.1-3.1-.2-4.6-1.4 1-3.6 1.6-6.4 1.1.1.7.2 1.4.2 2.1.2 1.5.3 3 .4 4.3-.1 0-.1-.1-.2-.1 0 2.5 0 5-.2 7.4 0 .5-.1 1-.1 1.5-.1 1.4-.4 2.9-.8 4.4-2.3 8.3-9.2 18-23.9 20.8-10.4 1.9-21.2.6-30.8-3.8v2.9h.1c.3 0 .6.2.6.5l.3 6.4c2.9.9 10.8 3 23.3 3 7.3-.2 14.5-1.1 21.5-2.9 2.3-.9 4.4-2.2 6.3-3.8.2-.2.6-.2.8 0 .2.2.2.6 0 .8h-.1v.1c-1.9 1.7-4.1 3-6.4 4-.2 2.9-.3 5.7-.3 7.9v1.4c0 1.8.2 3.1.5 3.3.1.1.3.2.5.2.5 0 1.2-.5 1.9-1.3.5-.5 1-1.2 1.5-2 1.7-2.6 3.6-6.5 5.2-11.1.4-1.1.8-2.4 1.1-3.8 1.4-3.6 4.8-13.8 5.2-29V180s.1 0 .1.1v-1.2c-.2-1.5-.1-4.1-.1-6.1z"/>
- <path fill="url(#i)" fill-rule="nonzero" d="M202.7 108.7v3.5c0 .2 0 .4.1.6.4-.1.8-.1 1.2-.1.5 0 1.1.1 1.6.2.1-.2.2-.5.2-.7v-3.5c0-.9-.7-1.6-1.6-1.6-.8 0-1.5.7-1.5 1.6z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M202.8 112.8c-1.8.3-3.4 1.3-4.5 2.8-.4.7-.3 1.5.2 2.1.1.1.2.2.3.2.8.5 1.8.3 2.3-.5.4-.6 1-1 1.6-1.2h.1c.2-.1.4-.1.5-.1H203.9c.7 0 1.5.2 2.1.7.3.2.5.4.7.7.5.8 1.5 1 2.3.5.1-.1.2-.1.3-.2.6-.5.7-1.4.2-2.1-1-1.4-2.4-2.3-4-2.7-.5-.1-1.1-.2-1.6-.2-.3-.1-.7 0-1.1 0zm5.1 1.6c.1 0 .1.1.2.2s.3.2.4.4c.2.1.3.3.5.5.1.1.2.2.2.3l.3.3c.1.2.1.5.1.7v.1c0 .1-.1.2-.1.2 0 .1 0 .1-.1.2 0 .1-.1.1-.1.1l-.1.1h-.1-.1c-.1 0-.2.1-.2.1h-.1c-.4 0-.7-.1-1-.4-.8-1-2-1.7-3.3-1.7H203.8c-.2 0-.4.1-.6.1-.1 0-.3.1-.4.2-.1.1-.3.1-.4.2-.2.1-.4.2-.5.4l-.1.1-.6.6-.3.3c-.4.3-.9.3-1.2 0-.5-.3-.7-1-.3-1.5.2-.3.4-.5.6-.7l.1-.1c.2-.2.5-.5.8-.7h.1c.1-.1.3-.2.5-.3h.1c.2-.1.3-.2.5-.2h.1c.2-.1.3-.1.5-.2s.4-.1.6-.2c1.3-.4 3.1-.1 4.6.9z"/>
- <path fill="url(#j)" fill-rule="nonzero" d="M202.9 113.4c-.2 0-.4.1-.6.2-.2.1-.4.1-.5.2h-.1c-.2.1-.3.2-.5.2h-.1c-.2.1-.3.2-.5.3h-.1c-.3.2-.5.4-.8.7l-.1.1c-.2.2-.4.5-.6.7-.3.5-.2 1.2.3 1.5.4.3.9.2 1.2 0l.3-.3c.2-.2.4-.5.6-.7l.1-.1c.2-.1.4-.3.5-.4.1-.1.2-.1.4-.2.1-.1.3-.1.4-.2.2-.1.4-.1.6-.1H204c1.3 0 2.5.6 3.3 1.7.2.3.6.4 1 .4h.1c.1 0 .2 0 .2-.1.1 0 .1 0 .2-.1h.1l.1-.1.1-.1s.1-.1.1-.2.1-.1.1-.2v-.1c0-.2 0-.5-.1-.7l-.3-.3c-.1-.1-.1-.2-.2-.3-.1-.2-.3-.3-.5-.5-.1-.1-.3-.2-.4-.4-1.2-.8-3.1-1.3-4.9-.9z"/>
- <path fill="url(#k)" fill-rule="nonzero" d="M140 165.4v.7l.6-.9"/>
- <path fill="#FFF" fill-rule="nonzero" d="M137.8 166.1l-1.9.6c-.8.2-1.2 1.1-1 1.8l1.1 3.7.2.6.1.2v.1l.1.4c-.5.6-1 1.1-1.4 1.7h2.4c.2-.4.3-.9.3-1.4v-7.7h.1z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M140 168.2l-.1.2c-.2.3-.5.3-.8.2l-.2-.2c-.1-.2-.1-.4 0-.6l1.1-1.6v-.7l-2.2.7v7.7c0 .5-.1 1-.3 1.4h2.3c.1-.5.2-.9.2-1.4v-5.7z"/>
- <path fill="url(#l)" fill-rule="nonzero" d="M154.4 170.6c-3.5 1.5-6.8 3.4-9.9 5.6.1.1.1.2.2.4l.2.7c3.1-2 6.3-3.8 9.7-5.2-.1-.6-.1-1.1-.2-1.5z"/>
- <path fill="url(#m)" fill-rule="nonzero" d="M156.8 189.1c-.2-.8-.3-1.5-.4-2.2-.8-4.1-1.3-6.9-1.3-6.9 0-.3.1-.5.4-.6.1-.1.2-.1.2-.1.2 0 .3 0 .4.1-.4-2.2-1.1-5.2-1.5-7.4.1-.1.2-.1.4-.2-.4-2.9-.8-5.5-1.1-7.7-1.5-1.3-2.1-2.8-2-3.7v-.1c-1.2-.6-2.1-1.4-2.8-2.1-1.4-1.5-1.7-3-1.7-3.2v-.4c.1-.4.5-.8.9-.8h.3l.2-.2c.1-.6.3-1.3.6-1.9.8-1.9 2.1-3.5 2.7-4.3-.1-3.2-.2-6.5-.3-9.9 0 .1 0 .2-.1.3l-.6 3c-.1.2-.1.5-.2.7-.3 1.1-.5 2.3-.9 3.5-.1.2-.1.4-.2.6v.2l-.1.2-.1.5h-.1l-1.5 4.1c-.1.2-.3.4-.6.3h-.1-.1c-.3-.1-.4-.4-.3-.7l1-2.7-.3.2-4.7 2.9c-.7.4-.9 1.3-.5 2l2.9 4.7.1.1.1.1.2.3v.1c-1 2.3-2.1 4.5-3.3 6.7h-.1l-2.4 3.5-.1.2c-.2.3-.5.3-.8.2l-.2-.2c-.1-.2-.1-.4 0-.6l1.1-1.6v-.7l-2.2.7-1.9.6c-.8.2-1.2 1.1-1 1.8l1.1 3.7.2.6.1.2v.1l.1.4c-.5.6-1 1.1-1.4 1.7H142.6c.7 0 1.3.4 1.7.9.1.1.1.2.2.4l.2.7.1.2c.1.5 0 1.1-.3 1.5-.4.4-.9.7-1.5.7h-1v4h1c1 0 1.9.8 1.9 1.7v1.1c0 .1 0 .3-.1.4-.1.3-.2.5-.4.7h.8l.3.2c.1-.2.3-.3.6-.3h.7c1.6.1 2.6.3 3.1.7.3.2.5.5.8.8.9 1.2 1.4 3 1.4 5 0 1.5-.7 4.7-2 5.7-.9.7-2.6.8-3.8.8h-.2c.
2.3.4.6.5 1.1l.2 1.1c.1.4.1.7 0 1.1 3 .4 6 .7 9 .7 1.4 0 2.8-.1 4.1-.2-1.1-4.9-2.2-10.5-3.1-15.1z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M149.2 153.6s0-.1 0 0c.2 0 .2 0 .3.1.2.1.3.3.3.6 0 0-.1.7.8 1.8.5.6 1.3 1.2 2.5 1.9.2-.9.7-1.7 1.5-2.5s1.5-1.3 2.3-1.7c-1.2-1.1-2.4-2.4-3.2-3.7-.6-.9-.9-1.9-.9-2.8v-.1l-.3.3c-.6.7-1.9 2.4-2.7 4.3-.3.6-.5 1.3-.6 1.9-.2-.2-.1-.2 0-.1z"/>
- <path fill="url(#n)" fill-rule="nonzero" d="M136.3 173.1l-.3-.9-1.1-3.7c-.2-.8.2-1.6 1-1.8l1.9-.6 2.2-.7.6-.2h.1l-.7 1-1.1 1.6c-.1.2-.1.4 0 .5 0 .1.1.2.2.2.3.2.6.1.8-.2l.1-.2 2.4-3.5h.1c1.2-2.2 2.4-4.4 3.3-6.7v-.1l-.2-.3-.1-.2-.1-.1-2.9-4.7c-.4-.7-.2-1.6.5-2l4.7-2.9.3-.2.1-.1-1 2.8c-.1.3.1.6.3.7h.1c.2 0 .5-.1.6-.3l1.5-4.1h.1l.1-.5.1-.2v-.2c.1-.2.1-.4.2-.6.3-1.2.6-2.3.9-3.5.1-.2.1-.5.2-.7l.6-3v-.2c.2-.9.3-1.9.5-2.8 0-10.8.9-20.2 2.9-26.1v.1l.7 1.7c.1.2.3.3.5.4h.2c.3-.1.4-.4.3-.7l-1.2-2.9v-.2l-.4-1.1 1.1-.3c1.8-3.5 4.1-6.7 6.8-9.6 0 .6.1 1.2.3 1.8.1.2.3.4.5.4h.2c.2-.1.4-.3.4-.5v-.2c-.1-.8-.2-1.7-.3-2.5l.1-.1v-.1l.1-4.1 4.3.1c3.6-3 7.5-5.6 11.6-7.8l1.7-6.2 5.1 1.4h.1l-2.6 1.1c-.1 0-.2.1-.2.2-.1.1-.2.4-.1.6.1.3.4.4.7.3h.1l3.8-1.7.5.1c5.3-2.1 10.9-3.3 16.6-3.5.6 0 1.2 0 1.7.1 8.6.6 23 11.7 34.3 22.9 0 0 .1 0 .1-.1.1-.1.3-.1.4-.1.2 0 .4.1.5.2 3.4 3.3 6.6 6.8 9.5 10.6 2.9 3.2 6.5 7.7 7.7 12.5 1 4 .2 8.7-1.3 12.8-1.2 3.2-2.8 6-4.1 7.8-4.3 5.5-8.4 7.8-15.3 8.7-.8.1-1.6.2-2.4.2-.1-.1-.3-.
1-.4-.1-2.1-.1-4.2-.2-6.3-.5l-.2 2.1c1.5.2 3 .3 4.6.4l.1.9v.2c1.3.4 2.1 1.6 2 2.9 0 .2 0 .5-.1.7l-.3.6.6.6c.3.3.6.7.9 1.1 1.6-2.1 1.5-5-.5-6.9.8 0 1.6-.1 2.4-.2 7.5-1 12.1-3.6 16.7-9.5 3.7-4.6 7.9-14.7 5.9-22.5-1.3-5.2-5.1-10.1-8.1-13.3-2.9-3.9-6.1-7.5-9.7-10.8-.5-.5-1.2-.8-1.8-.8-5.4-5.4-11.3-10.3-17.5-14.7-5.4-3.7-10-6.2-13.9-7.2-.5-.2-1.1-.3-1.6-.4h-.1c-.6-.1-1.2-.2-1.7-.2-.6 0-1.2-.1-1.9-.1-5.7.2-11.4 1.3-16.7 3.4l-.2-.1-6.5-1.8h-.1c-1.2-.3-2.3.4-2.6 1.6l-1.4 5.3c-3.7 2-7.2 4.4-10.5 7.1l-3.5-.1c-1.2 0-2.2 1-2.2 2.2l-.1 3.3c-2.8 3-5.3 6.3-7.3 9.9l-.3.1c-1.2.4-1.8 1.6-1.5 2.8l.2.5c-2.2 5.7-3.3 15-3.3 27.6-.6 3.6-1.4 7.2-2.2 10.6l-5 2.8-1.1.7c-.9.5-1.4 1.4-1.7 2.3-.2.9-.1 1.9.4 2.8l2.6 4.3c-.7 1.6-1.5 3.2-2.3 4.7l-5.8 1.8c-1.2.4-2.1 1.3-2.4 2.5-.2.7-.2 1.4 0 2.1l.7 2.2.5 1.7-1.8 2.1h2.9c.5-.6 1-1.1 1.4-1.7l-.2-.8z"/>
- <path fill="url(#o)" fill-rule="nonzero" d="M237.3 167.2c-.2.3-.6.7-1 1 0 .9.1 1.7.2 2.4.1.5 0 1.3 0 2.2 0 2-.2 4.6 0 6.1v3.5c-.4 15.3-3.8 25.4-5.2 29-.4 1.4-.7 2.6-1.1 3.8-1.6 4.6-3.6 8.6-5.3 11.2-.5.8-1.1 1.5-1.5 2-.7.8-1.4 1.3-1.9 1.3-.2 0-.3-.1-.5-.2-.3-.3-.5-1.5-.5-3.3v-1-.3-.1c0-2.2.2-5.1.3-7.9v-.1c2.4-.9 4.6-2.3 6.5-4h.1c.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0-1.9 1.6-4 2.9-6.3 3.8-7.1 1.8-14.3 2.7-21.5 2.9-12.5 0-20.4-2.1-23.3-3l-.3-6.4c0-.3-.3-.5-.6-.5h-.1c-.1 0-.2.1-.3.2-.1.1-.1.2-.1.3l.2 5.8v.2h-.1c0 2.1.1 4.1.1 6 0 1.7 0 3.3-.1 4.6-.1 2-.3 3.3-.6 3.6-.1.1-.2.1-.3.1h-.2c-.6 0-1.4-.6-2.3-1.8-2-2.4-4.5-7.1-6.4-12.7-1.2-3.6-2.1-7.2-2.9-10.9h-.2v-.2c-2.2-9.3-4.2-20.2-4.8-23.4l-.2-.9c0-.1-.1-.3-.2-.4-.1-.1-.3-.1-.4-.1-.1 0-.2.1-.2.1-.2.1-.2.3-.2.5 0 .1.5 2.9 1.3 7 .1.7.3 1.5.4 2.2.9 4.6 2 10.2 3.2 15.3h-.2c-1.4.1-2.7.2-4.1.2-3 0-6-.3-9-.7-.1.3-.2.6-.3.8-.4.5-.9.9-1.5.9h-1v.2c3.9.7 7.8 1.1 11.8 1.2 1.3 0 2.6 0 3.9-.1.7 3.1 1.5 6.2 2.6 9.2.3.9 2.2 6.1 4.7 10.3 1.8 3.1 4 5.7 6.2 5.7
.5 0 1-.1 1.4-.4.2-.1.3-.2.5-.3.9-.8 1.7-1.4 1.5-12.8v-.1c7.2 1.8 14.7 2.7 22.2 2.6 6.6-.1 13.3-.9 19.7-2.4-.2 3.3-.3 5.7-.2 7.5.1 4.2.7 4.7 1.3 5.2.5.4 1.2.7 1.9.7.6 0 1.2-.2 1.8-.6 4.4-2.7 8.5-14 9-15.4.4-1.1.8-2.4 1.1-3.8 1.5-3.9 4.9-14.2 5.3-29.7v-1.8-1.3c-.1-3.6-.2-9.6-.4-14.4-.4.6-.7 1.7-1.1 2.2z"/>
- <path fill="url(#p)" fill-rule="nonzero" d="M152 160.4c.2-.2 1.1.2 1-.1-.2-.8-.2-1.6 0-2.4-1.2-.7-2-1.3-2.5-1.9-.9-1-.8-1.8-.8-1.8 0-.2-.1-.4-.2-.6-.1 0-.1-.1-.2-.1H149c-.1 0-.2.1-.2.2h-.3c-.5.1-.8.4-.9.8v.4c0 .2.3 1.7 1.7 3.2.6 1 1.5 1.7 2.7 2.3z"/>
- <path fill="url(#q)" fill-rule="nonzero" d="M161.9 166s-.1 0-.2.1c.1.9.2 1.8.4 2.6l-.2-2.7z"/>
- <path fill="url(#r)" fill-rule="nonzero" d="M241.3 112.7c.1-.2.2-.5.2-.7v-3.5c0-.5-.3-1-.7-1.3-.3-.2-.6-.3-.9-.3-.9 0-1.6.7-1.6 1.6v3.5c0 .2 0 .4.1.6h.3c.3 0 .6-.1.9-.1.6 0 1.2.1 1.7.2z"/>
- <path fill="url(#s)" fill-rule="nonzero" d="M235.1 117.3c.3.2.7.2 1 .1.2-.1.4-.2.6-.4.3-.4.7-.7 1.1-1 .7-.4 1.4-.7 2.3-.7 1 0 1.9.4 2.6 1 .3.2.5.4.7.7.4.5 1.1.6 1.6.2.4-.3.6-.9.3-1.4-.2-.4-.5-.7-.8-1-.8-.8-1.8-1.3-2.8-1.5-.8-.2-1.6-.2-2.4-.1-1 .1-1.9.5-2.7 1.1-.3.2-.6.4-.8.7l-.4.4-.4.4c-.6.5-.5 1.2.1 1.5z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M102.5 224.6c-.3 0-.5-.2-.5-.5s.2-.5.5-.5h44.2c.1 0 .2 0 .2.1-.1-.4-.2-.8-.4-1.2H101v5.2h45.2c.2-.3.4-.8.6-1.3H102.4c-.3 0-.5-.2-.5-.5s.2-.5.5-.5h44.2c.1 0 .2 0 .3.1.1-.4.1-.8 0-1.3-.1.1-.2.2-.3.2h-44.1v.2z"/>
- <path fill="url(#t)" fill-rule="nonzero" d="M96.8 230.3c.9-.1 1.9-.2 2.9-.3v-.3h-2.6c-.1 0-.2 0-.3.1 0 .2-.1.3 0 .5z"/>
- <path fill="url(#u)" fill-rule="nonzero" d="M151.8 225.1c0-2.9-1-5.2-1.9-6-.2-.1-1-.4-2.6-.5-.1.4-.3.9-.9.9l-.4.1-1.2-1H97.1c-.2 0-.3.2-.3.3v1.4c0 .2.2.3.3.3h15.6l34.2-.6.6.6h.1l.2.3 1.1 1.1-.2 1.1c.3 1.4.2 3-.2 4.2l3-.3c.2-.6.3-1.3.3-1.9z"/>
- <path fill="#EDEDF0" fill-rule="nonzero" d="M142.6 230.1h-43v-.1c-1 .1-2 .2-2.9.3l.3 1c0 .2.2.3.3.3H144l1.1-1 .5.1c.4.1.6.3.8.6l.4.4c1.6 0 2.8-.3 3.3-.7.5-.4 1.1-2.1 1.5-3.8l-3 .3c-.2.5-.4 1-.6 1.4l-.2 1-5.2.2z"/>
- <path fill="url(#v)" fill-rule="nonzero" d="M142.6 230.1h-43v-.1c-1 .1-2 .2-2.9.3l.3 1c0 .2.2.3.3.3H144l1.1-1 .5.1c.4.1.6.3.8.6l.4.4c1.6 0 2.8-.3 3.3-.7.5-.4 1.1-2.1 1.5-3.8l-3 .3c-.2.5-.4 1-.6 1.4l-.2 1-5.2.2z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M112.7 220.7h34.9l-.7-.6"/>
- <path fill="url(#w)" fill-rule="nonzero" d="M112.7 220.7h34.9l-.7-.6"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M147.9 221l.1.1c.4.6.7 1.3.8 2l.2-1.1-1.1-1z"/>
- <path fill="url(#x)" fill-rule="nonzero" d="M147.9 221l.1.1c.4.6.7 1.3.8 2l.2-1.1-1.1-1z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M99.7 230.1h43l5.1-.3.2-1c-.2.3-.4.5-.6.7l-.3.3H99.7v.3z"/>
- <path fill="url(#y)" fill-rule="nonzero" d="M99.7 230.1h43l5.1-.3.2-1c-.2.3-.4.5-.6.7l-.3.3H99.7v.3z"/>
- <path fill="url(#z)" fill-rule="nonzero" d="M95.2 231.8c.2 1 1.1 1.7 2.2 1.7h47.3l.6-.6c.3.3.8.6 1.4.6 1.5 0 3.4-.2 4.5-1.1 1.1-.9 1.9-3.4 2.2-5.4.1-.7.2-1.4.2-1.9 0-3.2-1-6.2-2.6-7.5-.6-.4-1.8-.7-3.6-.9h-.8c-.3 0-.6.1-.7.3l-.4-.3H97c-1.2 0-2.2 1-2.2 2.2v1.4c0 1.2 1 2.2 2.2 2.2h1.2v5.2H97c-.7 0-1.3.3-1.8.9-.4.5-.5 1.1-.4 1.7v.2l.4 1.3zm1.6-1.9c.1-.1.2-.1.3-.1h50l.3-.3c.2-.2.4-.4.6-.7.3-.4.5-.9.6-1.4.4-1.3.5-2.8.2-4.2-.2-.7-.4-1.4-.8-2l-.1-.1-.2-.3H97.2c-.2 0-.3-.2-.3-.3v-1.4c0-.2.2-.3.3-.3h47.7l1.2 1 .4-.1c.6-.1.8-.5.9-.9 1.6.1 2.4.4 2.6.5.9.8 1.9 3.1 1.9 6 0 .6-.1 1.4-.2 2.1-.3 1.7-.9 3.4-1.5 3.8-.5.4-1.8.6-3.3.7l-.4-.4c-.2-.3-.4-.5-.8-.6l-.5-.1-1.1 1H97.5c-.2 0-.3-.1-.3-.3l-.3-1v-.1c-.2-.3-.1-.4-.1-.5zm50.2-4.1c.1.1.2.2.2.4s-.1.4-.3.4c-.1.5-.3.9-.6 1.3H101v-5.2h45.5c.2.4.3.8.4 1.2.1.1.2.2.2.4 0 .1-.1.2-.1.3.1.3.1.8 0 1.2z"/>
- <path fill="url(#A)" fill-rule="nonzero" d="M147 223.8c-.1 0-.2-.1-.2-.1h-44.2c-.3 0-.5.2-.5.5s.2.5.5.5h44.2c.1 0 .3-.1.3-.2.1-.1.1-.2.1-.3 0-.2-.1-.3-.2-.4z"/>
- <path fill="url(#B)" fill-rule="nonzero" d="M102.5 225.6c-.3 0-.5.2-.5.5s.2.5.5.5H146.9c.2-.1.3-.2.3-.4 0-.1-.1-.3-.2-.4-.1-.1-.2-.1-.3-.1h-44.2v-.1z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M103 210.8h38.8v-5.2h-38.5c-.8 1.1-1 3.5-.3 5.2z"/>
- <path fill="url(#C)" fill-rule="nonzero" d="M134.5 203.4c-1.4-.5-2.8-.9-4.2-1.5h-.2l4.2 1.5h.2z"/>
- <path fill="url(#D)" fill-rule="nonzero" d="M145.3 203.6c-2.5-.5-5.1-1-7.6-1.8h-.2c2.5.8 5.1 1.4 7.8 1.8z"/>
- <path fill="url(#E)" fill-rule="nonzero" d="M103.2 213.9l.4-.1 1 1h40.6c.2 0 .3-.2.3-.3v-1.4c0-.2-.1-.3-.3-.3h-13.3l-29.1.6-.5-.6h-.1l-.2-.3-.9-1.1.1-1.1c-.4-2-.1-4.2.7-5.6l.1-1 4.4-.3h18.5c-.8-.4-1.7-.9-2.6-1.5h-17.1l-.9 1-.4-.1c-.3-.1-.5-.3-.7-.6-.1-.1-.2-.3-.3-.4-1.3 0-2.4.3-2.8.7-.7.6-1.4 3.8-1.4 5.9 0 2.9.8 5.2 1.6 6 .1.1.9.4 2.2.5 0-.5.2-.9.7-1z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M134.3 203.4c-1.4-.5-2.8-.9-4.2-1.5h-7.8c.9.6 1.8 1.1 2.6 1.5h9.4z"/>
- <path fill="url(#F)" fill-rule="nonzero" d="M134.3 203.4c-1.4-.5-2.8-.9-4.2-1.5h-7.8c.9.6 1.8 1.1 2.6 1.5h9.4z"/>
- <path fill="url(#G)" fill-rule="nonzero" d="M145.3 203.6c.1-.1.1-.2.1-.3l-.2-1.1c0-.2-.1-.3-.3-.3h-7.2c2.5.7 5 1.3 7.6 1.7z"/>
- <path fill="url(#H)" fill-rule="nonzero" d="M145.3 203.6c.1-.1.1-.2.1-.3l-.2-1.1c0-.2-.1-.3-.3-.3h-7.2c2.5.7 5 1.3 7.6 1.7z"/>
- <path fill="url(#I)" fill-rule="nonzero" d="M142.9 203.4v.3h2.2c.1 0 .1 0 .2-.1-2.6-.4-5.2-1-7.8-1.8h-7.2l4.2 1.5h8.4v.1z"/>
- <path fill="url(#J)" fill-rule="nonzero" d="M142.9 203.4v.3h2.2c.1 0 .1 0 .2-.1-2.6-.4-5.2-1-7.8-1.8h-7.2l4.2 1.5h8.4v.1z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M131.8 212.7h-29.6l.5.7"/>
- <path fill="url(#K)" fill-rule="nonzero" d="M131.8 212.7h-29.6l.5.7"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M101.9 212.4l-.1-.1c-.3-.6-.6-1.3-.7-2l-.1 1.1.9 1z"/>
- <path fill="url(#L)" fill-rule="nonzero" d="M101.9 212.4l-.1-.1c-.3-.6-.6-1.3-.7-2l-.1 1.1.9 1z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M134.5 203.4h-28.1l-4.4.3-.1 1c.1-.3.3-.5.5-.7l.2-.3H143v-.3h-8.5z"/>
- <path fill="url(#M)" fill-rule="nonzero" d="M134.5 203.4h-28.1l-4.4.3-.1 1c.1-.3.3-.5.5-.7l.2-.3H143v-.3h-8.5z"/>
- <path fill="url(#N)" fill-rule="nonzero" d="M103 216.8h.2c.2 0 .4-.1.5-.3l.3.3H145.4c1-.1 1.7-1.1 1.7-2.2v-1.4c0-1.2-.9-2.2-1.9-2.2h-1v-5.5h1c.6 0 1.1-.3 1.5-.9.2-.3.3-.5.3-.8.1-.3.1-.7 0-1.1l-.2-1.1c-.1-.4-.3-.8-.5-1.1-.4-.1-.7-.3-1-.5l-.5.4h-40.1c-.2 0-.3 0-.5-.1-.4-.1-.7-.3-.9-.6h-.2c-1.2 0-2.9.2-3.9 1.1-1.3 1.3-2 5.5-2 7.4 0 3.2.9 6.2 2.2 7.5.5.4 1.5.7 3.1.9.1.1.3.2.5.2zm-2.8-2.5c-.8-.8-1.6-3.1-1.6-6 0-2.1.8-5.3 1.4-5.9.4-.4 1.5-.6 2.8-.7.1.1.3.3.3.4.2.3.4.5.7.6l.4.1.9-1H144.8c.1 0 .2.1.3.3l.2 1.1c0 .1 0 .2-.1.3l-.1.1s-.1.1-.2.1h-42.6l-.2.3c-.2.2-.3.4-.5.7-.8 1.4-1.1 3.6-.7 5.6.1.7.4 1.4.7 2l.1.1.2.3h43c.2 0 .3.2.3.3v1.4c0 .2-.1.3-.3.3h-40.6l-1-1-.4.1c-.5.1-.7.5-.8.9-1 0-1.8-.2-1.9-.4zm41.5-8.7v5.2H103c-.7-1.7-.5-4.1.3-5.2h38.4z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M108.9 193.8c-.2 0-.4-.2-.4-.4s.2-.4.4-.4h37.5c.1 0 .1 0 .2.1l-.3-.9h-38.6v4.1H146c.2-.3.4-.6.5-1h-37.6c-.2 0-.4-.2-.4-.4s.2-.4.4-.4h37.5c.1 0 .2 0 .3.1 0-.3.1-.7 0-1-.1.1-.2.1-.3.1h-37.5v.1z"/>
- <path fill="url(#O)" fill-rule="nonzero" d="M104.3 198.9c0 .1.1.2.3.2h13.9c-.4-.4-.9-.8-1.3-1.1h-10.7v-.3h-2.2c-.1 0-.2 0-.2.1-.1.1-.1.1-.1.2l.3.9z"/>
- <path fill="url(#P)" fill-rule="nonzero" d="M104.2 189.1c-.1 0-.2.1-.2.2v1.1c0 .1.1.3.3.3h9.3c0-.6.1-1.1.2-1.6h-9.6z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M113.8 189.1h-9.5-.1 9.6z"/>
- <path fill="url(#Q)" fill-rule="nonzero" d="M113.8 189.1h-9.5-.1 9.6z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M117.2 198c.4.4.8.8 1.3 1.1h5.7c-.7-.4-1.4-.7-2-1.1h-5z"/>
- <path fill="url(#R)" fill-rule="nonzero" d="M117.2 198c.4.4.8.8 1.3 1.1h5.7c-.7-.4-1.4-.7-2-1.1h-5z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M113.8 189.1c-.1.5-.2 1.1-.2 1.6h3.4c.1-.6.2-1.1.4-1.6h-3.6z"/>
- <path fill="url(#S)" fill-rule="nonzero" d="M113.8 189.1c-.1.5-.2 1.1-.2 1.6h3.4c.1-.6.2-1.1.4-1.6h-3.6z"/>
- <path fill="url(#T)" fill-rule="nonzero" d="M142.9 198h-15.8c.9.4 1.7.8 2.6 1.1h14.4l.9-.8.4.1c.3.1.5.3.7.5.1.1.2.3.3.3 1.3 0 2.4-.2 2.8-.5.7-.5 1.4-2.9 1.4-4.6 0-2.3-.8-4-1.6-4.6-.1-.1-.8-.3-2-.4h-.2c-.1.3-.3.6-.7.7h-.3l-1-.7h-13.3c-.4.5-.7.9-1.1 1.4l16.2-.3.5.5h.1l.2.2.9.8-.1.9c.4 1.6.1 3.2-.7 4.3l-.1.8-4.5.3z"/>
- <path fill="url(#T)" fill-rule="nonzero" d="M142.9 198h-15.8c.9.4 1.7.8 2.6 1.1h14.4l.9-.8.4.1c.3.1.5.3.7.5.1.1.2.3.3.3 1.3 0 2.4-.2 2.8-.5.7-.5 1.4-2.9 1.4-4.6 0-2.3-.8-4-1.6-4.6-.1-.1-.8-.3-2-.4h-.2c-.1.3-.3.6-.7.7h-.3l-1-.7h-13.3c-.4.5-.7.9-1.1 1.4l16.2-.3.5.5h.1l.2.2.9.8-.1.9c.4 1.6.1 3.2-.7 4.3l-.1.8-4.5.3z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M146.8 189.1h.2-.2z"/>
- <path fill="url(#U)" fill-rule="nonzero" d="M146.8 189.1h.2-.2zM146.8 189.1h.2-.2z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M144.8 189.1h-13.3 13.3z"/>
- <path fill="url(#V)" fill-rule="nonzero" d="M144.8 189.1h-13.3 13.3zM144.8 189.1h-13.3 13.3z"/>
- <path fill="url(#W)" fill-rule="nonzero" d="M119.8 189.1c-.3.5-.5 1-.6 1.6l10.5-.2c.3-.5.7-.9 1-1.4h-10.9z"/>
- <path fill="url(#W)" fill-rule="nonzero" d="M119.8 189.1c-.3.5-.5 1-.6 1.6l10.5-.2c.3-.5.7-.9 1-1.4h-10.9z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M130.8 189.1h-10.9 10.9z"/>
- <path fill="url(#X)" fill-rule="nonzero" d="M130.8 189.1h-10.9 10.9zM130.8 189.1h-10.9 10.9z"/>
- <path fill="url(#Y)" fill-rule="nonzero" d="M129.7 190.5h.6c.4-.5.7-.9 1.1-1.4h-.7c-.3.5-.6.9-1 1.4z"/>
- <path fill="url(#Y)" fill-rule="nonzero" d="M129.7 190.5h.6c.4-.5.7-.9 1.1-1.4h-.7c-.3.5-.6.9-1 1.4z"/>
- <path fill="url(#Y)" fill-rule="nonzero" d="M129.7 190.5h.6c.4-.5.7-.9 1.1-1.4h-.7c-.3.5-.6.9-1 1.4z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M131.5 189.1h-.7.7z"/>
- <path fill="url(#Z)" fill-rule="nonzero" d="M131.5 189.1h-.7.7zM131.5 189.1h-.7.7zM131.5 189.1h-.7.7z"/>
- <path fill="url(#aa)" fill-rule="nonzero" d="M122.2 198c.6.4 1.3.8 2 1.1h5.5c-.9-.4-1.8-.7-2.6-1.1h-4.9z"/>
- <path fill="url(#ab)" fill-rule="nonzero" d="M122.2 198c.6.4 1.3.8 2 1.1h5.5c-.9-.4-1.8-.7-2.6-1.1h-4.9z"/>
- <path fill="url(#ac)" fill-rule="nonzero" d="M119.8 189.1h-2.5c-.2.5-.3 1-.4 1.6h2.3c.1-.6.3-1.1.6-1.6z"/>
- <path fill="url(#ad)" fill-rule="nonzero" d="M119.8 189.1h-2.5c-.2.5-.3 1-.4 1.6h2.3c.1-.6.3-1.1.6-1.6z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M117.2 198H142.9l4.4-.2.1-.8c-.1.2-.3.4-.5.5l-.2.2h-40.2v.3h10.7z"/>
- <path fill="url(#ae)" fill-rule="nonzero" d="M117.2 198H142.9l4.4-.2.1-.8c-.1.2-.3.4-.5.5l-.2.2h-40.2v.3h10.7z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M130.3 190.5h-.6l-10.5.2h-1.6 29.5l-.5-.5"/>
- <path fill="url(#af)" fill-rule="nonzero" d="M130.3 190.5h-.6l-10.5.2h-1.6 29.5l-.5-.5"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M147.4 191l.1.1c.3.5.6 1 .7 1.6l.1-.9-.9-.8z"/>
- <path fill="url(#ag)" fill-rule="nonzero" d="M147.4 191l.1.1c.3.5.6 1 .7 1.6l.1-.9-.9-.8z"/>
- <path fill="url(#ah)" fill-rule="nonzero" d="M104.1 200.5c.2 0 .3.1.5.1h40.1l.5-.4c.2.2.6.4 1 .5h.2c1.2 0 2.9-.2 3.8-.8 1.3-1 2-4.2 2-5.7 0-2-.6-3.8-1.4-5-.2-.3-.5-.6-.8-.8-.5-.3-1.5-.6-3.1-.7h-.7c-.3 0-.5.1-.6.3l-.3-.2h-.8c-.3.4-.8.6-1.4.6h-40.2c-.2.3-.4.6-.5.9v1.3c0 1 .8 1.7 1.9 1.7h1v4.1h-1c-.6 0-1.1.2-1.5.7-.4.4-.5 1-.3 1.5l.2.9c.1.3.2.5.4.7.2 0 .5.2 1 .3-.1 0-.1 0 0 0zm0-2.7c.1-.1.1-.1.2-.1H146.7l.2-.2.5-.5c.8-1.1 1.1-2.8.7-4.3-.1-.6-.4-1.1-.7-1.6l-.1-.1-.2-.2h-42.8c-.2 0-.3-.1-.3-.3v-1.1c0-.1.1-.2.2-.2h40.6l1 .7h.3c.5-.1.7-.4.7-.7h.2c1.2.1 1.9.3 2 .4.8.6 1.6 2.4 1.6 4.6 0 1.6-.8 4.1-1.4 4.6-.4.3-1.5.5-2.8.5-.1-.1-.3-.2-.3-.3-.2-.2-.4-.4-.7-.5l-.4-.1-.9.8h-39.5c-.1 0-.2-.1-.3-.2l-.3-1s0-.1.1-.2zm42.5-3.2c.1.1.1.2.1.3 0 .2-.1.3-.3.3-.1.4-.3.7-.5 1h-38.4v-4.1h38.6l.3.9c.1.1.2.2.2.3 0 .1 0 .2-.1.3.2.4.2.7.1 1z"/>
- <path fill="url(#ai)" fill-rule="nonzero" d="M146.6 193.1c-.1 0-.1-.1-.2-.1h-37.5c-.2 0-.4.2-.4.4s.2.4.4.4h37.5c.1 0 .2 0 .3-.1.1-.1.1-.2.1-.3 0-.1-.1-.2-.2-.3z"/>
- <path fill="url(#aj)" fill-rule="nonzero" d="M108.9 194.6c-.2 0-.4.2-.4.4s.2.4.4.4h37.6c.2 0 .3-.2.3-.3 0-.1-.1-.2-.1-.3-.1-.1-.2-.1-.3-.1h-37.5v-.1z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M101.1 183.6h38.6v-4.1h-38.4c-.6 1-.8 2.8-.2 4.1z"/>
- <path fill="url(#ak)" fill-rule="nonzero" d="M98.4 186.4c.1.1.9.3 2.2.4.1-.3.3-.7.8-.7h.3l1 .8h11.9c.2-.5.5-1 .8-1.4l-14.6.2-.5-.5h-.1l-.2-.2-.9-.8.1-.9c-.3-1.2-.2-2.5.2-3.5H97c-.2.7-.3 1.4-.3 2 .1 2.2.9 4 1.7 4.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M120.7 176.7h-17.3l-.9.8h17.9c0-.3.1-.5.3-.8z"/>
- <path fill="url(#al)" fill-rule="nonzero" d="M120.7 176.7h-17.3l-.9.8h17.9c0-.3.1-.5.3-.8z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M102 177.4c-.3-.1-.5-.3-.7-.5-.1-.1-.2-.3-.3-.3-1.3 0-2.4.2-2.8.5l-.3.3h4.5-.4z"/>
- <path fill="url(#am)" fill-rule="nonzero" d="M102 177.4c-.3-.1-.5-.3-.7-.5-.1-.1-.2-.3-.3-.3-1.3 0-2.4.2-2.8.5l-.3.3h4.5-.4z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M133 177.5c.2-.3.5-.5.8-.8l-.8.8z"/>
- <path fill="url(#an)" fill-rule="nonzero" d="M133 177.5c.2-.3.5-.5.8-.8l-.8.8z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M100 178.9l.1-.8 4.4-.2h15.6c0-.1.1-.2.2-.4H97.9c-.3.5-.7 1.3-.9 2.2h2.5c.2-.3.3-.6.5-.8z"/>
- <path fill="url(#ao)" fill-rule="nonzero" d="M100 178.9l.1-.8 4.4-.2h15.6c0-.1.1-.2.2-.4H97.9c-.3.5-.7 1.3-.9 2.2h2.5c.2-.3.3-.6.5-.8z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M133 177.5c-.2.1-.3.2-.4.4l.4-.4z"/>
- <path fill="url(#ap)" fill-rule="nonzero" d="M133 177.5c-.2.1-.3.2-.4.4l.4-.4z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M120.2 185.3l-4.7.1c-.3.4-.6.9-.8 1.4h4.1c.3-.6.8-1.1 1.4-1.5z"/>
- <path fill="url(#aq)" fill-rule="nonzero" d="M120.2 185.3l-4.7.1c-.3.4-.6.9-.8 1.4h4.1c.3-.6.8-1.1 1.4-1.5z"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M120.1 177.9h4c.7-.7 1.6-1.1 2.6-1.1h.3l3.3.3c.1-.1.2-.2.3-.4h-10c-.1.3-.3.5-.4.8 0 .1 0 .2-.1.4z"/>
- <path fill="url(#ar)" fill-rule="nonzero" d="M120.1 177.9h4c.7-.7 1.6-1.1 2.6-1.1h.3l3.3.3c.1-.1.2-.2.3-.4h-10c-.1.3-.3.5-.4.8 0 .1 0 .2-.1.4z"/>
- <path fill="url(#as)" fill-rule="nonzero" d="M143.1 186.7c.2 0 .3-.1.3-.3v-1.1c0-.1-.1-.3-.3-.3h-7.9l-1.6 1.6h9.5v.1z"/>
- <path fill="url(#at)" fill-rule="nonzero" d="M143.1 186.7c.2 0 .3-.1.3-.3v-1.1c0-.1-.1-.3-.3-.3h-7.9l-1.6 1.6h9.5v.1z"/>
- <path fill="url(#au)" fill-rule="nonzero" d="M122 186.7h10.7c.3-.3.6-.6.8-.9l.7-.7h-4.4l-5.8.1c-.7.6-1.4 1.1-2 1.5z"/>
- <path fill="url(#av)" fill-rule="nonzero" d="M122 186.7h10.7c.3-.3.6-.6.8-.9l.7-.7h-4.4l-5.8.1c-.7.6-1.4 1.1-2 1.5z"/>
- <path fill="url(#aw)" fill-rule="nonzero" d="M140.9 177.9v.3h1c.4-.3.9-.7 1.3-1l-.1-.2c0-.1-.1-.2-.3-.2h-3.6c-.2.4-.5.8-.9 1.1h2.6z"/>
- <path fill="url(#ax)" fill-rule="nonzero" d="M140.9 177.9v.3h1c.4-.3.9-.7 1.3-1l-.1-.2c0-.1-.1-.2-.3-.2h-3.6c-.2.4-.5.8-.9 1.1h2.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M133.9 177.5c.9 0 1.7-.3 2.4-.8h-2.5c-.2.3-.5.5-.8.8h.9z"/>
- <path fill="url(#ay)" fill-rule="nonzero" d="M133.9 177.5c.9 0 1.7-.3 2.4-.8h-2.5c-.2.3-.5.5-.8.8h.9z"/>
- <path fill="url(#az)" fill-rule="nonzero" d="M133.9 177.5c.9 0 1.7-.3 2.4-.8h-2.5c-.2.3-.5.5-.8.8h.9z"/>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M133 177.5l-.4.4h5.7c.3-.3.6-.7.9-1.1h-3c-.7.5-1.5.8-2.4.8h-.8v-.1z"/>
- <path fill="url(#aA)" fill-rule="nonzero" d="M133 177.5l-.4.4h5.7c.3-.3.6-.7.9-1.1h-3c-.7.5-1.5.8-2.4.8h-.8v-.1z"/>
- <path fill="url(#aB)" fill-rule="nonzero" d="M133 177.5l-.4.4h5.7c.3-.3.6-.7.9-1.1h-3c-.7.5-1.5.8-2.4.8h-.8v-.1z"/>
- <path fill="url(#aC)" fill-rule="nonzero" d="M132.7 186.7h.9c.5-.6 1.1-1.1 1.6-1.6h-.9l-.7.7-.9.9z"/>
- <path fill="url(#aC)" fill-rule="nonzero" d="M132.7 186.7h.9c.5-.6 1.1-1.1 1.6-1.6h-.9l-.7.7-.9.9z"/>
- <path fill="url(#aD)" fill-rule="nonzero" d="M132.7 186.7h.9c.5-.6 1.1-1.1 1.6-1.6h-.9l-.7.7-.9.9z"/>
- <path fill="url(#aE)" fill-rule="nonzero" d="M143.1 178.1c.1 0 .2 0 .2-.1.1-.1.1-.1.1-.2l-.2-.7c-.4.3-.9.7-1.3 1h1.2z"/>
- <path fill="url(#aE)" fill-rule="nonzero" d="M143.1 178.1c.1 0 .2 0 .2-.1.1-.1.1-.1.1-.2l-.2-.7c-.4.3-.9.7-1.3 1h1.2z"/>
- <path fill="url(#aF)" fill-rule="nonzero" d="M143.1 178.1c.1 0 .2 0 .2-.1.1-.1.1-.1.1-.2l-.2-.7c-.4.3-.9.7-1.3 1h1.2z"/>
- <path fill="url(#aG)" fill-rule="nonzero" d="M127 176.8h-.3c-1 0-1.9.4-2.6 1.1h8.5l.4-.4c.2-.3.5-.5.8-.8h-3c-.1.1-.2.2-.3.4l-3.5-.3z"/>
- <path fill="url(#aH)" fill-rule="nonzero" d="M127 176.8h-.3c-1 0-1.9.4-2.6 1.1h8.5l.4-.4c.2-.3.5-.5.8-.8h-3c-.1.1-.2.2-.3.4l-3.5-.3z"/>
- <path fill="url(#aI)" fill-rule="nonzero" d="M120.2 185.3c-.6.5-1.1 1-1.5 1.5h3.4c.6-.5 1.3-1 2-1.5h-3.9z"/>
- <path fill="url(#aJ)" fill-rule="nonzero" d="M120.2 185.3c-.6.5-1.1 1-1.5 1.5h3.4c.6-.5 1.3-1 2-1.5h-3.9z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M115.4 185.3h4.8l3.9-.1 5.8-.1h-29.6l.6.5"/>
- <path fill="url(#aK)" fill-rule="nonzero" d="M115.4 185.3h4.8l3.9-.1 5.8-.1h-29.6l.6.5"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M100.1 184.9l-.1-.1c-.3-.5-.6-1-.7-1.6l-.1.9.9.8z"/>
- <path fill="url(#aL)" fill-rule="nonzero" d="M100.1 184.9l-.1-.1c-.3-.5-.6-1-.7-1.6l-.1.9.9.8z"/>
- <path fill="#FAFAFA" fill-rule="nonzero" d="M138.4 177.9h-33.8l-4.4.2-.1.8c.1-.2.3-.4.5-.5l.2-.2H141v-.3h-2.6z"/>
- <path fill="url(#aM)" fill-rule="nonzero" d="M138.4 177.9h-33.8l-4.4.2-.1.8c.1-.2.3-.4.5-.5l.2-.2H141v-.3h-2.6z"/>
- <path fill="url(#aN)" fill-rule="nonzero" d="M97.4 187.5c.5.3 1.5.6 3.1.7h.7c.3 0 .5-.1.6-.3l.3.2h41c.6 0 1.1-.2 1.4-.6.2-.2.4-.5.4-.7 0-.1.1-.3.1-.4v-1.1c0-1-.8-1.7-1.9-1.7h-1v-4h1c.6 0 1.1-.2 1.5-.7.4-.4.5-1 .3-1.5l-.1-.2-.2-.7c0-.1-.1-.3-.2-.4-.3-.6-.9-.9-1.7-.9h-40l-.5.4c-.3-.2-.7-.5-1.2-.5-1.2 0-2.9.2-3.8.8-.4.3-.8.8-1.1 1.5-.3.7-.6 1.5-.7 2.2-.2.8-.3 1.5-.3 2 0 2.1.6 4 1.6 5.2.2.3.4.5.7.7zm-.4-7.8c.2-.9.5-1.8.9-2.2l.3-.3c.4-.3 1.5-.5 2.8-.5.1.1.3.2.3.3.2.2.4.4.7.5l.4.1.9-.8h39.4c.1 0 .2.1.3.2l.1.2.2.7c0 .1 0 .2-.1.2-.1.1-.1.1-.2.1H100.6l-.2.2-.5.5c-.2.3-.3.5-.5.8-.4 1-.5 2.3-.2 3.5.1.6.4 1.1.7 1.6l.1.1.2.2H143c.2 0 .3.1.3.3v1.1c0 .1-.1.3-.3.3h-40.4l-1-.8h-.3c-.5.1-.7.4-.8.7-1.3-.1-2.1-.3-2.2-.4-.8-.6-1.6-2.4-1.6-4.6.1-.6.2-1.3.3-2zm42.8-.1v4.1h-38.6c-.7-1.3-.5-3.2.3-4.1h38.3z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M190.1 151.1c-8.6-5.4-23.3-5.4-23.5-5.4-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6.1 0 7.6-.1 15.1 1.8 5.8 1.5 10 3.7 12.6 6.7h.2c-9.2-10.9-26.7-9.7-26.9-9.6-.3 0-.6-.2-.6-.5s.2-.6.5-.6c.2 0 15.7-1.1 25.6 7.7-2.1-2.3-5.5-5.2-10.1-7.3-6.7-2.9-14.7-1.9-17-1.5l-1.2 5.3 25.1 4.3c0 .3.1.3.2.3zM210.5 142.3c-5 2.4-8.1 5.4-10 7.7 8.8-8.7 22.6-8.9 22.7-8.9.3 0 .6.2.6.6 0 .3-.2.6-.6.6-.2 0-15.1.2-23.3 10 .2-.1.4-.2.6-.4 2.3-2.2 5.4-4 9.5-5.5 6.9-2.5 14.1-3.1 14.2-3.1.3 0 .6.2.6.5s-.2.6-.5.6c-.2 0-12 1-19.8 5.9l22.3-4.7c-.7-2.4-1.4-5-1.7-6.2-2.1 0-9.4.4-14.6 2.9z"/>
- <path fill="url(#aO)" fill-rule="nonzero" d="M230.9 147v-.5c-.1-.3-.2-.6-.4-.8-.3-.4-.8-.5-1.3-.5h-.2c-.7-2.6-1.7-6.5-1.9-7.1-.1-.3-.4-.6-.7-.7-1.2-.5-10.5-.2-16.7 2.9-7.5 3.7-11.2 8.5-12.7 11-1.8-2.6-6-7.4-13.1-10.5-8.6-3.7-18.7-1.6-19.1-1.5-.4.1-.8.4-.8.8l-1.4 6.1h-.3c-.5 0-.9.2-1.3.5-.3.3-.5.8-.5 1.3l.3 4.3h.5l.4.1.5 4.9c1.6-.1 6-.5 6.5-.5.8 0 1.3.5 1.4 1.4.2 1.9-1.9 5-7.1 6.2-.3.1-.9.6-1.1.8-.1.1.2.6-.1.8l.2 2.7.1.8.1 1.2 1.2 15.4c.1.9.8 1.5 1.6 1.5l24.9 3.6c.9.9 2.9 2.3 6.2 2.3h.8c3.6-.2 5.6-1.6 6.5-2.5l22.1-3.1c.9 0 1.6-.7 1.7-1.5l1.1-11.7.1-1.1.4-4.5c-.3-.1-.7-.2-1-.3-.8-.3 1.5-.1.4-.3-3.5-.8-5.4-2.9-6.2-4.7l-10.6 1.6h-.2c-.3 0-.5-.1-.7-.3-.2-.2-.4-.5-.4-.9l.1-5.5c0-.5.4-1 .9-1.1l11.5-1.8c.3 0 .7 0 .9.3.2.2.4.5.4.9l.1 3c1.5.1 4.3.3 5.5.5l.5-4.9h.1v-.1l.3-3.3.2-2.1v-.1l.3-3zm-66.3-.2l1.2-5.3c2.4-.4 10.3-1.4 17 1.5 4.7 2 8 4.9 10.1 7.3-9.9-8.9-25.4-7.8-25.6-7.7-.3 0-.5.3-.5.6s.3.5.6.5c.2 0 17.7-1.3 26.9 9.6h-.2c-2.6-2.9-6.8-5.2-12.6-6.7-7.5-1.9-15-1.8-15.1-1.8-.3 0-.6.3-.6.
6s.3.5.6.6c.2 0 14.9-.1 23.5 5.4-.1 0-.2-.1-.3-.1l-25-4.5zm38.5 40.8s-1.4 3.6-6.7 3.1c-5.3-.5-6.4-2.8-6.4-2.8l-.3-33.2s3.3 2 7.5 1.7c4.2-.3 6.7-2.5 6.7-2.5l-.8 33.7zm1.3-37.2c7.9-4.9 19.6-5.9 19.8-5.9.3 0 .5-.3.5-.6s-.3-.5-.6-.5c-.1 0-7.2.6-14.2 3.1-4.1 1.5-7.2 3.3-9.5 5.5-.2.1-.4.2-.6.4 8.2-9.8 23.1-10 23.3-10 .3 0 .6-.3.6-.6s-.3-.6-.6-.6c-.2 0-14 .2-22.7 8.9 1.9-2.3 5.1-5.3 10-7.7 5.2-2.5 12.4-2.9 14.5-2.8.3 1.2 1 3.8 1.7 6.2l-22.2 4.6z"/>
- <path fill="url(#aP)" fill-rule="nonzero" d="M223.7 156.1c-.2-.2-.6-.3-.9-.3l-11.5 1.8c-.5.1-.9.5-.9 1.1l-.1 5.5c0 .3.1.6.4.9.2.2.5.3.7.3h.2l10.6-1.6c-.4-.9-.5-1.8-.4-2.4.1-.8.6-1.4 1.4-1.4.1 0 .5 0 .9.1l.1-3.1c-.2-.4-.3-.7-.5-.9z"/>
- <path fill="url(#aQ)" fill-rule="nonzero" d="M223.7 156.1c-.2-.2-.6-.3-.9-.3l-11.5 1.8c-.5.1-.9.5-.9 1.1l-.1 5.5c0 .3.1.6.4.9.2.2.5.3.7.3h.2l10.6-1.6c-.4-.9-.5-1.8-.4-2.4.1-.8.6-1.4 1.4-1.4.1 0 .5 0 .9.1l.1-3.1c-.2-.4-.3-.7-.5-.9z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M162.8 163.3c4.7-1 6.4-3.7 6.3-5 0-.4-.2-.4-.3-.4-.4 0-4.4.3-6.9.6h-.5l-.6-5.1c-.9 0-3.2.4-5.5 2.6-1.4 1.3-1.7 3.1-.9 4.6.9 2 3.7 3.8 8.4 2.7z"/>
- <path fill="url(#aR)" fill-rule="nonzero" d="M161.7 166.1c.1 0 .2 0 .2-.1.3-.2 0-.7.1-.8.2-.2.8-.7 1.1-.8 5.2-1.1 7.3-4.3 7.1-6.2-.1-.8-.6-1.4-1.4-1.4-.5 0-4.9.4-6.5.5l-.5-4.9-.4-.1h-.5c-.8 0-2.3.2-4 1.2-.7.4-1.5 1-2.3 1.7-.8.7-1.3 1.6-1.5 2.5-.2.8-.2 1.6 0 2.4.1.3-.8-.1-1 .1v.1c-.1.9.5 2.4 2 3.7 1.4 1.5 3.9 2.5 7.6 2.1zm-6.5-9.9c2.3-2.3 4.6-2.6 5.5-2.6l.6 5.1h.5c2.6-.2 6.5-.6 6.9-.6.1 0 .2 0 .3.4.1 1.2-1.6 3.9-6.3 5-4.7 1-7.5-.7-8.5-2.5-.7-1.7-.3-3.4 1-4.8z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M231.1 156.6l-.6 5.1h-.5c-2.6-.2-6.5-.6-6.9-.6-.1 0-.2 0-.3.4-.1 1.2 1.6 3.9 6.3 5 4.7 1 7.5-.7 8.5-2.5.8-1.5.5-3.3-.9-4.6-2.5-2.4-4.7-2.7-5.6-2.8z"/>
- <path fill="url(#aS)" fill-rule="nonzero" d="M236.7 157.9c-3.2-2.7-6.1-2.4-6.2-2.4h-.5l-.5 4.9c-1.2-.1-4-.3-5.5-.5-.5 0-.8-.1-.9-.1-.8 0-1.3.5-1.4 1.4-.1.6.1 1.5.4 2.4.8 1.9 2.7 4 6.2 4.7 1 .2-1.2 0-.4.3.4.1.7.2 1 .3.3.1.6.2 1 .2 2.8.5 5.1-.1 6.4-1.1.4-.3.8-.6 1-1 .4-.5.7-1.6.9-2.2.1-.2.2-.4.2-.5.8-1.6.7-3.3-.2-4.8-.2-.4-.5-.7-.9-1.1-.2-.1-.4-.3-.6-.5zm.8 6c-1 1.8-3.8 3.5-8.5 2.5s-6.4-3.7-6.3-5c0-.4.2-.4.3-.4.4 0 4.4.3 6.9.6h.5l.6-5.1c.9 0 3.2.4 5.5 2.6 1.5 1.5 1.8 3.2 1 4.8z"/>
- <path fill="url(#aT)" fill-rule="nonzero" d="M189.7 154.7l.3 33.2s1.1 2.2 6.4 2.8c5.3.6 6.7-3.1 6.7-3.1l.8-33.7s-2.5 2.2-6.7 2.5c-4.2.3-7.5-1.7-7.5-1.7z"/>
- <path fill="url(#aU)" fill-rule="nonzero" d="M189.7 154.7l.3 33.2s1.1 2.2 6.4 2.8c5.3.6 6.7-3.1 6.7-3.1l.8-33.7s-2.5 2.2-6.7 2.5c-4.2.3-7.5-1.7-7.5-1.7z"/>
- <path d="M-31-22h352v303H-31z"/>
- </g>
-</svg>
diff --git a/browser/extensions/onboarding/content/img/figure_performance.svg b/browser/extensions/onboarding/content/img/figure_performance.svg
deleted file mode 100644
index f7c5c219aada..000000000000
--- a/browser/extensions/onboarding/content/img/figure_performance.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="297" height="245" viewBox="0 0 297 245" xmlns="http://www.w3.org/2000/svg"><title>performance</title><defs><linearGradient x1="-920.838%" y1="-294.992%" x2="891.374%" y2="366.984%" id="a"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-162.81%" y1="-242.422%" x2="179.364%" y2="239.183%" id="b"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-347.431%" y1="-836.5%" x2="1777.43%" y2="3692.808%" id="c"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-494.697%" y1="-397.029%" x2="2194.58%" y2="1809.556%" id="d"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-358.927%" y1="-240.795%" x2="1727.185%" y2="1250.312%" id="e"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="1
00%"/></linearGradient><linearGradient x1="-626.22%" y1="-1767.938%" x2="1375.102%" y2="3610.616%" id="f"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-2092.13%" y1="-2092.3%" x2="2102.26%" y2="2102.09%" id="g"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-10687.27%" y1="-10695.62%" x2="6524.09%" y2="6515.75%" id="h"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-235.943%" y1="-613.083%" x2="463.706%" y2="1010.631%" id="i"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-10998.63%" y1="-10974.25%" x2="6212.73%" y2="6237.11%" id="j"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-73.995%" y1="-65.306%" x2="120.692%" y2="159.00
8%" id="k"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-21.918%" y1="-53.508%" x2="187.863%" y2="264.044%" id="l"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-489.211%" y1="-179.924%" x2="521.605%" y2="253.611%" id="m"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-7695.347%" y1="-543.989%" x2="5437.677%" y2="468.444%" id="n"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-871.152%" y1="-248.513%" x2="1179.248%" y2="414.667%" id="o"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-737.21%" y1="-1393.274%" x2="549.019%" y2="955.49%" id="p"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></li
nearGradient><linearGradient x1="-638.104%" y1="-1298.114%" x2="447.684%" y2="806.622%" id="q"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-1950.055%" y1="-1089.986%" x2="3277.839%" y2="1905.929%" id="r"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-575.859%" y1="-1406.193%" x2="985.226%" y2="2277.098%" id="s"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-1033.963%" y1="-1091.623%" x2="2289.262%" y2="2403.036%" id="t"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-2408.138%" y1="-454.703%" x2="4538.159%" y2="962.257%" id="u"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-998.9%" y1="-1143.058%" x2="1755.168%" y2="1997.85
%" id="v"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-4669.755%" y1="-4076.6%" x2="8549.086%" y2="7499.45%" id="w"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-195.59%" y1="-922.704%" x2="389.831%" y2="1341.95%" id="x"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-343.613%" y1="-263.57%" x2="487.353%" y2="406.119%" id="y"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-27.659%" y1="2.333%" x2="125.482%" y2="104.574%" id="z"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-651.262%" y1="-472.878%" x2="435.248%" y2="317.591%" id="A"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGr
adient><linearGradient x1="-548.021%" y1="-473.693%" x2="248.049%" y2="204.898%" id="B"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-24-20h352v303H-24z"/><g fill-rule="nonzero"><path d="M13.6 181.6c-2.8 0-5.1-2.2-5.1-4.8V58.3c0-3 2.4-5.4 5.4-5.4h127.2c3 0 5.4 2.4 5.4 5.4v118.5c0 2.6-2.3 4.8-5 4.8H13.6z" fill="#FFF"/><path d="M141.1 54c2.3 0 4.2 1.9 4.2 4.2v118.5c0 2-1.8 3.7-3.9 3.7H13.6c-2.2 0-3.9-1.7-3.9-3.7V58.3c0-2.3 1.9-4.2 4.2-4.2h127.2V54zm0-2.2H13.9c-3.6 0-6.5 2.9-6.5 6.5v118.4c0 3.3 2.8 5.9 6.2 5.9h127.8c3.4 0 6.2-2.7 6.2-5.9V58.3c-.1-3.6-3-6.5-6.5-6.5z" fill="#D7D7DB"/></g><path d="M139.9 75.2v98.2c0 1-.1 1.2-.1 1.2s-.2.1-1.2.1H16.4c-1 0-1.2-.1-1.2-.1s-.1-.2-.1-1.2V75.2h124.8zM141 74H13.9v99.3c0 2 .4 2.5 2.5 2.5h122.2c2 0 2.5-.4 2.5-2.5V74h-.1z" fill-rule="nonzero" fill="#D7D7DB"/><g fill-rule="nonzero" fill="#D7D7DB"><circle cx="3.7" cy="3" r="2.9" transform="translat
e(17 61)"/><circle cx="3" cy="3" r="2.9" transform="translate(27 61)"/><path d="M109.4 67.2H45.5c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1h63.9c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.3 3.1-3.1 3.1z"/><g><circle cx="3" cy="3" r="2.9" transform="translate(122 61)"/><circle cx="3.2" cy="3" r="2.9" transform="translate(131 61)"/></g></g><g fill-rule="nonzero"><path d="M39.9 22.9h23.8S56.3 6.3 72.1 4.1c14.1-1.9 19.7 12.6 19.7 12.6s1.7-8.4 10.1-6.8c8.3 1.6 14.4 14.9 14.4 14.9H137" fill="#F9F9FA"/><path d="M137.2 20.9h-4.5c-.3 0-.6-.3-.6-.6s.3-.6.6-.6h4.5c.3 0 .6.3.6.6s-.2.6-.6.6zm-14.5 0h-1.1c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .3-.3.6-.6.6zm-5.5 0h-.6c-.2 0-.4-.1-.5-.3-.1-.2-.6-1.1-1.3-2.3-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.6.9 1 1.7 1.2 2.1h.3c.3 0 .6.2.6.6 0 .4-.4.5-.7.5zm-53.1-.7h-1.5c-.3 0-.6-.3-.6-.6s.3-.6.6-.6h.6c-.1-.3-.2-.6-.4-1-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.7.6 1.7.1.2.1.4 0 .5 0 .2-.2.3-.4.3zm-10.4 0H40.3c-.3 0-.6-.3-.6-.6s.3-.6.6-.6h13.4c.3 0 .6.3.6.6s-.3
.6-.6.6zm8.8-6.1c-.3 0-.5-.2-.6-.5 0-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.3-.1.6-.5.6zm29.1-1.2c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.1-.3 0-.6.2-.8.3-.1.6 0 .8.2.2.4.4.7.5 1 .1.3 0 .6-.3.7 0 .2-.1.2-.2.2zm18-1.4c-.1 0-.3-.1-.4-.2-2.4-2.3-4.8-3.7-7.2-4.1-1.6-.3-3.1-.2-4.3.2-.3.1-.6-.1-.7-.4-.1-.3.1-.6.4-.7 1.4-.5 3.1-.6 4.9-.2 2.6.5 5.2 2 7.7 4.4.2.2.2.6 0 .8-.1.2-.2.2-.4.2zM88.7 8.2c-.2 0-.3-.1-.4-.2-.7-.9-1.4-1.7-2.2-2.4-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0 .8.8 1.6 1.6 2.3 2.5.2.2.2.6-.1.8-.2.1-.3.1-.4.1zM65.8 4c-.2 0-.3-.1-.4-.2-.2-.2-.2-.6.1-.8C67.2 1.6 69.6.7 72.4.3c2.2-.3 4.3-.2 6.3.2.3.1.5.4.4.7-.1.3-.4.5-.7.4-1.9-.4-3.9-.5-5.9-.2-2.7.4-4.8 1.2-6.4 2.4-.1.1-.2.2-.3.2z" fill="#D7D7DB"/><path d="M137.9 25.1h-98c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h98c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z" fill="#F9F9FA"/></g><path d="M261.4 80.6c.2-.3.6-1 .2-1.3-.3-.2-.6-.3-1-.3-.8 0-1.6.3-2.3.8-1.4 1-2.6 2.7-2.3 3.5 2.5-.5 4.6-1.5 5.4-2.7z"/><path d="M59.3 94.4c4.3.1 8.5-1 12
.1-3.3 3.3-2.1 7.2-3.1 11.1-3 3.9-.1 7.8 1 11.1 3 7.5 4.4 16.8 4.4 24.3 0 6.8-4 15.3-4 22.2 0 7.5 4.4 16.8 4.4 24.3 0 6.8-4 15.3-4 22.2 0 3.6 2.2 7.9 3.4 12.1 3.3.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1-3.9.1-7.8-.9-11.1-3-7.5-4.4-16.8-4.4-24.3 0-6.8 4-15.3 4-22.2 0-7.5-4.4-16.8-4.4-24.3 0-6.8 4-15.3 4-22.2 0-3.6-2.2-7.9-3.4-12.1-3.3-4.3-.1-8.5 1-12.1 3.3-3.3 2.1-7.2 3.1-11.1 3-3.9.1-7.8-.9-11.1-3-3.6-2.2-7.9-3.4-12.1-3.3-.6 0-1.1.5-1.1 1.1 0 .6.5 1.1 1.1 1.1 3.9-.1 7.8.9 11.1 3 3.6 2.3 7.8 3.4 12.1 3.3zM269.2 82.1c-.2-.2-.5-.3-.8-.1-3.1 2-6.6 3.2-10.3 3.5-1.4.2-2.8.2-4.2 0 2.2-.7 4.2-1.7 5.1-2.9 1.1-1.5.4-2.4.1-2.7-1-.9-3.1-.7-4.7.4-1.2.9-3.2 3-2.8 4.7-1.8.4-3.6.7-5.4.8-.3 0-.6.2-.6.6 0 .4.2.6.6.6 2-.1 4-.4 6-.9 1 .8 2.9 1 6 .7 7-.8 10.7-3.6 10.8-3.8.3-.3.4-.6.2-.9zm-14.1-.9c.7-.5 1.5-.8 2.3-.8.4 0 .7.1 1 .3.3.3 0 1-.2 1.3-.8 1.2-3 2.1-5.4 2.8-.3-1 .9-2.6 2.3-3.6z" fill="#D7D7DB" fill-rule="nonzero"/><path d="M154.6 87.1c-.3 0-.6-.3-.7-.6 0-.4.2-.7.6-.7 1.4-.1 2.8-.4 4-.9.3-.1.7.1.9
.4.1.3-.1.7-.4.9-1.4.4-2.8.7-4.4.9zM202.6 86.9c-.3 0-.6-.2-.7-.6-.1-.4.2-.7.5-.8 3.4-.6 5.5-1.9 7.5-3.3.3-.2.7-.1.9.2.2.3.1.7-.2.9-2.1 1.3-4.4 2.8-8 3.4.1.2 0 .2 0 .2zM148.2 86.8h-.1c-3.5-.6-5.7-2.1-7.9-3.5l-.1-.1c-.3-.2-.4-.6-.2-.9.2-.3.6-.4.9-.2l.1.1c2.2 1.4 4.2 2.7 7.4 3.3.4.1.6.4.5.8 0 .3-.3.5-.6.5zM241.1 86.7h-.1c-3.2-.7-5.4-2.1-7.5-3.4l-.5-.3c-.3-.2-.4-.6-.2-.9.2-.3.6-.4.9-.2l.4.3c2.1 1.3 4 2.6 7 3.2.4.1.6.4.5.8.1.3-.2.5-.5.5zM194.1 86.7h-.2c-.4-.1-.7-.2-1.1-.3-.4-.1-.6-.5-.4-.8.1-.4.5-.6.8-.4.3.1.6.2 1 .3.4.1.6.4.5.8 0 .2-.3.4-.6.4zM189.2 84.7c-.1 0-.2 0-.3-.1-.7-.4-1.4-.8-2-1.3-.5-.3-1.1-.7-1.6-1-.3-.2-.4-.6-.2-.9.2-.3.6-.4.9-.2.6.3 1.1.7 1.6 1 .6.4 1.3.8 2 1.2.3.2.4.6.2.9-.1.3-.4.4-.6.4zM162.6 84.3c-.2 0-.4-.1-.6-.3-.2-.3-.1-.7.2-.9l.9-.6c.3-.2.7-.1.9.2.2.3.1.7-.2.9l-.9.6c-.1 0-.2.1-.3.1zM216.1 80.6c-.3 0-.5-.2-.6-.5-.1-.4.1-.7.4-.8 1.4-.4 2.8-.7 4.3-.8.4 0 .7.2.7.6 0 .4-.2.7-.6.7-1.5.1-2.8.4-4 .8h-.2zM123.2 80.5c-.3 0-.6-.2-.6-.5-.1-.4.1-.7.5-.8 1.4-.4 2.8-.6 4.4-.7.4 0 .7
.3.7.6 0 .4-.3.7-.6.7-1.5.1-2.8.3-4.1.7h-.3zM171.2 80.1c-.3 0-.6-.2-.7-.5-.1-.4.2-.7.5-.8 1.4-.3 2.9-.4 4.5-.4 1.5 0 2.9.1 4.2.4.4.1.6.4.5.8-.1.4-.4.6-.8.5-1.2-.2-2.5-.4-4-.4-1.6 0-2.9.1-4.2.4.1 0 0 0 0 0zM132.7 80h-.1c-.3-.1-.7-.1-1-.1-.4 0-.6-.4-.6-.7 0-.4.4-.6.7-.6.4 0 .7.1 1.1.2.4.1.6.4.5.8 0 .2-.3.4-.6.4zM225.6 79.9h-.1c-.3-.1-.7-.1-1-.1-.4 0-.6-.4-.6-.7 0-.4.4-.6.7-.6.4 0 .7.1 1.1.1.4.1.6.4.6.8-.1.3-.4.5-.7.5z" fill="#D7D7DB" fill-rule="nonzero"/><g fill-rule="nonzero" fill="#D7D7DB"><path d="M12 200.6c4.3.1 8.5-1 12.1-3.3 6.8-4 15.3-4 22.2 0 7.5 4.4 16.8 4.4 24.3 0 3.3-2.1 7.2-3.1 11.1-3 .6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1-4.3-.1-8.5 1-12.1 3.3-6.8 4-15.3 4-22.2 0-7.5-4.4-16.8-4.4-24.3 0-3.3 2.1-7.2 3.1-11.1 3-3.6.1-7.2-.8-10.3-2.6-.3.7-.7 1.3-1.2 1.9 3.5 2 7.5 3 11.5 2.9zM61.3 208.7c-.3 0-.6-.2-.7-.6-.1-.4.2-.7.5-.8 3.4-.6 5.5-1.9 7.5-3.3.3-.2.7-.1.9.2.2.3.1.7-.2.9-2.1 1.3-4.4 2.8-8 3.4v.2zM52.8 208.5h-.2c-.4-.1-.7-.2-1.1-.3-.4-.1-.6-.5-.4-.8.1-.4.5-.6.8-.4.3.1.6.2 1 .3.
4.1.6.4.5.8-.1.2-.3.4-.6.4zM47.8 206.5c-.1 0-.2 0-.3-.1-.7-.4-1.4-.8-2-1.3-.5-.3-1.1-.7-1.6-1-.3-.2-.4-.6-.2-.9.2-.3.6-.4.9-.2.6.3 1.1.7 1.6 1 .6.4 1.3.8 2 1.2.3.2.4.6.2.9-.1.3-.3.4-.6.4zM74.7 202.4c-.3 0-.5-.2-.6-.5-.1-.4.1-.7.4-.8 1.4-.4 2.8-.7 4.3-.8.4 0 .7.2.7.6 0 .4-.2.7-.6.7-1.5.1-2.8.4-4 .8h-.2z"/><path d="M29.8 202c-.3 0-.6-.2-.7-.5-.1-.4.2-.7.5-.8 1.4-.3 2.9-.4 4.5-.4 1.5 0 2.9.1 4.2.4.4.1.6.4.5.8-.1.4-.4.6-.8.5-1.2-.2-2.5-.4-4-.4-1.6 0-2.9.1-4.2.4.1-.1 0 0 0 0zM84.2 201.8h-.1c-.3-.1-.7-.1-1-.1-.4 0-.6-.4-.6-.7 0-.4.4-.6.7-.6.4 0 .7.1 1.1.1.4.1.6.4.6.8-.1.2-.4.5-.7.5z"/></g><path d="M112.1 196.9c-.2-.2-.5-.3-.8-.1-3.1 2-6.6 3.2-10.3 3.5-1.4.2-2.8.2-4.2 0 2.2-.7 4.2-1.7 5.1-2.9 1.1-1.5.4-2.4.1-2.7-1-.9-3.1-.7-4.7.4-1.2.9-3.2 3-2.8 4.7-1.8.4-3.6.7-5.4.8-.3 0-.6.2-.6.6 0 .3.2.6.6.6 2-.1 4-.4 6-.9 1 .8 2.9 1 6 .7 7-.8 10.7-3.6 10.8-3.8.3-.2.4-.6.2-.9zm-14.2-.9c.7-.5 1.5-.8 2.3-.8.4 0 .7.1 1 .3.3.3 0 1-.2 1.3-.8 1.2-3 2.1-5.4 2.8-.3-1 1-2.6 2.3-3.6z" fill="#D7D7DB" fill-rule="no
nzero"/><g fill-rule="nonzero" fill="#D7D7DB"><path d="M77 97.8c-14.9 0-27 12.1-27 27 0 4 .9 8 2.6 11.6.7 1.7 2.6 2.6 4.4 1.9 1.7-.7 2.6-2.6 1.9-4.4-.1-.2-.1-.3-.2-.4-1.3-2.7-2-5.7-2-8.7 0-11.2 9-20.3 20.2-20.3s20.3 9 20.3 20.2c0 3-.7 6-2 8.8-.8 1.7-.1 3.7 1.6 4.5 1.7.8 3.7.1 4.5-1.6 6.4-13.5.7-29.6-12.7-36-3.5-1.8-7.5-2.7-11.6-2.6z"/><path d="M89.8 118.3c-.8-.5-1.8-.3-2.3.5l-8.3 13.1c-3.6-1.2-7.4.8-8.5 4.3-1.2 3.6.8 7.4 4.3 8.5 2 .6 4.2.3 5.9-.8.7-.5 1.3-1.1 1.8-1.8 1.8-2.6 1.5-6.1-.7-8.4l8.3-13.1c.5-.8.3-1.8-.5-2.3z"/></g><g fill-rule="nonzero"><path d="M251.2 231.9l-13.4-1.7c-.5-.1-.9-.5-.9-1l-1.1-27.6-2.6 1.1c-.1.1-.3.1-.4.1-.2 0-.5-.1-.6-.2-.3-.2-.4-.6-.3-1l.8-3.6-3.6.6h-.2c-.3 0-.7-.2-.9-.5-.2-.3-.2-.8.1-1.1l4.2-5.6c.1-.1.2-.2.4-.3l7-3.3c.1-.1.3-.1.4-.1.2 0 .3 0 .4.1l7.8 3.9c.4.2.6.6.5 1 0 .4-.3.8-.7.9l-4.2 1.3 2 4c.2.3.1.7-.1 1-.2.3-.5.4-.8.4h-.2l-3.1-.5 10.3 30.8c.1.3 0 .7-.2 1-.2.2-.5.4-.8.4.3-.1.2-.1.2-.1z" fill="#F5F5F7"/><path d="M240.2 188.8l7.8 3.9-5.3 1.7 2.5 5-4.7-.8
10.9 32.4-13.4-1.7-1.1-29-3.9 1.7 1.1-5-5 .8 4.2-5.6 6.9-3.4zm0-2c-.3 0-.6.1-.9.2l-7 3.3c-.3.1-.5.3-.7.6l-4.2 5.6c-.5.7-.5 1.5-.1 2.2.4.6 1 1 1.7 1h.3l2.1-.3-.5 2.1c-.2.7.1 1.5.7 2 .4.3.8.5 1.3.5.3 0 .5-.1.8-.2l1.2-.5 1 26.1c0 1 .8 1.8 1.8 1.9l13.4 1.7h.2c.6 0 1.2-.3 1.5-.7.4-.5.6-1.3.3-1.9l-9.8-29.2 1.4.3h.3c.6 0 1.2-.3 1.6-.8.5-.6.5-1.4.2-2.1l-1.5-2.9 3.1-1c.8-.2 1.3-.9 1.4-1.7.1-.8-.4-1.6-1.1-1.9l-7.8-3.9c-.1-.3-.4-.4-.7-.4z" fill="#D7D7DB"/></g><g fill-rule="nonzero"><path d="M199.7 227.4c-.2 0-.5-.1-.7-.3-.2-.2-.3-.4-.3-.7l-1.1-24.8-2.6 1.1c-.1.1-.3.1-.4.1-.2 0-.5-.1-.6-.2-.3-.2-.4-.6-.3-1l.8-3.6-3.6.6h-.2c-.3 0-.7-.2-.9-.5-.2-.3-.2-.8.1-1.1l4.2-5.6c.1-.1.2-.2.4-.3l7-3.3c.1-.1.3-.1.4-.1.2 0 .3 0 .4.1l7.8 3.9c.4.2.6.6.5 1 0 .4-.3.8-.7.9l-4.2 1.3 2 4c.2.3.1.7-.1 1-.2.3-.5.4-.8.4h-.2l-3.2-.6 7.4 25.8c.1.3 0 .6-.1.9-.2.2-.5.4-.8.4.2.1-10.2.6-10.2.6z" fill="#F5F5F7"/><path d="M202 188.8l7.8 3.9-5.3 1.7 2.5 5-4.7-.8 7.8 27.3-10.3.6-1.1-26.2-3.9 1.7 1.1-5-5 .8 4.2-5.6 6.9-3.4zm0-2c-.
3 0-.6.1-.9.2l-7 3.3c-.3.1-.5.3-.7.6l-4.2 5.6c-.5.7-.5 1.5-.1 2.2.4.6 1 1 1.7 1h.3l2.1-.3-.5 2.1c-.2.7.1 1.5.7 2 .4.3.8.5 1.3.5.3 0 .5-.1.8-.2l1.2-.5 1 23.3c0 .5.3 1 .7 1.4.4.3.8.5 1.3.5h.1l10.3-.6c.6 0 1.2-.3 1.5-.8.3-.5.5-1.1.3-1.7l-6.9-24.3 1.6.3h.3c.6 0 1.2-.3 1.6-.8.5-.6.5-1.4.2-2.1l-1.5-2.9 3.1-1c.8-.2 1.3-.9 1.4-1.7.1-.8-.4-1.6-1.1-1.9l-7.8-3.9c-.2-.2-.5-.3-.8-.3z" fill="#D7D7DB"/></g><path d="M201.4 210.6l1.4 17.5" stroke="#D7D7DB" stroke-linecap="round" stroke-linejoin="round"/><path d="M203.6 221.7l2 11.7" stroke="#EAEAEE" stroke-linecap="round" stroke-linejoin="round"/><path d="M240.2 207.5l5 19" stroke="#D7D7DB" stroke-linecap="round" stroke-linejoin="round"/><path d="M236.5 220.6l1.2 10.9" stroke="#EAEAEE" stroke-linecap="round" stroke-linejoin="round"/><g transform="translate(153 210)" fill-rule="nonzero"><ellipse fill="#EDEDF0" cx="72.1" cy="27" rx="71.5" ry="7.9"/><ellipse fill="#F9F9FA" cx="72.2" cy="25.5" rx="56.8" ry="6.3"/><path d="M20.7 24.2l-.2-.2S12.4 7.7 28.1
4.9c14-2.5 20.1 11.8 20.1 11.8s1.4-8.4 9.8-7.1c8.3 1.3 14.9 14.3 14.9 14.3h.2" fill="#F9F9FA"/><path d="M79.4 19.7h-1.1c-.3 0-.6-.2-.6-.5s.2-.6.5-.6h1.1c.3 0 .6.2.6.5 0 .4-.2.6-.5.6zm-5.6.2h-.6c-.2 0-.4-.1-.5-.3-.1-.2-.6-1.1-1.4-2.3-.2-.3-.1-.6.1-.8.3-.2.6-.1.8.1.6.9 1.1 1.7 1.3 2.1h.3c.3 0 .6.2.6.5s-.3.7-.6.7zm-53 1.4l-1.5.1c-.3 0-.6-.2-.6-.5s.2-.6.5-.6h.6c-.1-.3-.3-.6-.4-1-.1-.3 0-.6.3-.7.3-.1.6 0 .7.3.4 1 .7 1.7.7 1.7.1.2.1.4 0 .5 0 .1-.2.2-.3.2zm-1.9-6.1c-.3 0-.5-.2-.6-.5-.1-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.3-.1.6-.5.6zM48 13c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.4.4.7.6 1 .1.3 0 .6-.2.8-.2 0-.3.1-.4.1zm17.9-2.1c-.1 0-.3 0-.4-.1-2.5-2.2-5-3.5-7.3-3.9-1.6-.2-3.1-.1-4.3.3-.3.1-.6 0-.7-.3-.1-.3 0-.6.3-.7 1.4-.5 3.1-.7 4.9-.4 2.6.4 5.2 1.8 7.9 4.1.2.2.3.6 0 .8-.1.1-.2.2-.4.2zM44.8 8.4c-.2 0-.3-.1-.4-.2-.7-.8-1.5-1.6-2.3-2.3-.2-.2-.3-.6-.1-.8.2-.2.6-.3.8-.1.9.7 1.7 1.5 2.4 2.4.2.2.2.6-.1.8 0 .1-.2.2-.3.2zM21.8 5c-.2 0-.3-.1-.4-.2
-.2-.2-.2-.6.1-.8 1.7-1.4 4-2.4 6.8-2.9 2.2-.4 4.3-.4 6.3 0 .3.1.5.3.4.6-.1.3-.3.5-.6.4-1.9-.3-3.9-.3-5.9 0-2.7.5-4.8 1.4-6.3 2.7-.1.2-.3.2-.4.2z" fill="#D7D7DB"/><g><path d="M119.8 27l.2-.2s8.2-16.3-7.5-19.2C98.5 5 92.3 19.2 92.3 19.2S91 10.8 82.6 12c-8.3 1.2-15 14.2-15 14.2h-.2" fill="#F9F9FA"/><path d="M60.6 21.4c0-.3.3-.5.6-.5l1.1.1c.3 0 .5.3.5.6s-.3.5-.6.5l-1.1-.1c-.3 0-.5-.3-.5-.6zm5.5.3c0-.3.3-.5.6-.5h.3c.2-.4.7-1.1 1.3-2 .2-.3.5-.3.8-.1.3.2.3.5.1.8-.8 1.2-1.3 2-1.4 2.3-.1.2-.3.3-.5.3h-.6c-.3-.3-.6-.5-.6-.8zm53.2 2.1c-.1-.2-.1-.4 0-.5 0 0 .3-.6.7-1.7.1-.3.4-.4.7-.3.3.1.4.4.3.7-.1.4-.3.7-.4 1h.6c.3 0 .5.3.5.6s-.3.5-.6.5l-1.5-.1c-.1 0-.3-.1-.3-.2zm2.2-5.8c-.3-.1-.5-.3-.5-.6.1-.4.1-.7.1-1.1 0-.3.3-.5.6-.5s.5.3.5.6c0 .4-.1.8-.2 1.1.1.3-.1.5-.5.5.1 0 .1 0 0 0zm-29.2-2.6c-.3-.1-.4-.5-.2-.8.2-.3.3-.6.6-1 .2-.3.5-.3.8-.2.3.2.3.5.2.8-.2.4-.4.7-.5.9-.1.2-.3.3-.5.3-.2.1-.3.1-.4 0zm-18.1-2.3c-.2-.2-.2-.6.1-.8 2.7-2.3 5.3-3.7 7.9-4.1 1.8-.3 3.5-.1 4.9.4.3.1.4.4.3.7-.1.3-.4.4-.7.3-1.2-.5-2
.7-.6-4.3-.4-2.4.3-4.8 1.6-7.4 3.8-.1.1-.3.1-.4.1-.1.1-.3.1-.4 0zm21.2-2.3c-.2-.2-.3-.6 0-.8.8-.9 1.6-1.7 2.5-2.4.2-.2.6-.2.8.1.2.2.2.6-.1.8-.8.7-1.6 1.4-2.3 2.3-.1.1-.3.2-.4.2-.3-.1-.4-.1-.5-.2zm23-3.2c-1.5-1.3-3.6-2.2-6.3-2.7-2-.4-4-.4-5.9-.1-.3 0-.6-.2-.6-.5-.1-.3.2-.6.5-.6 2-.3 4.1-.3 6.3.1 2.9.5 5.1 1.5 6.8 3 .2.2.3.6.1.8-.1.1-.3.2-.4.2-.3-.1-.4-.1-.5-.2z" fill="#D7D7DB"/></g></g><g transform="translate(159 16)" fill-rule="nonzero"><path d="M125.2 89.7c-.8-4.6-5-4.7-14.4-4.7-7.5 0-17.8-.1-23.3-2.4-9.6-4-17.5-13.4-17.6-13.6-.6-.7-1.4-1.2-2.3-1.5l-.6 1.2c2.7 2.8 5 5.7 7 8.6 3.3 2.9 7.6 6 12.2 7.9 6.1 2.5 16.8 2.6 24.5 2.6 8.4.1 10.8.1 11.1 1.9.3 1.7-2 3.5-6.5 6.6-2.2 1.6-5.9 4.2-6.1 5.1 0 3.4-5.1 9.2-12.9 10-2.6.3-4.8.3-6.5.3-3.2.1-5.2.1-7.6 1.4-.3.2-.8.3-1.3.4-.4 1.1-.9 2.4-1.5 3.8 1.9 0 3.4-.3 4.4-.9 1.6-.9 2.8-.9 6-1 1.8 0 4-.1 6.8-.3 8.4-.8 14.8-6.8 15.8-12 1-.9 3.3-2.6 4.8-3.7 5.2-3.4 8.6-5.8 8-9.7z" fill="#F9F9FA"/><path d="M34.7 63.9h0zM37.6 63.9h-.4.4zM42.2 67.5c.8-1.1 1.
7-2.3 2.6-3.4-.9 1.2-1.8 2.3-2.6 3.4zM40.4 63.6H40c.1.1.2.1.4 0zM43.2 63.3c-.1 0-.3 0-.4.1.1-.1.3-.1.4-.1z" fill="#FFF"/><path d="M62.4 149.2c-.8-1-1.6-2-2.4-3.1-3.6 1-7.5 1.5-11.2 1.5-.8 0-1.6 0-2.4-.1.2.2.3.5.4.8v.1c0 .1.1.2.1.3v.2c.1.3.1.6 0 .9v1.2h1.5c3.2 0 6.6-.4 9.8-1.1.6.7 1.1 1.4 1.7 2.2.5-1.1 1.3-2.2 2.5-2.9z" fill="#F9F9FA"/><path d="M59.6 143.9c-.1 0-.3.1-.4.1.1 0 .3-.1.4-.1z" fill="#FFF"/><path d="M27.9 147c-.7-2.4-1.3-5.4-1.9-8.9-1.6-2.2-2.9-4.8-3.7-7.8-.9 0-1.9-.3-2.7-.8-1.9-1.1-2.9-3.2-2.7-5.4l-3.7-9.6c-.3-.8-.3-1.7 0-2.5-.8-3-1.3-7.3-.4-12.6 1.9-10.4 8.8-19.8 20.6-28.1.1-.4.3-.8.7-1.1l3.3-3c.4-.4 1-.6 1.5-.6.3 0 .6.1.9.2.2-.3.5-.7.7-1-2 .2-4 .3-5.9.3-14.8 0-23-6.5-23.3-18.3 0-2.7.3-5.5 1-8.4-2.9-2.4-4.8-5.3-5.7-8.5-.5-.9-1-1.9-1.3-2.9-2.4-7.5 1.8-15.5 9.3-17.9 1.4-.4 2.8-.7 4.3-.7 1.7 0 3.4.3 5 .9 2-.4 4-.6 6.1-.6h1.2c.6 0 1.2.1 1.8.1 3.3-2.2 6.7-3.9 10.1-4.9 3.7-1.1 7.5-1.7 11.3-1.7 7.4 0 14.8 2.3 20.9 6.4 13 2.2 22.3 11.2 22.3 21.6 0 10.2-8.8 18.9-21.5 21.4-2.1 1.6
-4.5 3-7 4.4-1.6 2.9-3.1 5.8-4.4 8.6.7.5 1.4 1.3 1.7 2.4.3.9.4 1.8.4 2.4.1 0 .1.1.2.1 0 .1 2.6 3.2 6.7 6.6-2-2.9-4.3-5.8-7-8.6l.6-1.2c1.2-2.6 2.5-5.2 4-7.9 2.1-1.2 4.1-2.4 5.9-3.7 13.9-3 23.4-12.9 23.4-24.5 0-11.8-10.2-22.1-24.4-24.7C69.6 2.3 61.8 0 54 0c-4.1 0-8.3.6-12.3 1.9-3.4 1.1-6.7 2.6-10 4.7h-2.2c-1.9 0-3.9.2-5.8.5-1.7-.5-3.5-.8-5.3-.8-1.8 0-3.5.3-5.3.8-4.5 1.4-8.2 4.5-10.3 8.7C.6 20 .2 24.7 1.6 29.2c.3 1.1.8 2.1 1.3 3.2.9 3.1 2.6 5.9 5.1 8.4-.5 2.5-.7 4.9-.6 7.2.1 5.4 1.7 9.9 4.7 13.5.4.4.7.8 1.1 1.2.8.8 1.6 1.5 2.6 2.1 3.6 2.5 8.3 4.1 13.9 4.6-11.9 8.6-19 18.5-21 29.5-1 5.4-.5 9.9.2 13.2-.2 1.2-.1 2.5.4 3.7l3.4 9c0 3.1 1.6 6 4.3 7.7.6.4 1.2.6 1.8.9.8 2.3 1.9 4.4 3.1 6.2.7 4 1.4 7.4 2.2 9.9 1.3-1.2 2.4-2.1 3.8-2.5z" fill="#F9F9FA"/><circle fill="#FFF" transform="rotate(-26.565 9.428 30.382)" cx="8.978" cy="29.932" r="1"/><path d="M7.2 22.9c-.1 1.5 0 3.1.5 4.7-.5-1.6-.7-3.2-.5-4.7zM22.6 128h.4-.6.2zM25.1 131.3c.2.6.4 1.2.7 1.8-.3-.6-.5-1.2-.7-1.8-.1 0 0 0 0 0zM22.7 119.8v-.7l
-1.4-1 1.4 1.7zM21.5 127.8c-.2-.1-.5-.2-.7-.3.2.2.5.3.7.3zM22.3 128c-.2 0-.5-.1-.7-.1.2 0 .5.1.7.1zM15.3 113v-.1.1zM15.3 113.3v-.1.1zM19.2 124.9v-.5c0 .2-.1.3 0 .5zM19.2 124.4v-.3.3zM50.5 145.3h-.1.1zM53.9 145h-.3.3zM28.5 138.9v-.1c-.1 0-.1 0 0 .1zM57 144.5c-.2 0-.3.1-.5.1.1 0 .3-.1.5-.1zM58.3 144.2c-.2 0-.3.1-.5.1.2 0 .4 0 .5-.1zM55.5 144.8c-.1 0-.3.1-.4.1.1-.1.3-.1.4-.1zM38.9 145.2c0 .1 0 .1 0 0 0 .1 0 .1 0 0zM48.8 145.4h.1-.2c.1-.1.1 0 .1 0zM41.5 144.6h-.2.2zM44 145h-.2.2zM95.7 31.4c0 1.8-.3 3.5-.9 5.1.6-1.6.9-3.3.9-5.1zM14.8 53.7c0-.1-.1-.2-.1-.3 0 .1 0 .2.1.3zM15.5 55.4c0-.1-.1-.2-.1-.3 0 .1.1.2.1.3zM16.3 56.7c-.1-.1-.1-.2-.1-.2 0 .1.1.2.1.2zM17.4 58.1c-.1-.1-.1-.2-.2-.2.1.1.2.1.2.2zM14.3 52c0-.1 0-.1-.1-.2 0 .1 0 .1.1.2zM14.4 41.2c0-.1.1-.3.1-.4 0 .1-.1.3-.1.4zM13.9 50.1v-.4.4zM13.8 45.9v-.5.5zM30.5 63.7h-.3.3zM18.5 59.2l-.1-.1s.1 0 .1.1zM28.6 63.5c-.1 0-.2 0-.4-.1.1 0 .3.1.4.1zM14.1 38l-.3-.3.3.3zM24.7 62.6c-.1 0-.2 0-.2-.1.1 0 .2 0 .2.1zM26.5 63.1c-.1 0-.2-.1-.3-.1.1 0 .2 0
.3.1zM19.9 60.3c-.1-.1-.2-.1-.3-.2.2.1.3.1.3.2zM23 61.9c-.1 0-.2-.1-.3-.1.1 0 .2.1.3.1zM8.3 29s0-.1-.1-.1c0 0 0 .1.1.1zM27.7 12.4c.4 0 .7-.1 1.1-.1-.3 0-.7 0-1.1.1zM18.1 11.9h.8-.8zM25.5 12.6h.2-.2zM30.3 12.2h-.7 1.8-1.1zM93.7 23.9c.2.4.5.9.7 1.4-.3-.5-.5-.9-.7-1.4zM89.5 18.7l.8.8c-.2-.3-.5-.6-.8-.8zM91.5 20.8c.5.5.9 1.1 1.3 1.7-.4-.6-.8-1.2-1.3-1.7zM10.6 34.1c-.1-.2-.2-.4-.3-.5.1.2.2.4.3.5zM9.3 31.6c-.1-.2-.2-.5-.2-.7.1.2.1.4.2.7zM12.9 37l-.3-.3.3.3zM17 12.1c.2 0 .5-.1.7-.1-.2 0-.5.1-.7.1zM11.9 35.9s0-.1 0 0c0-.1 0 0 0 0zM9.9 32.9l-.3-.6.3.6zM32.8 63.9h-.4.4zM11.4 14.7c.6-.5 1.2-1 1.9-1.3-.7.4-1.3.8-1.9 1.3zM15.6 12.4c.4-.1.7-.2 1.1-.3-.4.1-.8.2-1.1.3zM81.2 139.8h-1.1 1.1zM72.5 139.6c-.2 0-.4 0-.6-.1.2 0 .4 0 .6.1zM82.7 139.7c-.3 0-.6 0-1 .1.4-.1.7-.1 1-.1zM84.3 139.6c-.3 0-.6.1-1 .1.3-.1.6-.1 1-.1zM76.3 139.8h-.5.5zM74.4 139.7h-.6.6zM78.2 139.9h1.5-1.5zM92 138.5c-.3.1-.6.1-.9.2.3-.1.6-.1.9-.2zM90.6 138.8c-.3.1-.6.1-.9.1.3 0 .6-.1.9-.1zM85.9 139.4c-.3 0-.7.1-1 .1.3 0 .6 0 1-.1zM93.
4 138.2c-.3.1-.6.1-.9.2.3-.1.6-.1.9-.2zM89.2 139c-.4.1-.8.1-1.1.2.3-.1.7-.2 1.1-.2zM87.7 139.2c-.5.1-1 .1-1.4.2.5-.1 1-.1 1.4-.2zM69.2 121.2c-.3-.1-.5-.1-.8-.2l-1.3.8c.3.2.6.3.8.5l.6.3.7-1.4zM23.3 107.4v-.1.1zM23.2 105.3v-.1.1zM23.2 106.4v-.1.1zM71.5 141.8c.9 1.7 1.7 3.3 2.2 4.7-.5-1.4-1.3-3-2.2-4.7zM65.9 150c-1.8-2.3-3.6-4.6-5.1-6.4 1.5 1.8 3.2 4.1 5.1 6.4zM95 137.9l-1.2.3c.4-.2.8-.2 1.2-.3zM65 117.8c-.8.4-1.5.5-2.4.7.8.6 1 .9 1.9 1.5l1.3-.8c-.2-.2-.3-.4-.4-.6-.2-.2-.3-.4-.4-.8zM19.2 125c.1 1 .7 1.9 1.6 2.5-.9-.5-1.5-1.5-1.6-2.5zM38.9 144.1c0-.1 0-.1 0 0 0-.1 0-.1 0 0zM22.4 121.2l-2-2.5 1 2.7c.3-.2.6-.2 1-.2zM25.9 133.3c.7 1.4 1.4 2.7 2.3 3.9 0 .2.1.4.1.6 0-.2-.1-.4-.1-.6-.9-1.2-1.7-2.5-2.3-3.9zM96.3 137.5l-1.2.3c.5-.1.9-.2 1.2-.3zM105.8 134c-.2.1-.3.2-.5.3.2-.1.4-.2.5-.3zM106.2 133.7c-.1.1-.2.2-.3.2.1 0 .2-.1.3-.2zM105.2 134.4c-.1.1-.3.2-.4.2.1 0 .2-.1.4-.2zM106.6 133.5l-.2.2c0-.1.1-.2.2-.2zM104.5 134.8c-.1.1-.3.1-.4.2.1-.1.2-.2.4-.2zM106.8 133.2c0 .1-.1.1-.1.2 0-.1.1-.2.1-.2zM106
.9 132.9c0 .1 0 .1-.1.2.1-.1.1-.1.1-.2zM103.8 135.1c-.2.1-.3.1-.5.2.1 0 .3-.1.5-.2zM106.9 132.6v0zM95.8 130.5h.2-.2zM98.7 136.9c-.2.1-.5.1-.7.2.2-.1.5-.1.7-.2zM97.5 137.2c-.3.1-.5.1-.8.2.3 0 .6-.1.8-.2zM99.8 136.6c-.2.1-.5.1-.7.2.3-.1.5-.2.7-.2zM101 136.2c-.3.1-.5.2-.8.3.2-.1.5-.2.8-.3zM102.1 135.8l-.9.3.9-.3zM103 135.4c-.2.1-.4.2-.6.2.2 0 .4-.1.6-.2zM59.3 111.8h-.1.3-.2zM58.4 111.9h.2-.2zM57.6 112.2c-.1.1-.2.2-.3.2.1 0 .2-.1.3-.2zM74.2 116.6v0zM61 112.2c.1 0 .1.1.2.1-.1 0-.2 0-.2-.1zM65.4 114l.1-.1-.1.1zM61.6 112.8l.2.2c0-.1-.1-.2-.2-.2zM62.7 115.2c.7-.2 1.5-.4 2.3-.5-.8.1-1.5.3-2.3.5 0-.5-.1-1.1-.4-1.6.3.5.4 1 .4 1.6zM60.1 111.9h0zM64.3 111.8c.1-.1.1-.2.2-.3l-1.2-.3c.3.3.5.6.7.9l.3-.3z" fill="#FFF"/><path d="M79.1 113.9c-.5 0-1 0-1.5-.1-.3.9-.8 1.9-1.2 2.9 0 .4-.1.9-.3 1.3l-1.9 4.4c0 .1 0 .2-.1.3 0 .1 0 .1-.1.2.4.2.8.3 1.1.5 10.3 4.3 18.9 4.8 24.5 5.2 4.9.3 8.1.5 9.2 3.2.3.9.2 1.8-.3 2.7-2.3 3.4-17.1 7.7-30.4 7.7-1.4 0-2.8 0-4.1-.1.6 1.1 1 2.1 1.4 3 .1 0 .1 0 .2-.1.6-.1 3.7-.3 5.5
.4 7.3-.3 13.6-1.7 16.9-2.6 10.5-2.8 12.4-5.5 13-6.5 1.2-1.8 1.4-3.9.7-5.8-1.9-4.7-6.8-5-12.1-5.3-5.1-.3-12.6-.8-21.5-4.1l.7-1.7c.2-.6.4-1.1.5-1.7 0-.1 0-.1.1-.2.6-1.3 1.1-2.6 1.5-3.8-.5.2-1.1.2-1.8.2z" fill="#F9F9FA"/><path d="M56.8 110.8c.1.3.1.5.2.8 0-.3-.1-.5-.2-.8zM66.7 112c-.3.6-.6 1-.7 1.2.1-.2.4-.6.7-1.2z" fill="#FFF"/><path d="M58.4 107.7c2.3.6 4.7 1.2 7 1.8 1.7-4.3 3.2-13.6-7-26-1.7 7.8-1.7 15.9 0 24.2z" fill="url(#a)"/><path d="M81.2 111.4c2.9-1.6 5.3-1.6 8.6-1.7 1.8 0 3.8-.1 6.3-.3 6.8-.7 10.9-5.8 10.9-7.8 0-.4.1-.7.3-1.1-1.7.2-3.2.2-4.6.2-6.7 0-10.6-1.5-10.8-1.6-.3-.1-.4-.4-.3-.7.1-.3.4-.4.7-.3.1 0 6 2.4 15.9 1.2 1.2-1.2 3.1-2.7 5.8-4.6 1.8-1.3 4.4-3.1 5.3-4.2-1.5-.3-5.2-.3-8.6-.3-8-.1-18.9-.1-25.4-2.8C78.5 84.6 72.6 79.5 69 76c11 13.8 11.5 25.8 9.7 33.9 0 0-.2.7-.5 1.8 1.5.1 2.5 0 3-.3z" fill="url(#b)"/><path d="M28.3 16.1c1.8-1.9 3-3.1 3.9-3.7-.2 0-.5 0-.7-.1H29c-.4 0-.7 0-1.1.1-.7.1-1.4.1-2.1.2h-.2l-1.5.3c1.5.7 3 1.8 4.2 3.2z" fill="url(#c)"/><path d="M60.1 146.8s-4.
3 5.9-3.1 9c1.2 3.1 9.3 12.9 9.3 12.9s-1.2 8.1-.8 9.6c.4 1.5 4.2 5.8 12.7 2.5s8.8-8.3 8.9-12.3c0-1.6.3-4.2.1-7.8 0-.3 3.5-4.3 1.7-11.3-.8-3.1-2.5-4.3-2.8-4.3-1.1 0-.4 0-.7-.6-1.1-2.2-25.3 2.3-25.3 2.3z" fill="#F9F9FA"/><path d="M8.9 30.2c.1.2.1.4.2.7.1.2.1.5.2.7.1.2.2.5.3.7l.3.6c.1.2.2.5.4.7.1.2.2.4.3.5.4.6.8 1.2 1.2 1.7.2.3.5.5.7.8l.3.3c.3.3.5.5.8.7l.3.3s.1 0 .1.1c.4-1 .8-1.9 1.3-2.7-2.6-.8-4.9-2.6-6.4-5.1z" fill="url(#d)"/><path d="M16.6 30.2c-.3.5-1 .7-1.5.3-.5-.3-.7-1-.3-1.5.1-.1 1.8-2.7 5.1-2.7h.4c-.6-.2-1.1-.8-1.1-1.5l.1-3.5c0-.9.7-1.5 1.6-1.5.9 0 1.5.7 1.5 1.6l-.1 2.4c.9-1.3 1.9-2.5 2.9-3.7-.1-.2-.2-.5 0-.7 1.1-1.4 2.1-2.5 3-3.4-1.2-1.4-2.7-2.4-4.3-3.2-1.5-.7-3.1-1-4.8-1h-1.5c-.2 0-.5.1-.7.1-.1 0-.2 0-.3.1-.4.1-.7.2-1.1.3-.8.2-1.5.6-2.2 1-.7.4-1.4.8-1.9 1.3-1.5 1.3-2.6 2.9-3.4 4.7-.4 1.1-.7 2.3-.8 3.5-.1 1.5 0 3.1.5 4.7.1.5.3.9.5 1.3 0 0 0 .1.1.1l.6 1.2c1.5 2.5 3.8 4.3 6.5 5.2.7-1.3 1.4-2.2 1.4-2.3.1-.1.2-.2.3-.2.6-1.4 1.4-2.9 2.2-4.3-1.7.3-2.6 1.6-2.7 1.7z" fill="#F9F9FA"/><
path d="M20.9 19.8c-.9 0-1.6.7-1.6 1.5l-.1 3.5c0 .7.4 1.3 1.1 1.5h-.4c-3.4 0-5 2.5-5.1 2.7-.3.5-.2 1.2.3 1.5.5.3 1.2.2 1.5-.3 0 0 .9-1.3 2.6-1.6.9-1.6 1.9-3.2 3.1-4.7l.1-2.4c0-.9-.6-1.6-1.5-1.7z" fill="url(#e)"/><path d="M77.5 13.6c2.2 0 4.2.6 6 1.6-1.1-.8-2-1.3-2.6-1.6-1.9-.7-3.9-1.2-6-1.6.8.9 1.6 1.6 2.6 1.6z" fill="url(#f)"/><path fill="url(#g)" d="M19.1 113.1v-.1l-.1.1"/><path d="M68 122.3c.2.1.4.2.6.4-.2-.2-.4-.3-.6-.4z" fill="url(#h)"/><path d="M46.2 67.8c.6 0 1.3 0 2-.1 6.3-.4 13.8-2.8 13.9-2.9.2-.1.5-.1.7-.1h.3c1.3-2.7 2.6-5.2 3.8-7.5-3.4 1.7-10.3 4.6-22 6.8-.9 1.1-1.7 2.2-2.6 3.4.9.3 2.2.4 3.9.4z" fill="url(#i)"/><path d="M24.7 143.9s-4.7 5.6-3.8 8.8c.9 3.2 8.4 13.7 8.4 13.7s-1.8 8.1-1.5 9.6c.3 1.5 3.8 6.1 12.6 3.5 8.8-2.6 8.9-6.7 9.3-10.7.4-4 1-16.3.7-18.8-.3-2.5-25.7-6.1-25.7-6.1z" fill="#F9F9FA"/><path d="M69.7 127.3c.1-.2.1-.5.3-.8l-.3.6v.2z" fill="url(#j)"/><path d="M65.9 150c.8.3 2.4.4 5.3-.3 1.7-.4 2.7-.9 3.3-1.3l-.6-1.8c-.6-1.4-1.3-3.1-2.2-4.8-2.1-3.4-3.7-6.1-3.7-6.
1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2 0 0 1.1 1.8 2.6 4.3.2 0 .4.1.6.1.2 0 .4 0 .6.1.4 0 .9.1 1.3.1h.6c.4 0 .9.1 1.4.1h6c.3 0 .6 0 1-.1h.6c.3 0 .6-.1 1-.1h.5c.4 0 .7-.1 1-.1h.4c.5-.1 1-.1 1.4-.2h.3c.4-.1.8-.1 1.1-.2.2 0 .3-.1.5-.1.3 0 .6-.1.9-.1.2 0 .4-.1.5-.1.3-.1.6-.1.9-.2.2 0 .3-.1.5-.1.3-.1.6-.1.9-.2.1 0 .3-.1.4-.1l1.2-.3h.1l1.2-.3c.1 0 .3-.1.4-.1.3-.1.5-.1.8-.2.2 0 .3-.1.4-.1.2-.1.5-.1.7-.2.1 0 .3-.1.4-.1.2-.1.5-.1.7-.2.1 0 .3-.1.4-.1.3-.1.5-.2.8-.3.1 0 .1 0 .2-.1l.9-.3c.1 0 .2-.1.2-.1.2-.1.4-.2.6-.2.1 0 .2-.1.3-.1.2-.1.3-.1.5-.2.1 0 .2-.1.3-.1.2-.1.3-.1.4-.2.1 0 .2-.1.2-.1.2-.1.3-.2.4-.2.1 0 .1-.1.2-.1.2-.1.4-.2.5-.3 0 0 .1 0 .1-.1.1-.1.2-.2.3-.2l.1-.1.2-.2.1-.1c0-.1.1-.1.1-.2 0 0 0-.1.1-.1 0-.1 0-.1.1-.2v-.1-.2c-.7-1.8-4.7-1.6-10.9-2.1h-.2c-5.6-.5-12.9-1.5-21.4-5.1-.4-.2-.8-.3-1.2-.5-.7 1.6-1.3 3.1-1.3 3.5-.1 1-1.2 2.7-2.7 3.6-.8.5-1.6.7-2.5.7-.5 0-1-.1-1.5-.3-.5-.2-.8-.8-.7-1.3-1.6-.8-2.2-2.3-2.3-3.2 0-.3.2-.6.5-.6h.1c.1-1.1.7-2.2 1.8-2.8 1-.5 2.1-.5 3-.1l.4-.9-.1-.1c-.4-.2-.7-.4
-1.1-.6l-.4-.2-.5-.3-1.7 1c-.3 1.3-1.3 3.4-3.5 3.5h-.2c-3 0-3.8-1.9-4.2-3.3-.1-.3.1-.6.4-.7h.1c0-.4 0-.8.1-1.2.5-1.8 2.5-2.9 4.3-2.3.8.2 1.4.7 1.9 1.4l.2-.1c-.3-.3-.6-.5-.8-.7-.2-.2-.4-.4-.7-.6l-.9-.7c-.9.2-1.8.3-2.6.3-.5 0-.9-.1-1.2-.2-2.3-.9-2.3-3.8-2.3-3.9 0-.3.3-.5.6-.6.2 0 .3.1.4.2.1-.9.6-1.7 1.4-2.2-.1-.3-.2-.6-.2-.9-.1-.3-.1-.5-.2-.8-.1-.4-.2-.9-.3-1.3 0-.2-.1-.4-.1-.6-.1-.6-.3-1.2-.4-1.8v-.1c-1.5-8.1-1.7-17.2 1-26.8-.9-1.2-1.5-1.9-2-2.4-2 .4-4.1.6-6.5.6h-.2c-1.3 3.8-2 7.3-2.3 10.5l2.3.1c.4 0 .8.3 1 .7.2.4 0 .9-.3 1.2l-3.1 2.9c.3 6.4 2.1 11.8 3.5 16 .4 1.2.8 2.4 1.1 3.4 2.8 9.4 2.6 17.3-.4 22.2-1.7 2.7-4.1 4.4-7.1 4.9-.4.1-.9.1-1.4.1-2.3 0-4.8-1-7-2.7-2.8-2.3-7.7-7.9-8.2-20.8C26 108.9 28 101 30.6 94c-.4-.1-.7-.3-.8-.6-.2-.3-.1-.7.1-1.1l6.2-10.2c1.1-2.1 2.2-3.9 3.1-5.3-2.9-1-4.3-2.4-5-3.3-4.3 3.1-8 6.3-10.9 9.7 0 0 0 .1-.1.2 1.2-1.4 2-2.2 2.1-2.3.3-.3.7-.3 1 0 .3.3.3.7 0 1 0 0-2.8 2.8-5.2 6.6-1.3 3.7-2.7 8.5-2.6 12.2.1 4.7 1.3 7.8 2.1 9.3.9.3 1.9.5 2.9.8-.1.8-.3 1.8-.3 2.9-.5-
.1-1-.3-1.4-.4.5.3.9.6 1.4.8.2-1.5.4-2.5.4-2.7.1-.3.3-.5.6-.5.3.1.5.3.5.6 0 .1-2 11.3.5 19.2.2.6.5 1.2.7 1.8 0 .1.1.1.1.2.7 1.4 1.4 2.7 2.3 3.9 0 .2.1.4.1.6.1.3.1.6.2 1v.1c.6 3.6 1.4 7.2 2.3 9.8.8.4 2.2.6 4.7.5 2-.1 3-.5 3.6-.8 0-1 0-2-.1-3v-.1c-4.5-1.2-6.1-2.9-6.2-3-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0 0 0 1.5 1.5 5.4 2.6v-.1l2.4.6h.2c.8.2 1.6.3 2.4.4h.2c1.6.2 3.2.3 4.7.3h1.7c1.1 0 2.1-.1 3.1-.3h.3c.4 0 .8-.1 1.1-.2.1 0 .3 0 .4-.1.3-.1.6-.1 1-.2.2 0 .3-.1.5-.1.3-.1.6-.1.9-.2.2 0 .3-.1.5-.1.3-.1.6-.1.9-.2.1 0 .3-.1.4-.1l1.2-.3c1.3 2.3 3 4.6 4.9 6.9zm8-22.2c.1-.2.3-.4.5-.5.4-.1.8.1 1.2.3 4.8 2.9 14 4.5 27.2 4.6.1 0 .6 0 .8.4.1.2.1.5-.1.8-.5.7-8.8 1.8-15.3 1.8-2 0-3.8-.1-5.2-.3-5.8-1-8-3.7-8.6-4.9-.6-.8-.7-1.6-.5-2.2zm-49.7-17.2c0 .3-.3.5-.6.5s-.5-.3-.5-.6c0-.9.1-1.8.3-2.7 0-.2-.1-.3-.1-.5v-.1c0-.3-.1-.6-.1-.9v-.1-1-.1-1.1-.1c.2-3.2 1.2-7.3 4.2-11.8l.1-.1c.3-.5.7-1 1-1.5.8-2 1.5-3.3 1.5-3.5.1-.3.5-.4.7-.3.3.1.4.5.3.7-.1.4-6.3 13.7-6.8 23.2z" fill="url(#k)"/><path d="M37.2 63.9h.4c.8 0 1.6-.
1 2.4-.2h.4l2.4-.3c.1 0 .3 0 .4-.1.5-.1 1-.2 1.5-.2 13.5-2.6 20.6-6 23.1-7.5.1-.1.2-.1.4-.2.5-.3.7-.4.7-.5.1-.1.2-.1.3-.1 1.7-1 3.4-2 4.9-3.1-4.2-.1-7.5-1.9-7.7-2-.3-.1-.4-.5-.2-.8.1-.3.5-.4.8-.2 0 0 4.6 2.4 9.5 1.7 1.1-.2 2.2-.5 3.2-.8 6.7-2.1 12-6.3 14.5-11.6.2-.5.5-1.1.7-1.6.6-1.6.9-3.3.9-5.1 0-2.2-.5-4.2-1.3-6.2-.2-.5-.4-.9-.7-1.4l-.9-1.5c-.4-.6-.8-1.1-1.3-1.7-.4-.4-.8-.9-1.2-1.3l-.8-.8c.9 1.6 1.5 3.4 1.7 5.6.9 1.4 1.6 2.9 1.8 4.6 1.4 7.8-5.3 15.4-14.8 17.1-3.2.6-6.3.4-9-.4-6.2 3.4-14.2 5.7-22.1 6.6-16.5 1.9-29.8-1.4-28.8-13.1.8-8.9 9.4-22.1 19.5-29.1-.5.3-1.1.6-1.6.9-.8.5-1.6 1-2.4 1.6 0 0-2.4 1.2-7.7 7.7-.1.1-.3.2-.4.2-.1 0-.2 0-.4-.1l-.1-.1c-1 1.2-2 2.4-2.9 3.7-1.1 1.5-2.1 3.1-3.1 4.7-.8 1.4-1.5 2.8-2.2 4.3.2 0 .3 0 .5.1.3.2.3.5.1.8 0 0-2.2 3.2-3 6.3-.1.3-.1.6-.2.8 0 .1-.1.3-.1.4-.1.7-.3 1.4-.4 2.1-.1.7-.2 1.4-.2 2v.5c0 .7-.1 1.3 0 2 0 .6.1 1.2.1 1.8v.4c.1.6.2 1.1.3 1.7 0 .1 0 .1.1.2.1.5.3.9.4 1.4 0 .1.1.2.1.3.2.5.4.9.6 1.4 0 .1.1.2.1.3.2.4.4.8.7 1.1 0 .1.1.2.1.2.3.4.6.8.9 1.
1.1.1.1.2.2.2l.9.9.1.1 1.2.9c.1.1.2.1.3.2.4.3.8.5 1.3.8h.1c.4.2.9.4 1.3.7.1 0 .2.1.3.1l1.5.6c.1 0 .2.1.2.1.5.1.9.3 1.4.4.1 0 .2.1.3.1.6.1 1.1.2 1.7.3.1 0 .2 0 .4.1.5.1 1.1.2 1.6.2h.3c.6.1 1.2.1 1.9.1h2.4c1 .6 1.8.6 2.6.6z" fill="url(#l)"/><path d="M68.1 113.9c1.7-2.1 3.7-5.6 4.9-11.1 1.6-7-3-17.6-6.6-24.5-1-1.3-2-2.5-2.8-3.4-1.7.9-4.2 1.9-7.3 2.6.4.5.9 1.1 1.5 1.8 14.4 15.6 11.4 27.5 9.3 32-.1.3-.2.5-.4.7-.3.6-.6 1-.7 1.2-.2.2-.3.4-.5.6l-.1.1c-.1.2-.3.4-.4.7 1.1-.2 2.1-.4 3.1-.7z" fill="url(#m)"/><path d="M76.4 110.7c.2-.8.3-1.3.3-1.3 1.2-5.5.8-10.8-.6-15.7 1.7 6.5 1.4 12.4.3 17z" fill="url(#n)"/><path d="M30.7 86.9c-.3-.1-.6 0-.7.3-.1.2-.7 1.5-1.5 3.5-.4.5-.7 1-1 1.5l-.1.1c-3 4.5-4 8.6-4.2 11.8V106.5c0 .3.1.6.1.9v.1c0 .2 0 .3.1.5l-.3 2.7c0 .3.2.6.5.6s.5-.2.6-.5c.4-9.5 6.7-22.8 6.7-23 .2-.4.1-.8-.2-.9z" fill="url(#o)"/><path d="M32.7 105.7c-.2 0-.4-.1-.6-.2-.4-.3-.6-.8-.4-1.3l3.6-9.5-4.5-.6c-2.6 6.9-4.5 14.9-4.2 22.8.6 12.8 5.4 18.5 8.2 20.8 2.2 1.7 4.7 2.7 7 2.7.5 0 .9 0 1.4-.1 3-.
5 5.4-2.2 7.1-4.9 3-4.9 3.2-12.8.4-22.2-.3-1-.7-2.2-1.1-3.4-1.4-4.2-3.2-9.5-3.5-16l-12.5 11.6c-.4.2-.7.3-.9.3zM36.2 82.1c.2-.3.6-.6 1-.5l7.8.4c.4 0 .8.3 1 .6.2.4.1.8-.1 1.2l-3.9 5 4.1.2c.3-3.3 1-6.8 2.3-10.5-1.1 0-2.1-.1-3.2-.2-2.5-.2-4.5-.7-6-1.2-.9 1.4-1.9 3.2-3.1 5.3l.1-.3zM82.9 134.9c1.4.2 3.2.3 5.2.3 6.5 0 14.8-1.1 15.3-1.8.2-.2.2-.5.1-.8-.2-.4-.6-.4-.8-.4-13.2-.1-22.3-1.7-27.2-4.6-.5-.3-.8-.5-1.2-.3-.2.1-.4.3-.5.5-.2.5 0 1.3.4 2.2.7 1.1 2.9 3.9 8.7 4.9zM69.5 120.6h-.4l-1.9 1.2 1.3-.8c.2.1.5.2.8.2l-.6 1.4.8-2zM65.4 118.7c.1.2.2.4.4.6h.1c-.2-.3-.4-.4-.5-.6z" fill="#F9F9FA"/><path d="M57.3 112.5c-.8.5-1.2 1.4-1.4 2.2.1.1.1.2.1.3 0 0 0 2.2 1.6 2.8 1.2.5 5.3-.7 7.5-1.5h.3l.2-.1.4 1.2c.1.4.3.6.6 1l.9 1-1.1.7-1.4.9-.6.4-.6-.4c-.1-.1-.3-.2-.4-.3l-.2.1c-.4-.6-1.1-1.1-1.9-1.4-1.8-.5-3.8.5-4.3 2.3-.1.4-.1.8-.1 1.2.3 0 .5.1.6.4.4 1.5 1.1 2.5 3.3 2.5 2-.1 2.5-2.8 2.5-2.8 0-.2.1-.3.3-.4l4.5-2.8c.1 0 .1-.1.2-.1l.2-.1.3-.2h.6l1.9-.2-.8 1.8-.9 2.1-.5 1.1-1-.5-.4.9c-.9-.4-2.1-.4-3 .1-1.1.6-1.7
1.6-1.8 2.8.2 0 .5.2.5.5 0 .1.3 1.9 2.1 2.5h.5c.3.1.5.1.8.1h.3c.3-.1.6-.2.9-.4.6-.4 1-.9 1.3-1.3.3-.5.4-1 .4-1.1 0-.1 0-.3.1-.4v-.2l.3-.6c.4-1 1-2.3 1.4-3.1l2.7-6.2c0-.1.1-.2.1-.3v-.2-.3c1.1-2 1.8-4.2 2.2-5.6 1.1-4.7 1.4-10.5-.2-17-2.2-7.6-6.7-14.2-11.3-19.4-.3.2-.7.4-1.2.6.9 1 1.8 2.2 2.8 3.4 3.6 6.8 8.2 17.5 6.6 24.5-1.2 5.4-3.2 8.9-4.9 11.1-1 .2-2 .5-3 .7-.8.2-1.6.4-2.3.5 0-.5-.1-1.1-.4-1.6-.1-.3-.3-.5-.5-.7l-.2-.2c-.2-.1-.3-.3-.5-.4-.1 0-.1-.1-.2-.1-.2-.1-.5-.2-.7-.3h-.1c-.2-.1-.4-.1-.7-.1h-.3c-.2 0-.4 0-.5.1h-.2c-.3.1-.5.2-.7.3-.5 0-.6.1-.7.2zM64.4 123.5l1.7-1-1.7 1zM18.4 39.1c-1.1 11.7 12.3 15 28.8 13.1 7.9-.9 15.9-3.2 22.1-6.6 2.8.8 5.8 1 9 .4 9.5-1.7 16.1-9.3 14.8-17.1-.3-1.7-.9-3.2-1.8-4.6.2 2.6-.3 5.5-2 8.7-.1.2-.2.3-.4.4-2 4.2-6.7 7-12 6.6-4.3-.4-7.9-2.8-9.8-6.2-2.6-3.7-1.8-7.3-1.7-7.5.1-.3.4-.5.7-.4.3.1.5.4.4.7 0 .1-.4 1.5.1 3.5 1.7 4.1 5.3 7 10.3 7.2.1-.1.2-.1.4-.1.4 0 10.5-.3 11.6-9.9.7-6.3-2.5-10-5.2-12-1.8-1-3.8-1.6-6-1.6-1 0-1.8-.7-2.6-1.5h-.2c-5.5-3.8-12.5-6.3-20.1
-6.3-3.4 0-7 .5-10.6 1.6-2.1.6-4.1 1.5-6.1 2.6-10.3 6.9-18.9 20-19.7 29zM60 42c-.1 0-.2.1-.2.1-.2 0-.4-.1-.5-.3-2.6-5.6-.5-10.6-.4-10.8.1-.3.4-.4.7-.3.3.1.4.5.3.7 0 0-2 4.7.4 9.9.1.2 0 .6-.3.7zm25.3-12.3c.3.5.2 1.2-.3 1.5-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5 0-.1-1.1-1.6-3.2-1.6s-3.2 1.6-3.2 1.6c-.3.5-1 .7-1.5.3-.5-.3-.7-1-.3-1.5.1-.1 1.8-2.7 5.1-2.7 3.2.1 4.9 2.6 4.9 2.7zm-17.2-.9h-.2c-.2 0-.5-.1-.5-.4l-.1-.3c-.1-.3.1-.6.4-.7.3-.1.6.1.7.4l.1.3c.1.3-.1.6-.4.7zm5.6 6.2h-.1c-.1 0-2.9-.6-5.1-4.3-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2 2 3.3 4.4 3.8 4.4 3.8.3.1.5.3.4.6-.1.4-.3.5-.6.5zm8.1-12.2l-.1 3.5v.3c-.4-.1-.9-.2-1.4-.2-.6 0-1.1.1-1.6.2 0-.1-.1-.3 0-.4l.1-3.5c0-.9.7-1.5 1.6-1.5.7 0 1.4.7 1.4 1.6zM72.7 14c.1.3 0 .6-.3.7 0 0-2.4.9-3.6 3.3-.1.2-.3.3-.5.3-.1 0-.2 0-.2-.1-.3-.1-.4-.5-.2-.7 1.4-2.8 4.1-3.8 4.2-3.9.2-.1.5.1.6.4zM23.4 111.2c-1-.3-2-.6-2.9-.8-.8-1.5-2-4.7-2.1-9.3-.1-3.7 1.3-8.5 2.6-12.2 2.4-3.8 5.2-6.6 5.2-6.6.3-.3.3-.7 0-1-.3-.3-.7-.3-1 0-.1.1-1 .9-2.1 2.3.1-.1.1-.2.1-.2-4.4 5.1-7.1 10.6
-8.2 16.4-1 5.3-.2 9.7.6 12.4-.1.1-.1.2-.2.3v.1c0 .1-.1.1-.1.2v.4c0 .1 0 .2.1.3l3.9 10.1v1.3c.1 1 .7 1.9 1.6 2.5.2.1.5.2.7.3h.1c.2.1.5.1.7.1H23.3c-.4-2.2-.5-4.5-.5-6.6-.1 0-.2-.1-.2-.2l-.1-.1c-.3 0-.7.1-1 .2l-1-2.7-1-1.2c-.2-.2-.2-.6.1-.8.2-.2.6-.2.8.1l1.1 1.3 1.4 1c.1-1.2.1-2.3.2-3.3-1.6-.9-3.3-2-3.6-2.1-.3-.1-.4-.4-.3-.6v-.1c.1-.3.4-.4.7-.3.2.1 1 .5 1.9 1.1.4.1.9.3 1.4.4-.1-.9 0-1.9.2-2.7z" fill="#F9F9FA"/><path d="M64.4 121.4l.6-.4 1.4-.9 1.1-.7-.9-1c-.4-.4-.5-.6-.6-1l-.4-1.2-.2.1h-.3c-2.2.8-6.3 2-7.5 1.5-1.6-.6-1.6-2.8-1.6-2.8 0-.1-.1-.3-.1-.3-.1-.1-.2-.2-.4-.2-.3 0-.6.2-.6.6 0 .1 0 3 2.3 3.9.3.1.7.2 1.2.2.8 0 1.7-.1 2.6-.3l.9.7c.3.2.5.4.7.6.2.2.5.4.8.7.1.1.2.2.4.3l.6.2zm1.4-2.1l-1.3.8c-.9-.6-1.1-.9-1.9-1.5.9-.2 1.6-.3 2.4-.7.1.4.2.6.4.9.1.1.3.2.4.5z" fill="url(#p)"/><path d="M69.6 123.1l.9-2.1.8-1.8-1.9.2h-.6l-.3.2-.2.1c-.1 0-.1 0-.2.1l-4.5 2.8c-.1.1-.2.2-.3.4 0 0-.4 2.8-2.5 2.8-2.2 0-2.9-1-3.3-2.5-.1-.3-.3-.4-.6-.4h-.1c-.3.1-.5.4-.4.7.4 1.4 1.3 3.3 4.2 3.3h.2c2.2-.1 3.2-2.2 3.
5-3.5l1.6-1 .5.3.4.2c.4.2.7.4 1.1.6l.1.1 1 .5.6-1zm-1-.4c-.2-.1-.4-.2-.6-.4-.3-.2-.6-.3-.8-.5l1.9-1.2h.4l-.9 2.1z" fill="url(#q)"/><path d="M78.7 22.7l-.1 3.5v.4c.5-.1 1-.2 1.6-.2.5 0 .9.1 1.4.2v-.3l.1-3.5c0-.9-.7-1.6-1.5-1.6-.8-.1-1.5.6-1.5 1.5z" fill="url(#r)"/><path d="M80.2 27.1c-3.4 0-5 2.5-5.1 2.7-.3.5-.2 1.2.3 1.5.5.3 1.2.2 1.5-.3 0 0 1.1-1.6 3.2-1.6s3.2 1.6 3.2 1.6c.2.3.6.5.9.5.2 0 .4-.1.6-.2.5-.3.7-1 .3-1.5.2-.2-1.5-2.7-4.9-2.7z" fill="url(#s)"/><path d="M67.8 17.5c-.1.3 0 .6.2.7.1 0 .2.1.2.1.2 0 .4-.1.5-.3 1.2-2.4 3.6-3.3 3.6-3.3.3-.1.4-.4.3-.7-.1-.3-.4-.4-.7-.3 0 0-2.7 1-4.1 3.8z" fill="url(#t)"/><path d="M59.9 31.3c.1-.3 0-.6-.3-.7-.3-.1-.6 0-.7.3-.1.2-2.2 5.2.4 10.8.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.3-.7-2.4-5.1-.4-9.8-.4-9.9z" fill="url(#u)"/><path d="M73.8 33.9s-2.4-.5-4.4-3.8c-.2-.3-.5-.3-.8-.2-.3.2-.4.5-.2.8 2.3 3.8 5 4.3 5.1 4.3h.1c.3 0 .5-.2.5-.5.2-.2 0-.5-.3-.6z" fill="url(#v)"/><path d="M68.5 28.1l-.1-.3c-.1-.3-.4-.4-.7-.4-.3.1-.4.4-.4.7l.1.3c.1.2.3.4.5.4h.2c
.3-.1.5-.4.4-.7z" fill="url(#w)"/><path d="M65 71.5s0-1.4-.4-2.6c0-.2-.1-.3-.2-.4-1.4.6-6.2 2.4-15.4 3.3-6.1.6-9.9-.8-11.5-1.6l-1.9 1.7s1.1 3.3 9.7 4.1c1.1.1 2.2.1 3.2.1 10.4 0 16.5-4.6 16.5-4.6z" fill="url(#x)"/><path d="M49 71.8c9.2-.9 14-2.7 15.4-3.3-.5-.9-1.7-1.4-1.7-1.4s-7.8 2.6-14.5 3c-.7 0-1.4.1-2.1.1-5.2 0-7.2-1.2-7.2-1.2l-1.4 1.3c1.6.7 5.4 2.1 11.5 1.5z" fill="#FFF"/><path d="M47.9 83.5c.3-.3.3-.8.1-1.2-.2-.4-.5-.6-1-.6l-7.8-.4c-.4 0-.8.2-1 .5l-.1.2-6.2 10.2c-.2.3-.2.7-.1 1.1.2.3.5.6.8.6l4.5.6-3.6 9.5c-.2.5 0 1 .4 1.3.2.1.4.2.6.2.3 0 .5-.1.8-.3l12.5-11.6 3.1-2.9c.3-.3.4-.8.3-1.2-.2-.4-.5-.7-1-.7l-2.3-.1-4.1-.2 4.1-5z" fill="url(#y)"/><path d="M77.3 148.2c-.5 1.6-2.3 2.8-5.6 3.7-3.5.9-6 .8-7.5-.3-.2-.2-.4-.3-.6-.5-1.1.7-1.6 1.7-1.3 2.4.5 1.4 3.5 2.3 9.2.9 8.2-2 9.3-4.8 9.5-5.6.1-.8-.2-1.2-.3-1.3-.5-.3-1.9-.5-3.2-.4-.1.3-.1.7-.2 1.1z" fill="#FFF"/><path d="M75.7 144.9c-.1 0-.2 0-.2.1-.4-.9-.8-1.9-1.4-3 1.3.1 2.7.1 4.1.1 13.4 0 28.1-4.3 30.4-7.7.6-.8.7-1.8.3-2.7-1.1-2.7-4.3-2.
9-9.2-3.2-5.7-.4-14.2-.9-24.5-5.2-.4-.2-.8-.3-1.1-.5 0-.1 0-.1.1-.2 0-.1.1-.2.1-.3l1.9-4.4c.2-.4.3-.9.3-1.3.5-1 .9-2 1.2-2.9.5 0 1 .1 1.5.1.7 0 1.3 0 1.8-.1s1-.2 1.3-.4c2.4-1.3 4.4-1.4 7.6-1.4 1.7 0 3.8-.1 6.5-.3 7.8-.8 12.9-6.6 12.9-10 .2-.9 3.9-3.5 6.1-5.1 4.5-3.2 6.8-4.9 6.5-6.6-.3-1.8-2.7-1.9-11.1-1.9-7.8-.1-18.4-.1-24.5-2.6-4.7-1.9-8.9-5-12.2-7.9-4-3.5-6.6-6.6-6.7-6.6 0-.1-.1-.1-.2-.1 0-.6-.2-1.5-.4-2.4-.3-1.1-1.1-1.9-1.7-2.4 1.3-2.8 2.8-5.7 4.4-8.6 2.5-1.4 4.9-2.8 7-4.4C89.2 50.6 98 41.8 98 31.6c0-10.4-9.4-19.4-22.3-21.6-6.1-4.1-13.5-6.4-20.9-6.4-3.8 0-7.6.6-11.3 1.7-3.4 1.1-6.8 2.7-10.1 4.9-.6-.1-1.2-.1-1.8-.1h-1.2c-2 0-4.1.2-6.1.6-1.6-.6-3.3-.9-5-.9-1.4 0-2.9.2-4.3.7-7.5 2.4-11.7 10.4-9.3 17.9.3 1 .7 1.9 1.3 2.9.8 3.2 2.8 6.1 5.7 8.5-.7 2.9-1 5.7-1 8.4.2 11.8 8.5 18.3 23.3 18.3 1.9 0 3.8-.1 5.9-.3-.3.3-.5.7-.7 1-.3-.1-.6-.2-.9-.2-.5 0-1.1.2-1.5.6l-3.3 3c-.3.3-.6.7-.7 1.1C22 79.9 15.1 89.3 13.2 99.8c-1 5.2-.4 9.6.4 12.6-.3.8-.3 1.7 0 2.5l3.7 9.6c-.2 2.1.8 4.2 2.7 5.4.8.5 1.7.
8 2.7.8.9 3 2.1 5.6 3.7 7.8.6 3.6 1.2 6.5 1.9 8.9-1.4.4-2.5 1.3-3.1 2.3-.4.7-.6 1.5-.5 2.3.1.4.3 1.2.9 1.9 3.4 5.5 7 11.8 7.1 12.9 0 .4-.2 1.1-.3 1.9-.5 2.4-1.1 5.5-.3 7.3.4 1.1 1.8 1.6 3.8 1.6h.5c3.2-.1 8.6-1.8 9.9-6 1.4-4.1 1.2-15.5 1.1-20.3v-1.2-.9-.1-.1c0-.1 0-.2-.1-.3v-.1c-.1-.3-.2-.6-.4-.8.8 0 1.6.1 2.4.1 3.7 0 7.5-.5 11.2-1.5.9 1.1 1.7 2.1 2.4 3.1-1.2.8-2 1.8-2.3 2.9-.2.7-.2 1.4 0 2.1 0 .1-.1.1-.1.2-.1.4 0 .8.2 1 4.2 5.2 8.7 11.3 9 12.4 0 .4-.1 1.1-.2 1.9-.3 2.5-.7 5.6.3 7.3.6 1.1 2.1 1.4 3.5 1.4.6 0 1.1-.1 1.6-.1 4-.5 8.5-2.8 9.5-6.5.7-2.6.5-8 .2-12.9.9-.5 1.8-1.3 2.2-2.4 1.6-4.2 0-7.3 0-7.4-.1-.2-.3-.3-.5-.3s-.4.1-.5.3c-.4.9-1 2.3-1.8 3.3-.2-1.9-.4-3.1-.4-3.3.2-1.6-.5-2.8-1.3-3.3l-.6-.3c-2.3-1.2-5.3-.9-6-.9zm5.7 13.8c-.3.1-.5.4-.4.7.1.3.4.5.7.4 0 0 .1 0 .3-.1.3 4.5.4 9.2-.2 11.4-.5 1.9-2.6 3.5-5.6 4.4-2.6.8-4.6.6-4.9.3-.6-1.1-.3-4.1 0-5.9.1-.6.1-1.1.2-1.5.7.2 1.3.3 1.9.3 1.7 0 2.8-.7 2.9-.8.3-.2.3-.5.2-.8-.2-.3-.5-.3-.8-.2 0 0-1.8 1.1-4.3.2-.6-1.8-3.6-6-6.8-10 .6.1 1.2.1 1.
9.1 1.5 0 3.3-.2 5.6-.8 4.9-1.2 7.7-2.7 9.3-4.2 0 .4.1.9.2 1.5-1.2.4-2.8.9-3.4 2.8-.7 2.4.8 4.1.9 4.2.1.1.3.2.4.2.1 0 .3 0 .4-.1.2-.2.2-.6 0-.8 0-.1-1.2-1.3-.6-3.1.4-1.4 1.6-1.8 2.8-2.1.2-.1.3-.1.5-.2 0 .1 0 .1.1.2.1.2.3.3.5.3.1 0 .2 0 .3-.1.6-.4 2.5-1.6 2.6-2.8 0-.3-.2-.6-.5-.6h-.1c.2-.3.3-.6.5-.9.3 1.2.4 3-.4 5.2-1.1 2-4.2 2.8-4.2 2.8zm-.8-11.2c.1.1.5.5.3 1.3-.1.8-1.2 3.6-9.5 5.6-5.7 1.4-8.7.5-9.2-.9-.2-.7.2-1.7 1.3-2.4.2.2.3.3.6.5 1.5 1 4 1.1 7.5.3 3.3-.8 5.1-2 5.6-3.7.1-.4.1-.8.1-1.1 1.4 0 2.8.1 3.3.4zM69.1 76c3.5 3.5 9.4 8.6 16.3 11.4 6.5 2.7 17.4 2.8 25.4 2.8 3.4 0 7.1 0 8.6.3-.9 1-3.5 2.9-5.3 4.2-2.7 1.9-4.7 3.3-5.8 4.6-9.9 1.2-15.8-1.2-15.9-1.2-.3-.1-.6 0-.7.3-.1.3 0 .6.3.7.2.1 4 1.6 10.8 1.6 1.4 0 3-.1 4.6-.2-.2.4-.3.7-.3 1.1 0 2.1-4.1 7.1-10.9 7.8-2.6.3-4.5.3-6.3.3-3.3.1-5.7.1-8.6 1.7-.5.3-1.5.4-2.8.3.3-1.1.5-1.8.5-1.8 1.7-8.1 1.1-20.1-9.9-33.9zM44.8 64.2c11.7-2.2 18.6-5 22-6.8-1.2 2.2-2.5 4.8-3.8 7.5h-.3c-.2 0-.5 0-.7.1-.1 0-7.6 2.5-13.9 2.9-.7 0-1.3.1-2 .1-1.7 0-3-.1-4-.
3.9-1.3 1.8-2.4 2.7-3.5zm3.7 11.9c-1 0-2.1 0-3.2-.1-8.5-.8-9.7-4.1-9.7-4.1l1.9-1.7 1.4-1.3s2.1 1.2 7.2 1.2c.6 0 1.3 0 2.1-.1 6.7-.4 14.5-3 14.5-3s1.1.5 1.7 1.4c.1.1.1.3.2.4.4 1.2.4 2.6.4 2.6s-6.1 4.7-16.5 4.7zM34.7 63.9h-2.3c-.6 0-1.3-.1-1.9-.1h-.3c-.5-.1-1.1-.1-1.6-.2-.1 0-.2 0-.4-.1-.6-.1-1.1-.2-1.7-.3-.1 0-.2-.1-.3-.1-.5-.1-1-.3-1.4-.4-.1 0-.2 0-.2-.1l-1.5-.6c-.1 0-.2-.1-.3-.1-.5-.2-.9-.4-1.3-.7h-.1c-.4-.2-.9-.5-1.3-.8-.1-.1-.2-.1-.3-.2l-1.2-.9-.1-.1-.9-.9c-.1-.1-.1-.2-.2-.2-.3-.4-.6-.7-.9-1.1-.1-.1-.1-.2-.1-.2-.2-.4-.5-.7-.7-1.1 0-.1-.1-.2-.1-.3-.2-.4-.4-.9-.6-1.4 0-.1-.1-.2-.1-.3-.2-.5-.3-.9-.4-1.4 0-.1 0-.1-.1-.2-.1-.5-.2-1.1-.3-1.7V50c-.1-.6-.1-1.2-.1-1.8v-2-.5c0-.7.1-1.3.2-2s.2-1.4.4-2.1c0-.1.1-.3.1-.4.1-.3.1-.6.2-.8.8-3.1 3-6.2 3-6.3.2-.3.1-.6-.1-.8-.1-.1-.3-.1-.5-.1-.1 0-.2.1-.3.2 0 .1-.7 1-1.4 2.3-.4.8-.9 1.7-1.3 2.7 0 0-.1 0-.1-.1l-.3-.3c-.3-.2-.5-.5-.8-.7l-.3-.3c-.2-.3-.5-.5-.7-.8-.5-.5-.9-1.1-1.2-1.7-.1-.2-.2-.4-.3-.5-.1-.2-.3-.5-.4-.7l-.3-.6c-.1-.2-.2-.5-.3-.7-.1-.2-.
2-.5-.2-.7-.1-.2-.1-.4-.2-.7-.2-.4-.5-.8-.6-1.2 0 0 0-.1-.1-.1-.2-.4-.4-.9-.5-1.3-.5-1.6-.6-3.1-.5-4.7.1-1.2.4-2.4.8-3.5.7-1.8 1.9-3.4 3.4-4.7.6-.5 1.2-1 1.9-1.3.7-.4 1.4-.7 2.2-1 .4-.1.7-.2 1.1-.3.1 0 .2 0 .3-.1.2 0 .5-.1.7-.1H19.4c1.7 0 3.3.4 4.8 1l1.5-.3h.2c.7-.1 1.4-.2 2.1-.2.4 0 .7-.1 1.1-.1h2.5c.2 0 .5 0 .7.1-.8.7-2.1 1.8-3.9 3.7-.9.9-1.8 2.1-3 3.4-.2.2-.2.5 0 .7l.1.1c.1.1.2.1.4.1s.3-.1.4-.2c5.3-6.5 7.6-7.7 7.7-7.7.8-.6 1.6-1.1 2.4-1.6.5-.3 1.1-.6 1.6-.9 2-1.1 4-2 6.1-2.6 3.6-1.1 7.2-1.6 10.6-1.6 7.6 0 14.5 2.4 20.1 6.3h.2c2.1.3 4.1.9 6 1.6.6.3 1.6.8 2.6 1.6 2.7 2 5.9 5.7 5.2 12-1.1 9.6-11.2 9.9-11.6 9.9-.1 0-.3.1-.4.1-5-.2-8.6-3.1-10.3-7.2-.5-1.9-.1-3.3-.1-3.5.1-.3-.1-.6-.4-.7-.3-.1-.6.1-.7.4 0 .2-.9 3.8 1.7 7.5 1.8 3.4 5.5 5.9 9.8 6.2 5.3.4 10-2.3 12-6.6.2-.1.3-.2.4-.4 1.7-3.3 2.2-6.2 2-8.7-.2-2.1-.8-4-1.7-5.6l.8.8c.4.4.8.9 1.2 1.3.5.5.9 1.1 1.3 1.7l.9 1.5c.2.4.5.9.7 1.4.8 1.9 1.3 4 1.3 6.2 0 1.8-.3 3.5-.9 5.1-.2.5-.4 1.1-.7 1.6-2.5 5.2-7.7 9.4-14.5 11.6-1 .3-2.1.6-3.2.8-4.9
.7-9.5-1.7-9.5-1.7-.3-.1-.6 0-.8.2-.1.3 0 .6.2.8.2.1 3.5 1.8 7.7 2-1.6 1.1-3.2 2.1-4.9 3.1-.1 0-.2 0-.3.1 0 0-.2.2-.7.5-.1.1-.2.1-.4.2-2.5 1.4-9.6 4.9-23.1 7.5-.5.1-1 .2-1.5.2-.1 0-.3 0-.4.1l-2.4.3h-.4c-.8.1-1.6.1-2.4.2h-.4c-.8 0-1.6.1-2.4.1v-.8zm9.2 106.6c-.9 2.8-4.7 3.9-5.8 4.2-2.5.6-4 .2-4.2 0-.5-1.2.1-4.2.4-6l.3-1.5c.8.3 1.5.4 2.1.4 1.4 0 2.3-.5 2.3-.6.3-.2.3-.5.2-.8-.2-.3-.5-.3-.8-.2 0 0-1.7 1-3.8-.1-.4-1.9-3.1-6.6-5.5-10.6 1.1.2 2.4.4 4 .4.6 0 1.2 0 1.9-.1 5.1-.3 8.1-1.4 9.8-2.7.2 5.6.1 14.4-.9 17.6zm.7-21.7c.1.1.3.6.1 1.2-.3.7-1.8 3.2-9.8 3.7-5.5.4-8.2-1-8.4-2.3-.1-.7.5-1.5 1.6-2 .1.2.3.4.4.6 1.2 1.2 3.6 1.8 7 1.5 3.2-.2 5.2-1 5.9-2.5.2-.3.3-.7.3-1 1.3.1 2.5.4 2.9.8zm16.2-5.3l-1.2.3c-.1 0-.3.1-.4.1-.3.1-.6.2-.9.2-.2 0-.3.1-.5.1-.3.1-.6.1-.9.2-.2 0-.3.1-.5.1-.3.1-.6.1-1 .2-.1 0-.3.1-.4.1-.4.1-.8.1-1.1.2h-.3c-1 .1-2 .2-3.1.3H49h-.1-.1c-1.5 0-3.1-.1-4.7-.3h-.2c-.8-.1-1.6-.2-2.4-.4h-.2l-2.4-.6v.1c-3.9-1.1-5.3-2.6-5.4-2.6-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.1.1 1.8 1.8 6.2 3v.1c0 1 .1
2 .1 3-.5.3-1.6.7-3.6.8-2.5.2-3.9-.1-4.7-.5-.9-2.6-1.7-6.2-2.3-9.8v-.1c-.1-.3-.1-.6-.2-1 0-.2-.1-.4-.1-.6-.9-1.2-1.7-2.5-2.3-3.9 0-.1-.1-.1-.1-.2-.3-.6-.5-1.2-.7-1.8-2.5-7.9-.5-19.1-.5-19.2.1-.3-.1-.6-.5-.6-.3-.1-.6.1-.6.5 0 .1-.2 1.1-.4 2.7-.5-.3-1-.6-1.4-.8-.9-.6-1.7-1-1.9-1.1-.3-.1-.6.1-.7.3v.1c-.1.3.1.5.3.6.2.1 2 1.1 3.6 2.1-.1 1-.2 2.1-.2 3.3v.7l-1.4-1.7-1.1-1.3c-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8l1 1.2 2 2.5.1.1.2.2c0 2.1.1 4.4.5 6.6h-.8-.1c-.2 0-.5-.1-.7-.1h-.1c-.2-.1-.5-.2-.7-.3-.9-.6-1.5-1.5-1.6-2.5v-.1-.5-.1-.3-.3l-3.9-10.1c0-.1-.1-.2-.1-.3v-.1-.2-.1c0-.1 0-.1.1-.2v-.1c.1-.1.1-.2.2-.3-.8-2.8-1.5-7.1-.6-12.4 1.1-5.8 3.8-11.3 8.2-16.4 2.9-3.4 6.5-6.6 10.9-9.7.7 1 2.1 2.3 5 3.3 1.5.5 3.5 1 6 1.2 1.1.1 2.2.1 3.2.2h.2c2.4 0 4.6-.2 6.5-.6.4.5 1.1 1.2 2 2.4-2.7 9.6-2.5 18.7-1 26.8v.1c.1.6.2 1.2.4 1.8 0 .2.1.4.1.6.1.4.2.9.3 1.3.1.3.1.5.2.8.1.3.2.6.2.9.1-.1.2-.2.3-.2.2-.1.5-.2.7-.3h.2c.2 0 .4-.1.5-.1h.2c.2 0 .5 0 .7.1h.1c.3.1.5.2.7.3.1 0 .1.1.2.1.2.1.3.2.5.4l.2.2c.2.2.4.4.5.7.3.5.4
1 .4 1.6.7-.2 1.5-.4 2.3-.5.1-.2.2-.5.4-.7 0-.1.1-.1.1-.1.1-.2.3-.4.5-.6.1-.2.4-.6.7-1.2.1-.2.2-.5.4-.7 2.1-4.5 5.1-16.4-9.3-32-.6-.8-1.1-1.4-1.5-1.8 3.1-.7 5.6-1.7 7.3-2.6.5-.2.9-.4 1.2-.6 4.6 5.2 9.2 11.8 11.3 19.4 1.4 4.9 1.8 10.2.6 15.7 0 0-.1.5-.3 1.3-.4 1.4-1.1 3.6-2.2 5.6v.5c0 .1 0 .2-.1.3l-2.7 6.2c-.4.8-1 2.1-1.4 3.1-.1.3-.2.6-.3.8 0 .2-.1.3-.1.4 0 .1-.1.6-.4 1.1-.3.4-.7.9-1.3 1.3-.3.2-.6.3-.9.4h-.3c-.3 0-.5 0-.8-.1-.2-.1-.3-.1-.5 0-1.8-.6-2.1-2.4-2.1-2.5 0-.3-.2-.4-.5-.5h-.1c-.3 0-.5.3-.5.6.1.8.7 2.4 2.3 3.2-.1.5.2 1.1.7 1.3.5.2 1 .3 1.5.3.8 0 1.7-.2 2.5-.7 1.5-.9 2.6-2.6 2.7-3.6.1-.4.6-1.9 1.3-3.5.4.2.8.3 1.2.5 8.5 3.5 15.9 4.6 21.4 5.1h.2c6.3.5 10.2.3 10.9 2.1V133.5c0 .1 0 .1-.1.2 0 0 0 .1-.1.1 0 .1-.1.1-.1.2l-.1.1-.2.2-.1.1c-.1.1-.2.2-.3.2 0 0-.1 0-.1.1-.2.1-.3.2-.5.3-.1 0-.1.1-.2.1-.1.1-.3.2-.4.2-.1 0-.2.1-.2.1-.1.1-.3.1-.4.2-.1 0-.2.1-.3.1-.2.1-.3.1-.5.2-.1 0-.2.1-.3.1-.2.1-.4.2-.6.2-.1 0-.2.1-.2.1l-.9.3c-.1 0-.1 0-.2.1-.3.1-.5.2-.8.3-.1 0-.2.1-.4.1-.2.1-.5.1-.7.2-.1 0
-.3.1-.4.1-.2.1-.5.1-.7.2-.1 0-.3.1-.4.1-.3.1-.5.1-.8.2-.1 0-.3.1-.4.1l-1.2.3h-.1l-1.2.3c-.1 0-.3.1-.4.1-.3.1-.6.1-.9.2-.2 0-.3.1-.5.1-.3.1-.6.1-.9.2-.2 0-.4.1-.5.1-.3.1-.6.1-.9.1-.2 0-.3.1-.5.1-.4.1-.8.1-1.1.2h-.3c-.5.1-1 .1-1.4.2h-.4c-.3 0-.7.1-1 .1h-.5c-.3 0-.6.1-1 .1h-.6c-.3 0-.6 0-1 .1h-6c-.5 0-.9 0-1.4-.1h-.6c-.4 0-.9-.1-1.3-.1-.2 0-.4 0-.6-.1-.2 0-.4-.1-.6-.1-1.5-2.5-2.6-4.3-2.6-4.3-.2-.3-.5-.4-.8-.2-.3.2-.4.5-.2.8 0 0 1.6 2.7 3.7 6.1.9 1.7 1.7 3.3 2.2 4.7l.6 1.8c-.6.4-1.6.9-3.3 1.3-2.8.7-4.4.6-5.3.3-1.4-2.6-3.1-4.9-4.6-6.8zm3.7-32c-.1.1-.1.2-.2.3l-.3.3c-.2-.3-.5-.6-.7-.9l1.2.3zm1-2c-2.4-.6-4.8-1.2-7-1.8-1.7-8.3-1.7-16.4 0-24.2 10.1 12.4 8.6 21.7 7 26z" fill="url(#z)"/><path d="M35 155.9c-.7 0-1.3.1-1.9.1-1.6 0-3-.2-4-.4 2.4 4 5 8.7 5.5 10.6 2.2 1.1 3.8.1 3.8.1.3-.2.6-.1.8.2.2.3.1.6-.2.8-.1 0-1 .6-2.3.6-.6 0-1.3-.1-2.1-.4-.1.4-.2.9-.3 1.5-.3 1.8-.9 4.8-.4 6 .2.2 1.8.5 4.2 0 1.1-.3 4.8-1.3 5.8-4.2 1.1-3.2 1.1-12 1-17.3-1.8 1-4.7 2-9.9 2.4z" fill="url(#A)"/><path d="M41.5 148.8
c-.8 1.5-2.7 2.3-5.9 2.5-3.4.2-5.8-.3-7-1.5-.2-.2-.3-.4-.4-.6-1.1.5-1.7 1.3-1.6 2 .2 1.4 2.9 2.7 8.4 2.3 8-.5 9.5-2.9 9.8-3.7.2-.6 0-1.1-.1-1.2-.4-.4-1.6-.7-2.8-.9-.1.5-.2.8-.4 1.1z" fill="#FFF"/><path d="M85.3 156c.8-2.2.7-4.1.4-5.2-.1.3-.3.6-.5.9h.1c.3 0 .5.3.5.6-.2 1.1-2.1 2.4-2.6 2.8-.1.1-.2.1-.3.1-.2 0-.4-.1-.5-.3 0-.1-.1-.1-.1-.2-.2.1-.3.1-.5.2-1.1.4-2.3.7-2.8 2.1-.6 1.7.6 3 .6 3.1.2.2.2.6 0 .8-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-1.6-1.8-.9-4.2.6-1.9 2.2-2.4 3.4-2.8-.1-.5-.1-1-.2-1.5-1.6 1.5-4.4 3-9.3 4.2-2.3.6-4.1.8-5.6.8-.7 0-1.3-.1-1.9-.1 3.2 4.1 6.2 8.2 6.8 10 2.5 1 4.3-.2 4.3-.2.3-.2.6-.1.8.2.2.3.1.6-.2.8-.1 0-1.2.8-2.9.8-.6 0-1.2-.1-1.9-.3 0 .4-.1 1-.2 1.5-.2 1.8-.6 4.8 0 5.9.3.3 2.3.5 4.9-.3 3-.9 5.1-2.6 5.6-4.4.6-2.2.5-6.9.2-11.4-.2 0-.3.1-.3.1-.3.1-.6-.1-.7-.4-.1-.3.1-.6.4-.7.3-.1 3.4-.9 4.2-2.8z" fill="url(#B)"/></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_private.svg b/browser/extensions/onboarding/content/img/figure_private.svg
deleted file mode 100644
index f90163e4b4d7..000000000000
--- a/browser/extensions/onboarding/content/img/figure_private.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="289" height="237" viewBox="0 0 289 237" xmlns="http://www.w3.org/2000/svg"><title>private-browsing</title><defs><linearGradient x1="12.376%" y1="17.359%" x2="82.943%" y2="91.352%" id="a"><stop stop-color="#E60024" offset="0%"/><stop stop-color="#ED00B5" offset="51.53%"/><stop stop-color="#8000D7" offset="100%"/></linearGradient><linearGradient x1="-3.914%" y1=".14%" x2="98.417%" y2="106.522%" id="b"><stop stop-color="#E60024" offset="0%"/><stop stop-color="#ED00B5" offset="51.53%"/><stop stop-color="#8000D7" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-30-29h352v303H-30z"/><g fill-rule="nonzero"><g><ellipse fill="#EDEDF0" cx="226.9" cy="229.8" rx="54.2" ry="6.7"/><g fill="#D7D7DB"><path d="M195.6 79.5h-76.5c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h76.5c.6 0 1.1.5 1.1 1.1 0 .6-.4 1.1-1.1 1.1zM148.7 73.8h-19.2c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h19.2c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zM260.7 84.5h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0
.6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.3 0h-13.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-23.4 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.3 0h-13.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-23.4 0H177c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.2 0h-13.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6z"/></g><g transform="translate(171 26)"><path d="M31.5 4.5c0 .1 0 .1-.1.2l-3.7.6-2.3.4c-.1 0-.1 0-.2-.1l-.7-4.2c0-.1 0-.1.1-.2l6-.9c.1 0 .1 0 .2.1l.7 4.1z" fill="#D7D7DB"/><path d="M35 26.7L5.2 31.4c-.8.1-1.5-.4-1.7-1.2L.2 9.2c-.1-.8.4-1.5 1.2-1.7l29.8-4.7c.8-.1 1.5.4 1.7 1.2l3.3 21c.1.8-.4 1.5-1.2 1.7z" fill="#D7D7DB"/><path d="
M32.1 9.4s-.1.1 0 0l-4.8.8h-.1l-.3-1.9s0-.1.1-.1l4.7-.7h.1l.3 1.9z" fill="#F9F9FA"/><circle transform="rotate(-8.946 119.14 -7.38)" cx="2.592" cy="2.794" r="1.7" fill="#F9F9FA"/><circle transform="rotate(-8.946 52.95 -31.036)" cx="11.1" cy="10.705" r="9.3" fill="#F9F9FA"/><path d="M17.2 10.9c-3.2.5-5.4 3.5-4.9 6.7s3.5 5.4 6.7 4.9 5.4-3.5 4.9-6.7c-.5-3.3-3.5-5.4-6.7-4.9z" fill="#D7D7DB"/><circle fill="#F9F9FA" transform="rotate(-8.946 19.487 14.795)" cx="19.487" cy="14.795" r="1.1"/></g><g transform="translate(46)"><path d="M30.4 4.8c0 .1 0 .1-.1.1l-3.6.3-2.2.2c-.1 0-.1 0-.1-.1L24 1.2c0-.1 0-.1.1-.1l5.8-.5c.1 0 .1 0 .1.1l.4 4.1z" fill="#D7D7DB"/><path d="M32.3 26.2L3.5 28.7c-.8.1-1.4-.5-1.5-1.3L.2 7.1c-.1-.8.5-1.4 1.3-1.5l28.8-2.5c.8-.1 1.4.5 1.5 1.3l1.8 20.3c0 .7-.6 1.4-1.3 1.5z" fill="#D7D7DB"/><path d="M30.6 9.4c0 .1 0 .1 0 0l-4.7.5c-.1 0-.1 0-.1-.1l-.2-1.9s0-.1.1-.1l4.6-.4c.1 0 .1 0 .1.1l.2 1.9z" fill="#F9F9FA"/><circle transform="rotate(-4.97 187.782 -12.435)" cx="2.497" cy="2.6
01" r="1.7" fill="#E1E1E6"/><circle transform="rotate(-4.97 70.888 -67.624)" cx="9.799" cy="10.501" r="8.9" fill="#F9F9FA"/><path d="M16.3 9.9c-3.1.3-5.4 3-5.1 6.1.3 3.1 3 5.4 6.1 5.1 3.1-.3 5.4-3 5.1-6.1-.3-3.1-3-5.4-6.1-5.1z" fill="#D7D7DB"/><circle fill="#F9F9FA" transform="rotate(-4.97 18.195 13.8)" cx="18.195" cy="13.8" r="1"/></g><path d="M170.8 55.2h24.5s-7.7-17.2 8.6-19.4c14.5-2 20.3 13 20.3 13s1.7-8.6 10.4-7c8.5 1.6 14.8 15.3 14.8 15.3h21.4" fill="#F9F9FA"/><path d="M271.2 53.1h-8.6c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h8.6c.3 0 .6.2.6.6 0 .3-.3.6-.6.6zm-18.6 0h-1.1c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6-.1.3-.3.6-.6.6zm-56.9-.7h-2.2c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.4c0-.1-.1-.2-.1-.3-.1-.3 0-.6.3-.7.3-.1.6 0 .7.3.2.6.4 1 .4 1 .1.2.1.4 0 .5-.1.3-.3.4-.5.4zm-11.1 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm63.8-1.8c-.2 0-.4-.1-.5-.3-.6-1-1.2-1.9-1.9-2.7-.2-.2-.1-.6.1-.8.2-.2.6-.1.8.1.7.9 1.3 1.8 1.9 2.8.2.3.1.6-.2.8 0 .1-.1.1-.2.1zm-5
4.2-3.5c-.3 0-.5-.2-.5-.5-.1-.4-.1-.7-.2-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.2 1.1 0 .2-.2.5-.6.6zm28.8-4.2c-.2 0-.4-.1-.5-.3l-.6-.9c-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.3.4.7.6 1 .2.3.1.6-.2.8-.1-.1-.2 0-.3 0zm17.3-1.4c-.1 0-.2 0-.3-.1-1.7-1.2-3.4-2-5.1-2.4-.7-.1-1.4-.2-2-.2-1.8 0-3.3.5-4.6 1.5-.2.2-.6.2-.8-.1-.2-.2-.2-.6.1-.8 1.5-1.2 3.3-1.8 5.3-1.8.7 0 1.5.1 2.2.2 1.8.4 3.7 1.2 5.6 2.5.2.2.3.5.1.8-.1.3-.3.4-.5.4zm-20.7-3.1c-.1 0-.3-.1-.4-.2-.8-.8-1.6-1.5-2.4-2.1-.2-.2-.3-.5-.1-.8.2-.2.5-.3.8-.1.9.7 1.8 1.4 2.6 2.3.2.2.2.6 0 .8-.2.1-.3.1-.5.1zm-23.1-1.8c-.1 0-.3 0-.4-.2-.2-.2-.2-.6 0-.8 1.8-2 4.6-3.2 8.2-3.7 1.6-.2 3.2-.2 4.7-.1.3 0 .5.3.5.6s-.3.5-.6.5c-1.4-.2-2.9-.1-4.5.1-3.3.5-5.9 1.6-7.5 3.4-.1.1-.2.2-.4.2z" fill="#D7D7DB"/><path d="M271.9 57.4H170.8c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1H272c.6 0 1.1.5 1.1 1.1-.1.6-.6 1.1-1.2 1.1z" fill="#F9F9FA"/><g><path d="M26.5 27h13.7s-4.3-9.5 4.8-10.8c8.1-1.1 11.3 7.2 11.3 7.2s1-4.8 5.8-3.9c4.7.9 8.2 8.5 8.2 8.5h11.9" fill="#F9F9FA"/><pat
h d="M40.3 25.5H26.9c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm41.5-.2h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-19.6-3.4c-.2 0-.4-.1-.5-.4 0 0-.1-.4-.4-.9-.1-.3 0-.6.2-.8.2-.1.4-.1.6 0 .7-1.5 2.2-3.2 4.7-3.2.4 0 .8 0 1.3.1 1.4.3 2.9 1 4.3 2.2.2.2.3.6.1.8-.2.2-.6.3-.8.1-1.3-1.1-2.5-1.7-3.8-2-.4-.1-.7-.1-1.1-.1-3.3 0-4 3.4-4 3.5 0 .2-.2.4-.4.4-.1.3-.1.3-.2.3zm-16-4.8c-.1 0-.2 0-.3-.1-.3-.2-.3-.5-.1-.8.7-1 1.7-1.7 2.9-2.1.3-.1.6 0 .7.3.1.3 0 .6-.3.7-1 .4-1.8 1-2.4 1.7-.2.3-.4.3-.5.3zm8.1-2.3h-.1c-.3-.1-.7-.1-1-.1-.3 0-.5-.3-.5-.6s.3-.5.6-.5c.4 0 .8.1 1.2.2.3.1.5.4.4.7-.1.1-.3.3-.6.3z" fill="#D7D7DB"/><path d="M83 29.3H26.7c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1H83c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z" fill="#F9F9FA"/></g><g><path d="M6.5 172.2c-2.8 0-5-2.1-5-4.8v-118c0-2.9 2.4-5.3 5.3-5.3h126.7c2.9 0 5.3 2.4 5.3 5.3v118c0 2.6-2.3 4.8-5 4.8H6.5z" f
ill="#FFF"/><path d="M133.5 45.1c2.3 0 4.2 1.9 4.2 4.2v118c0 2-1.8 3.7-3.9 3.7H6.5c-2.2 0-3.9-1.6-3.9-3.7V49.4c0-2.3 1.9-4.2 4.2-4.2h126.7v-.1zm0-2.2H6.8c-3.6 0-6.5 2.9-6.5 6.5v118c0 3.3 2.8 5.9 6.2 5.9h127.3c3.4 0 6.2-2.6 6.2-5.9v-118c0-3.6-2.9-6.5-6.5-6.5z" fill="#D7D7DB"/><path d="M133.1 66.2v99.1c0 1-.1 1.2-.1 1.2s-.3.1-1.2.1H8.5c-1 0-1.2-.1-1.2-.1s-.1-.3-.1-1.2V66.2h125.9zm1.2-1.1H6.1v100.2c0 2.1.4 2.5 2.5 2.5h123.3c2.1 0 2.5-.4 2.5-2.5V65.1h-.1z" fill="#D7D7DB"/><g fill="#D7D7DB"><circle cx="3.6" cy="3" r="2.9" transform="translate(10 52)"/><circle cx="2.9" cy="3" r="2.9" transform="translate(20 52)"/><path d="M102 58.3H38.3c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1H102c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1z"/><g><circle cx="3.5" cy="3" r="2.9" transform="translate(114 52)"/><circle cx="3.7" cy="3" r="2.9" transform="translate(123 52)"/></g></g><path d="M88.2 127.5c-7.2 0-12.1-8.6-19-8.6s-12.2 8.6-19 8.6c-8.8 0-15.4-8.3-15.5-22.6-.1-8.9 2.6-11.7 14.1-11.7s14.8
4.7 20.4 4.7c5.6 0 8.9-4.7 20.4-4.7 11.5 0 14.1 2.8 14.1 11.7-.1 14.3-6.7 22.6-15.5 22.6zm-33.8-23.4c-7 .3-9.8 4.4-9.8 5.5 0 1 4.6 3.9 9.1 3.9s9.8-1.7 9.8-3.1c.1-1.7-2.5-6.6-9.1-6.3zm29.6 0c-6.6-.3-9.1 4.6-9.1 6.2 0 1.5 5.3 3.1 9.8 3.1 4.5 0 9.1-2.9 9.1-3.9 0-.9-2.8-5.1-9.8-5.4z" fill="#D7D7DB"/></g></g><path d="M215.6 218.3c.2.5.4.9.6 1.4.4.9.8 1.6 1.2 2.2-.4-.6-.7-1.4-1.2-2.2-.2-.5-.4-.9-.6-1.4z" fill="#FFF"/><g transform="translate(78 151)"><ellipse fill="#EDEDF0" cx="25.2" cy="77.6" rx="21.9" ry="4.3"/><circle fill="#D7D7DB" cx="24.7" cy="37.4" r="6.9"/><path d="M30.2 80.7c-.6 0-1-.4-1.1-1l-4.6-39.3c-4.8 15.4-10.8 34.9-11 36.3 0 .6-.5 1.1-1.1 1.1-.6 0-1.1-.5-1.1-1.2 0-1.3 8.8-29.7 12.7-41.9.2-.5.7-.8 1.2-.8s.9.5 1 1l5.3 44.5c.1.6-.4 1.2-1 1.2-.2.1-.3.1-.3.1z" fill="#D7D7DB"/><path d="M35 75.4c-.5 0-1-.3-1.1-.8L23.8 35.3c-.2-.6.2-1.2.8-1.4.6-.2 1.2.2 1.4.8L36.1 74c.2.6-.2 1.2-.8 1.4H35zM38.9 5.7c0 .1 0 .2-.1.2l-4.6.9-2.8.6c-.1 0-.2 0-.2-.1l-1-5.3c0-.1 0-.2.1-.2L37.7.3c.1 0 .2 0 .
2.1l1 5.3z" fill="#D7D7DB"/><path d="M44.4 33.2l-37 7.3c-1 .2-1.9-.4-2.1-1.4L.1 13c-.2-1 .4-1.9 1.4-2.1l37-7.3c1-.2 1.9.4 2.1 1.4l5.2 26.1c.2 1-.4 1.9-1.4 2.1z" fill="#D7D7DB"/><path d="M39.5 9.7c0 .1 0 .1-.1.1L33.5 11c-.1 0-.1 0-.2-.1l-.6-3.2c0-.1 0-.1.1-.1l5.9-1.2c.1 0 .1 0 .2.1l.6 3.2z" fill="#F9F9FA"/><circle transform="rotate(-11.21 127.568 -5.075)" cx="3.292" cy="3.304" r="2.2" fill="#F9F9FA"/><circle transform="rotate(-11.21 54.056 -27.865)" cx="13.892" cy="14.489" r="11.7" fill="#F9F9FA"/><path d="M21.4 14.3c-4 .8-6.5 4.6-5.8 8.6.8 4 4.6 6.5 8.6 5.8 4-.8 6.5-4.6 5.8-8.6-.7-4-4.6-6.6-8.6-5.8z" fill="#D7D7DB"/><path d="M21.8 16.1c-2.9.6-4.8 3.4-4.3 6.4.6 2.9 3.4 4.8 6.4 4.3 2.9-.6 4.8-3.4 4.3-6.4-.6-3-3.5-4.9-6.4-4.3zm2.9 4.4c-.7.1-1.4-.3-1.6-1-.2-.7.3-1.4 1-1.6.7-.1 1.4.3 1.6 1 .2.7-.3 1.4-1 1.6z" fill="#F9F9FA"/></g><g><path d="M281 118c.4-.9 1.4-1.3 2.3-.9.2.1.4.2.5.4-.1-.2-.3-.3-.5-.4-.2-.1-.5-.2-.7-.2-.7 0-1.3.4-1.6 1.1l-.1.1.1-.1zM265.6 124.8c0 .1 0 .1.1.2h-.1.1c0-.1-.1-
.2-.1-.2zM277.6 116.2c.1-.9.9-1.7 1.8-1.6.4 0 .6.2.8.4-.2-.2-.4-.3-.8-.4h-.1c-.9 0-1.6.7-1.7 1.6 0 0 0 .5-.1 1.2.1-.7.1-1.1.1-1.2zM179.4 147.8c-.4-.1-.7-.3-1-.6.2.3.6.5 1 .6zM184.1 82.5c2.8-1.7 11.1.7 17.1 3.9 1.5.8 3.4 1.9 5.1 3.4 3-1.1 6.5-2.1 10.9-2.9 4.4-.8 8.2-1 11.4-.8 1.2-2 2.6-3.8 3.8-5.1 4.6-5.1 11.6-10.1 14.7-9.5 3.7.7 10.7 12.6 10.2 25.1l.1.1c.5-12.6-6.5-24.6-10.3-25.3-.2 0-.4-.1-.6-.1-3.5 0-9.9 4.8-14.2 9.6-1.2 1.3-2.6 3.1-3.8 5.1h-1.7c-2.8 0-5.9.2-9.5.9-4.3.8-7.9 1.8-10.8 2.9-1.8-1.4-3.7-2.6-5.2-3.4-4.6-2.5-10.6-4.5-14.4-4.5-1.2 0-2.1.2-2.8.6-3.3 2-5.8 15.5-1.1 27.1 0-.1.1-.1.1-.2-4.7-11.6-2.3-25 1-26.9zM272.8 116.3c-.5-.9-.1-2.1.8-2.5.9-.5 1.6.7 2.1 1.3.5.5.9.7 1.3 1.4-.4-.7-.8-.8-1.3-1.4-.4-.5-1-1.4-1.7-1.4-.1 0-.3 0-.4.1-.9.4-1.3 1.6-.8 2.5l1.4 2.9.6 1.3-.6-1.3-1.4-2.9zM266.8 122.7c.7-.3 1.2-.9 1.6-1.2.7-.5 2.4-.8 3.3-.6 1 .2 2 .4 2.8.8-.9-.4-1.8-.6-2.8-.8h-.5c-.9 0-2.2.3-2.8.7-.4.2-.9.8-1.6 1.1-.3.1-.6.3-.9.5.3-.2.6-.4.9-.5zM180.6 127.8c0 .3.1.6.1.9.1.6.2 1.2.4 1.7-
.1-.6-.3-1.1-.4-1.7 0-.4 0-.7-.1-.9zM183.5 110.6c0 .1-.1.1-.1.2-.1.2-.1.3-.2.5.1-.2.2-.5.3-.7zM206.3 174.4c-1.3 3.9-2.3 7.7-2.9 11.2.6-3.6 1.6-7.6 3-11.5-.1.2-.1.2-.1.3zM166.4 141.2c-.3-.4-.3-.7-.7-1.3.4.6.4.9.7 1.3zM168.8 133.7h-.2c.3 0 .6 0 .8.1-.1-.1-.4-.1-.6-.1zM171 135.2c.2-1 .6-1.3.9-2 .3-.7.6-2 1.7-1.9.5.1.9.4 1.2.8-.3-.4-.7-.7-1.2-.8h-.2c-.9 0-1.2 1.2-1.5 1.9-.4.7-.8.9-.9 2 0 .2-.1.4-.1.7 0-.3 0-.5.1-.7zM167.8 137.6c-.1-.5-.1-1.2-.2-1.8-.2-.9-.3-1.6.6-2 .1 0 .1 0 .2-.1h-.2c-.9.3-.8 1.1-.6 2 .1.7.1 1.3.2 1.9l-.1-.1c-.3-.4-.8-.6-1.3-.6h-.2c.5-.1 1.1.1 1.5.6l.1.1zM199.5 161.1l-.2.2c-.5.4-1.2.7-1.8.7-.8 0-1.6-.4-2.2-1-.1-.1-2.7-3.3-4.4-7.2-.6-1.5-1.2-3-1.7-4.4-.4.9-.8 1.7-1.4 2.4.1.3.1.6.1.9 0 .3.5 6.4 6.5 8.9 1.8.8 3.6 1.1 5.4 1.1 3.3 0 6-1.2 7.9-2.4-2.8.5-5.5.8-7.5.8h-.7zM171.2 146.5s.1 0 0 0c.1 0 0 0 0 0zM259.3 150.6c-1.4.6-3.2 1.1-5.1 1.5 1.9-.1 3.7-.5 5.4-1.3-.2-.1-.2-.2-.3-.2zM266.1 138.4c-.1-.3-.1-.6-.2-1-.2-.1-.4-.3-.6-.5 0 1.3-.1 2.6-.1 3.9-.1 2.4-.6 4.6-1 6.2 2.9-3.9 1
.9-8.4 1.9-8.6zM172.9 149.4c.1.3.3.5.5.7-.2-.2-.4-.5-.5-.7zM185 139.2l-.6.1.6-.1zM180.7 137.2c.5.1 1.2.6 1.9.6.5.1 1.2.1 1.6.7-.4-.6-1-.6-1.6-.7-.7-.1-1.4-.5-1.9-.6-.3-.1-.6-.1-.9-.1-.9 0-1.9.2-2.4.5-.6.3-1.1.6-1.6 1 .5-.4 1.1-.7 1.6-1 .8-.5 2.5-.7 3.3-.4zM165.3 137.3c.1-.1.1-.1.2-.1-.1 0-.2 0-.2.1-.6.5-.6 1.2-.1 1.9-.5-.7-.5-1.3.1-1.9zM154.9 192c0-.2.1-.3.2-.5.3-.2 4.6-3.8 12.5-6.1.1-.2.2-.3.4-.4.3-.1.6-.1.9 0 2.2-.6 4.7-1 7.5-1.3l.3-.3c.5-.3 1.1-.2 1.4.2.3 0 .7-.1 1-.1 2.2-.1 4.3 0 6.3.1.3-.2.6-.3.9-.3.1 0 .3.1.6.3 3 .2 5.6.7 7.8 1.2.4-.4 1-.4 1.4-.1 0 0 .3.2.6.6 2.7.7 4.5 1.4 5.5 1.9v-.1c-.9-.4-2.7-1.1-5.3-1.8-.4-.4-.7-.6-.7-.7-.2-.2-.5-.3-.8-.3-.3 0-.6.1-.9.4-2.1-.5-4.7-.9-7.6-1.1-.3-.3-.5-.4-.7-.4h-.2c-.3 0-.6.1-.9.3-1.2-.1-2.5-.1-3.8-.1H179c-.3 0-.6 0-.9.1-.2-.3-.6-.5-1-.5-.2 0-.4.1-.7.2-.2.1-.3.2-.4.4-2.6.2-5.1.7-7.3 1.2-.2-.1-.4-.2-.6-.2-.2 0-.3 0-.5.1s-.4.3-.5.5c-7.8 2.3-12.1 5.9-12.4 6.1.2.3.1.5.2.7-2.4 1.7-4.1 3.7-4.5 5.9-.1.5-.1 1.1-.1 1.6 0-.5 0-1 .1-1.6.5-2.2 2.2-4.2 4
.5-5.9zM246.5 220.3c.1-1.9.2-5.6.3-9.1-.1 3.4-.2 7.2-.3 9.1 0 1 0 1.8.2 2.3-.1-.6-.2-1.4-.2-2.3zM208.9 217.4c.2.5.4.9.6 1.4.4.9.8 1.6 1.2 2.2-.4-.6-.7-1.4-1.2-2.2-.2-.4-.4-.9-.6-1.4z" fill="#FFF"/><path d="M285.4 113.6c-.4-.2-.7-.3-1.1-.4-1.3-2.1-3.4-2.4-4.3-2.5h-.5c-.6 0-1.2.1-1.8.3-.8-.6-2-1.2-3.4-1.2-.8 0-1.6.2-2.4.6-.7.3-1.2.7-1.7 1.2-1.3-5.5-4.1-10.6-8.1-14.9.3-13.8-7.2-27.9-13.9-29.2-.5-.1-1-.1-1.5-.1-6 0-13.9 7-17.6 11.1-.8.9-1.9 2.2-2.9 3.6-3.1 0-6.3.4-9.6.9-3.3.6-6.4 1.3-9.3 2.3-1.4-1-2.8-1.8-3.8-2.3-4.3-2.3-11.2-5-16.5-5-2.1 0-3.8.4-5.1 1.2-5.8 3.5-8.1 19.3-3.1 32.2-2.3 5.4-3.1 11.2-2.5 16.8-.6-.3-1.2-.5-1.9-.6-.3-.1-.6-.1-.9-.1-1.4 0-3.1.5-4.5 2.4-.8 0-1.5.1-2.2.4-.8.3-2.7 1.3-3.3 3.6-.3.2-.6.4-.9.7-2.1 1.8-3 5.1-.3 8.4v.1c.2.4.5 1.1 1.1 1.9.1.1.3.4.6.7 1 1.2 1.8 2.1 2.3 2.7l.7.7.6.6c.4 1 .9 1.8 1.5 2.6.1.1.2.3.3.4.2.3.4.5.5.8 1.4 1.9 2.9 3.2 4.5 4.2 1.1 4.9 4.5 13.3 14.6 17.6 3.6 1.5 7.3 2.3 11.1 2.3h.9c-.5 1.6-.8 3.1-1.2 4.6-.1 0-.2-.1-.3-.1-.1-.1-.1-.1-.2-.1-1-.8-2.3-1
.3-3.6-1.3-.5 0-.9.1-1.4.2-1.8-.3-3.7-.6-5.6-.8-.4-.2-.9-.4-1.3-.5-.4-.1-.7-.1-1.1-.1-.6 0-1.2.1-1.8.3-1 0-1.9-.1-2.9-.1h-2.1c-.7-.3-1.4-.4-2.1-.4-1 0-2 .3-2.8.8-1.9.2-3.7.5-5.5 1h-.6c-.8 0-1.6.2-2.4.5-.4.2-.7.4-1 .6-7.9 2.5-12.4 6.2-12.9 6.6-.4.3-.8.7-1 1.2-2.8 2.3-4.5 4.9-5.1 7.7-1.3 6.3 3.3 12.9 12.1 17.4.2.4.5.9.8 1.2 1.1 1.3 2.7 2 4.3 2 .7 0 1.3-.1 1.9-.3 2.3.7 4.7 1.3 7.1 1.6l.1.1c1 .8 2.3 1.3 3.6 1.3 1.1 0 2.2-.3 3.2-.9.8 0 1.6-.1 2.4-.1 1.9-.2 3.7-.4 5.6-.8.1 0 .2.1.3.1.8.3 1.6.5 2.4.5 1.9 0 3.7-1 4.8-2.6 1.4-.5 2.7-1 4.1-1.5.6.2 1.3.3 1.9.3.9 0 1.8-.2 2.6-.6.7 2.3 1.5 4.3 2.4 6.2 2.8 5.5 4.9 8.5 8.3 8.5 1.3 0 2.6-.5 3.6-1.5 1.6-1.7 1.8-4 1.7-6.1 0-1.1-.1-2.8-.1-4.7 1.2.2 2.4.3 3.7.4 1.9.2 3.9.2 5.7.2 4.9 0 9.6-.5 13.8-1.5 0 1.6-.1 3-.1 4-.1 2.1.1 4.4 1.7 6.1.9 1 2.2 1.5 3.6 1.5 3.4 0 5.5-3 8.3-8.5 2.5-5 3.6-10.7 4.1-14.8 3-8.3.5-23.5-2.4-31.9-.7-2.1-1.5-4.2-2.2-6.2 6.1-.3 11.7-2.5 16.6-6.6 8.3-7.1 9.1-16.1 8.8-21.1 1.2-1.3 2.3-3.1 3-5.3l.3-.9c.1-.2.1-.3.2-.5.3-.9.5-1.9.7-2.
9l.5-.9.4-.8c.3-.7.8-1.8 1.5-3.2.1-.3.3-.6.3-.8.4-.9.5-1.7.5-2.1v-.1c1.5-4.3-.3-7.2-2.8-8.3z" fill="#F9F9FA"/><path d="M183.3 144.3c.3 1.5-.5 2.9-1.9 3.5-.4.2-.8.2-1.2.2h-.5c.5.1 1.1 0 1.6-.2 1.5-.6 2.3-2.1 2-3.5-.1-.7.1-1.3.4-1.8-.3.4-.5 1.1-.4 1.8zM164.1 212.7c-.2.2-.5.3-.7.3-.3 0-.6-.1-.8-.4-.3-.3-.3-.8-.2-1.2 0 0-.1 0-.1-.1-.2.4-.1 1 .2 1.3.2.3.6.4 1 .4.1.1.4 0 .6-.3.1.1.3-.1.6-.4h-.1c-.3.3-.5.4-.5.4zM176.9 215.2c-.2.3-.5.4-.9.4-.2 0-.5-.1-.7-.3-.2-.2-.3-.4-.4-.7h-.2c0 .3.2.6.4.8.2.2.5.3.8.3.5.1.9-.1 1-.5.1 0 .3-.1.4-.4h-.1c-.1.3-.2.4-.3.4zM205.9 205.9c.1 1.1.3 2.3.6 3.6-.2-1.3-.4-2.5-.6-3.6.1 0 0 0 0 0zM190.8 213.7c-.2.4-.6.7-1 .7-.2 0-.3 0-.5-.1-.3-.2-.6-.5-.6-.8h-.1c.1.4.3.7.7.9.2.1.3.1.5.1.5 0 .9-.3 1.1-.7 0-.1.2-.4.4-1h-.2c-.1.5-.2.9-.3.9zM201.6 210c-.2.4-.6.6-1 .6-.2 0-.3 0-.5-.1-.3-.2-.5-.5-.6-.9 0 0-.1 0-.1.1.1.4.3.7.6.9.2.1.4.1.6.1.5 0 .9-.2 1.1-.7 0-.1.4-.8.8-2-.1 0-.1.1-.2.1-.4 1.2-.7 1.8-.7 1.9zM271.1 131.8h-.3c-.9-.1-1.7-.6-2.3-1.3.5.7 1.3 1.2 2.3 1.3 1.7.1 3.2-1.1
3.4-2.9.1-.8-.2-1.7-.6-2.4.5.7.7 1.6.6 2.4-.1 1.7-1.5 2.9-3.1 2.9zM197.7 158.4c.1.2.2.3.2.3.2.2.2.6 0 .8-.1.1-.2.2-.4.2-.1 0-.3-.1-.4-.2 0 0-.4-.4-.8-1 .4.6.7.9.8 1 .1.1.3.2.5.2.1 0 .3 0 .4-.1.3-.2.3-.6.1-.9.6.1 1.4.2 2.3.2 3 0 7.6-.7 12-1.9l-.1-.1c-4.6 1.2-9 1.9-11.9 1.9-1.2-.1-2.1-.2-2.7-.4zM191.5 146.3c.5 1.6 1.1 3.4 1.8 5.2-.5-1.5-.9-3-1.2-4.7-.2-.1-.4-.3-.6-.5zM181.1 143.8h-1.5c-.2.4-.2.9-.1 1.4.2.4.5.6.8.6.1 0 .2 0 .3-.1.4-.2.6-.6.5-1v-.9zM244.6 151s0 .1-.1.1c6.9-.5 13.9-2.1 15.9-3.7-.1.3-.2.5-.2.5-.1.3.1.7.4.8h.2c.3 0 .5-.2.6-.4 0-.1.6-1.6 1-3.8-.5 2.1-1 3.6-1.1 3.7-.1.2-.3.4-.5.4h-.2c-.3-.1-.4-.4-.3-.7 0 0 .1-.4.3-1 0 0 0 .1-.1.1-1.3 1.7-8.3 3.5-15.9 4zM264.4 132.1c.1.2.2.5.3.7-.1-.2-.2-.4-.3-.7-.3-.6.1-1.8 0-2.5 0-.3-.1-.6-.1-.8 0 .3 0 .5.1.8.1.8-.2 1.9 0 2.5zM212.1 159.6c.3-.7.6-1.3.9-1.9-.3.6-.6 1.2-.9 1.9zM262.1 133.6c-.1.2-.2.4-.4.6.2 1.7.3 3.4.4 4.9.1-2 0-3.9 0-5.5z" fill="#FFF"/><path d="M271.1 129.6c.5 0 .9-.4 1-.8 0-.5-.2-1-.5-1.3l-1.5.5c.1.3.1.5.2.8 0 .4.3.8.8.8z"
fill="#FFF"/><path d="M196.3 184.9c-.4-.3-1-.3-1.4.1-2.2-.5-4.8-.9-7.8-1.2-.2-.2-.4-.3-.6-.3-.3-.1-.7 0-.9.3-1.9-.1-4-.1-6.3-.1-.4 0-.7 0-1 .1-.4-.4-1-.5-1.4-.2l-.3.3c-2.7.3-5.2.7-7.5 1.3-.3-.1-.6-.2-.9 0-.2.1-.3.2-.4.4-7.8 2.3-12.2 5.9-12.5 6.1-.1.1-.2.3-.2.5 0 .1 0 .2.1.3.1.1.3.2.4.2.1 0 .3 0 .4-.1.1 0 4.2-3.5 11.7-5.7.3.8 2.2 5.7.6 13.1-1.7 7.9-5.5 11.3-5.5 11.3-.1.1-.2.2-.3.4-.2.4-.1.9.2 1.2.2.3.5.4.8.4.3 0 .5-.1.7-.3l.4-.4c1.1-1.2 4.2-4.9 5.8-12.1 1.6-7.4 0-12.6-.6-14.1 2-.5 4.3-.9 6.7-1.2v.1c0 .1 3.5 5.6 2.9 15-.6 9.3-4.1 13.8-4.2 13.8-.2.3-.3.6-.2.9 0 .3.2.5.4.7.2.2.5.3.7.3.3 0 .6-.1.9-.4 0 0 .1-.2.3-.4.9-1.3 3.9-6.1 4.4-14.7.5-7.9-1.7-13.3-2.7-15.4h.4c2.1-.1 4 0 5.9.1.1.2.2.5.5.7.1.1.1.1.2.1.9.9 4.4 5 5 11.8.8 8.8-2 15.3-2.1 15.3-.1.2-.1.4-.1.6.1.4.3.7.6.8.1.1.3.1.5.1.4 0 .8-.2 1-.7 0-.1.2-.4.4-.9.8-2.2 2.6-8 1.9-15.5-.6-5.8-3-10.1-4.8-12.2 2.4.2 4.5.6 6.3 1 .1.2.2.4.4.6 0 0 4.1 3.3 5.5 9.6 1.7 7.6-.8 12.7-.8 12.8-.1.2-.1.4-.1.6 0 .4.2.7.6.9.2.1.3.1.5.1.4 0 .8-.2 1-.6 0-.1.4
-.7.7-1.8.7-2.3 1.6-6.7.3-12.5-.9-4-2.7-6.9-4.2-8.7 2.3.7 3.7 1.3 4.1 1.5 0-.5-.1-.9-.1-1.3-1-.4-2.8-1.2-5.5-1.9-.5-.5-.8-.7-.8-.7zM240.9 161.8c-2.2 1.7-5.8 3.7-11 4.4-5.7.8-10.2-.7-12.9-2.1-4.7 6.9-9.4 17.7-9.1 27.9.4 16.8 14.5 19.1 23.7 18.7 6-.3 11.7-2.4 15.5-6.7v-.1l.1-.1c2-2.3 3.4-5.1 4.1-8.6 1.9-10.3-2.7-20.6-6.9-28.5-1.1-1.9-2.3-3.6-3.5-4.9zM183.7 110.2c-.1.1-.1.2-.2.3.1 0 .2-.1.2-.3zM185.2 84.4c.3-.2.8-.3 1.5-.3 2.7 0 8.1 1.4 13.4 4.2 1.4.8 2.7 1.6 3.8 2.4-7.2 3.2-9.7 6.7-9.8 6.9-.2.3-.1.6.1.8.1.1.2.1.3.1.2 0 .3-.1.5-.2.1-.1 5.2-7.3 22.4-10.3 17.1-3 24.8 2.9 24.9 3 .2.2.6.2.8-.1.2-.2.2-.6-.1-.8-.2-.2-4-3.1-11.9-3.9.8-1.2 1.8-2.5 3-3.8 4.8-5.3 10.5-8.8 12.4-8.8h.2c2.1.4 8.4 10.1 8.4 21.3.7.5 1.4 1 2.2 1.6.5-12.5-6.4-24.3-10.2-25.1-3.2-.6-10.2 4.4-14.7 9.5-1.2 1.3-2.6 3.1-3.8 5.1-3.2-.1-7 .1-11.4.8-4.4.8-7.9 1.8-10.9 2.9-1.8-1.4-3.7-2.6-5.1-3.4-6-3.2-14.3-5.5-17.1-3.9-3.2 2-5.7 15.3-1.1 26.8.5-.8 1-1.6 1.5-2.2-3.7-10.4-1.1-21.5.7-22.6zM193.3 151.5c.1.2.2.4.3.7 1.2 2.9 3.4 5.5
4.1 6.3.6.2 1.5.3 2.6.3 2.9 0 7.3-.6 11.9-1.9-1.4-1.8-1.6-3.8-1.6-3.8v-.1c0-.1-.1-.3-.1-.4l-.1-1.2v-.4c-1.1.3-2.2.4-3.4.2l-2.5.4c-6.1 1.1-11.9-3-12.9-9l-.2-1.3h-.2c.2 1.8.5 3.8.9 5.6.3 1.6.8 3.1 1.2 4.6z" fill="#F9F9FA"/><path d="M196.3 124.7c.7-5 5.3-8.5 10.3-7.9l4.9.7c3.3.5 6 2.7 7.2 5.6 1.1-.8 2.4-1.4 3.8-1.6 1.4-.2 2.7-.2 4 .2.3-2.3 1.5-4.6 3.5-6.1l4-3c4-3.1 9.8-2.3 12.8 1.7l3.8 5 4.7-.8c.8-.1 1.6.4 1.8 1.2.1.7-.2 1.3-.8 1.6.8.6 1.4 1.7 1.7 3.3l1 5.8c1.1 6.1-3 11.9-9 12.9l-1.7.3c-1.1.4-2.3.6-3.5.6l-.5.1h-.3s0 .1.1.1l.1.1c0 .1.1.2.1.3l.2.5s.1.2.1.3l.1.4c0 .2.1.3.1.4l.1.6V148.4c0 .9-.2 1.7-.4 2.5 7.7-.5 14.6-2.3 16-3.9 0 0 0-.1.1-.1.5-1.5 1.3-4.6 1.4-7.3v-.6c0-1.6-.1-3.2-.4-4.9-.2-1.8-.6-3.6-1-5.4l-1.8.3-.5-3 1.4-.3c-.5-1.6-1.2-3.2-2.1-4.7 0-.2 0-.4-.1-.6-2.6-14.6-19.6-23.8-38-20.6-17.4 3.1-29.9 16.2-29 30l5.1-.9.7-4.2z" fill="#F9F9FA"/><path d="M210.5 150.9v-.1-.3h-.2l-3.2.6c1.1.1 2.3 0 3.4-.2zM245 144.3c1.2 0 2.3-.2 3.5-.6l-3.5.6zM229.5 159.8s.1 0 0 0z" fill="#D9EBFF"/><path d="
M43.7 146.5h-.1c-1.7.4-3.6.8-5.4 1h-.1c-.6.1-1.2.2-1.9.2-1 .1-1.9.1-2.9.1h-.9-.1c.9-1.3 3.9-6.1 4.4-14.7.5-7.9-1.7-13.3-2.7-15.4h.4c2.1-.1 4 0 5.9.1.1.2.2.5.5.7.1.1.1.1.2.1.9.9 4.4 5 5 11.8.8 8.8-2 15.3-2.1 15.3-.2.3-.2.5-.2.8zm-26.1-2.4s3.8-3.4 5.5-11.3c1.6-7.3-.2-12.3-.6-13.1-7.5 2.3-11.6 5.7-11.7 5.7-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-.1-.2-.1-.3-2.4 1.7-4.1 3.7-4.5 5.9-.1.5-.1 1-.1 1.6v.1c0 .2 0 .4.1.6v.3c0 .2.1.4.1.6 0 .1.1.2.1.3.1.2.1.3.2.5.1.1.1.3.2.4.1.1.1.3.2.4l.3.6c.1.1.1.2.2.3 2 3 5.8 5.8 10.4 7.9 0 0 .1 0 .1.1.2-.3.3-.4.4-.5zm37-2.1s2.6-5.2.8-12.8c-1.4-6.3-5.4-9.6-5.5-9.6-.2-.2-.3-.4-.4-.6-1.8-.4-3.9-.8-6.3-1 1.8 2.2 4.3 6.4 4.8 12.2.7 7.5-1.1 13.4-1.9 15.5h.2c2.9-.9 5.6-1.9 8-3.1 0 0 .1 0 .1-.1.1-.1.1-.3.2-.5zm-24.4 4.8s3.6-4.5 4.2-13.8c.6-9.4-2.9-14.9-2.9-15v-.1c-2.4.2-4.7.6-6.7 1.2.6 1.5 2.2 6.7.6 14.1-1.6 7.2-4.7 10.9-5.8 12.1h.1c3.2 1.2 6.7 2 10.2 2.3h.2c-.2-.2-.1-.5.1-.8zm108.6-96.3c.3.4.3 1.1 0 1.9-.4 1.1-.2 1.4-.5 2-.3.7-1.3 3-1.7 3.8-.1.2-.7 1.2-1.3 2.5 0 .9-.2
1.8-.5 2.7-.1.2-.1.4-.2.6l-.3.9c-.7 1.9-1.8 4-3.6 4.9.5 2.6 1.6 12.4-6.9 19.6-5.1 4.3-10.5 5.6-15.1 5.6-1.4 0-2.8-.1-4-.3-1.2-2.5-2.8-4.8-2.9-4.9-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8 0 0 2.1 2.8 3.2 5.7 0 0 0 .1.1.1.1.2.1.4.2.6l.1.1c1.4 3.4 2.6 6.9 3.7 10.1 2.9 8.6 4.9 23.1 2.2 29.4-.4 3.7-1.4 9.2-3.7 13.9-2.2 4.3-3.5 6-4.3 6h-.2l-.1-.1-.1-.1s0-.1-.1-.1c0-.1-.1-.2-.1-.3-.2-.5-.2-1.3-.2-2.3.1-1.9.2-5.6.3-9.1 2.8-1.3 4.6-2.8 4.6-2.9.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0 0 0-1.8 1.6-4.4 2.7-4.6 1.8-10.6 3-17.9 3-1.7 0-3.5-.1-5.4-.2-3.4-.3-6.3-.8-8.7-1.5v.2c-2.1-.9-3.8-2.3-3.8-2.4-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.1.1 2.1 1.9 4.6 2.7.1 3.4.2 7 .3 8.9.1 1.8-.2 3-.8 3-.1 0-.2 0-.3-.1-.1 0-.2-.1-.3-.2l-.1-.1-.3-.3-.1-.1c-.1-.1-.2-.3-.3-.4l-.2-.2c-.1-.1-.2-.3-.3-.5-.1-.1-.2-.2-.2-.4-.1-.2-.2-.3-.3-.5-.1-.2-.2-.3-.3-.5-.1-.1-.2-.3-.2-.4-.4-.6-.7-1.4-1.2-2.2-.2-.5-.4-.9-.6-1.4 0-.1 0-.1-.1-.1-.2-.4-.4-.9-.5-1.3 0-.1-.1-.2-.1-.2-.2-.5-.3-.9-.5-1.4 0-.1 0-.1-.1-.2-.1-.5-.3-.9-.4-1.4 0-.1 0-.1-.1-.2-.1-.5-.
2-.9-.4-1.4v-.1c-.1-.5-.2-1-.3-1.4v-.1c-.2-1.3-.4-2.5-.6-3.5-1 .7-2.2 1.4-3.5 2.1-.1 0-.1.1-.2.1.7-2.3 1.6-6.7.3-12.5-.9-4-2.7-6.9-4.2-8.7 2.3.7 3.7 1.3 4.1 1.5.2 3 .7 7.5 1.4 11.6 0 .3.3.5.5.5h.1c.3-.1.5-.3.5-.6-1-5.8-1.5-12.1-1.6-14.3.6-3.6 1.6-7.6 3-11.5 2.2-6.1 4.2-8.1 4.2-8.1.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0-.1.1-1.7 1.7-3.6 6.3-1.9.5-4 .9-6.3.9-2.9 0-6-.6-9.3-2-10.2-4.4-12.1-14.1-12.4-16.7-2-.4-3.6-2-4.8-3.6-.2-.2-.3-.5-.5-.7-.1-.1-.3-.3-.4-.5-.2-.3-.5-.7-.7-1.1 0-.1-.1-.1-.1-.2-.2-.4-.3-.7-.5-1.1v-.1l-2-2c-.6-.6-2.2-2.6-2.7-3.1-.1-.1-.1-.1-.1-.2-.3-.4-.3-.7-.7-1.3-.1-.1-.1-.2-.2-.3-.1-.1-.2-.2-.2-.3-.5-.7-.6-1.4.1-1.9.1-.1.1-.1.2-.1l.1-.1c.1-.1.3-.1.5-.2h.1c.5-.1 1.1.1 1.5.6l.1.1c-.1-.5-.1-1.2-.2-1.8-.2-.9-.3-1.6.6-2 .1 0 .1 0 .2-.1h.2c.3 0 .6 0 .8.1 0 0 .1 0 .1.1.1 0 .2.1.2.1.1.1.2.2.3.2l.1.1c.1.1.2.3.2.4 0 0 .2.5.4 1.1 0-.3.1-.5.1-.7.2-1 .6-1.3.9-2 .3-.7.6-2 1.7-1.9.5.1.9.4 1.2.8.3.4.4.9.3 1.4l-.5 3.2-.4 2.3c-.5.9-1.2 2.1-1.7 3.4-.1.3.1.6.3.7h.2c.2 0 .4-.1.5-.4.7-1.9 1.7-3.5
2.2-4.2.5-.4 1.1-.7 1.6-1 .8-.4 2.5-.6 3.4-.4.5.1 1.2.6 1.9.6.5.1 1.2.1 1.6.7.1.2.2.4.2.8l-.7.1c-.8.1-1.4.9-1.2 1.8 0 .1.1.2.1.3-.2.1-.4.1-.7.1l-3.2-.1c-1.4.7-1.9 2.9-1.3 4.4.1.2.2.4.3.5 0 .1.1.1.1.1.1.1.1.2.2.3l.2.2c.1.1.1.1.2.1.3.3.7.4 1 .6.1 0 .3.1.4.1.5.1 1.1 0 1.6-.2 1.4-.6 2.2-2 1.9-3.5-.1-.7 0-1.3.4-1.9h.5l2.2-.4c.2.4.3 1.1.5 1.7.1.7.8 1.7.8 2.4-.2 1.9-1.2 3.9-2.5 5 .3.5.5 1 .5 1.6 0 .3.6 7.7 7.9 10.8 2.2 1 4.3 1.3 6.3 1.3 6.5 0 11.2-4.1 12.1-5 0-.1.1-.2.1-.3.3-.7.6-1.3.9-1.9.7.6 1.7 1.2 2.9 1.5 3.5 1 5.2.8 5.9.6.7.7 2.8 2.3 5.9 2.3.5 0 1.1-.1 1.7-.2 4.1-.8 6.3-3.7 6.8-4.5 1.1-.3 5.8-2 7.8-5.6l.9.3c.3.1 3.9 2 8.5 2 3.2 0 6.9-.9 10.4-3.8 6.1-5.2 4.4-12.6 4.3-12.6-.1-.6-.1-1.1 0-1.7-.9-.4-1.9-1.2-2.7-2.1-.1-.2-.3-.4-.4-.5-.1-.2-.2-.3-.3-.5 0 0 0-.1-.1-.1-.1-.2-.2-.4-.3-.7-.3-.7.1-1.8 0-2.5 0-.3-.1-.6-.1-.8-.4 1-.8 1.9-1.3 2.9-.1-1.3-.2-2.1-.2-2.1 0-.3-.3-.5-.6-.5s-.5.3-.5.6c0 0 .2 1.6.3 3.9-.1.2-.2.4-.4.6-.2-1.8-.6-3.6-1-5.4l4.9-.9c.5-.1.9-.4 1.1-.8.2.1.3.2.4.3.1.1.2.2.3.4 0 0
0 .1.1.1.1.1.2.3.2.4v.1c.1.2.1.4.1.6.1.6.3 1.1.6 1.5.5.7 1.3 1.2 2.3 1.3 1.7.1 3.2-1.1 3.4-2.9.1-.8-.2-1.7-.6-2.4-.5-.7-1.1-1.3-1.9-1.4l-3.1 1c-.2 0-.4.1-.7.1-.4 0-.8-.1-1.1-.2-.2-.5-.6-.9-1.1-1 0-.1-.1-.1-.1-.2v.2h-.5l-5.2.9c-.5-1.6-1.2-3.2-2.1-4.7 0-.2 0-.4-.1-.6-2.6-14.6-19.6-23.8-38-20.6-17.4 3.1-29.9 16.2-29 30h-.1c-.8.1-1.4.9-1.2 1.8.1.8.9 1.3 1.7 1.3-.5.9-.7 2-.4 3.6l.3 1.5-5.9 1c-.9-1.4-1.7-2.9-2.4-4.4-.1-.3-.2-.5-.3-.8-.1-.2-.1-.4-.2-.6-.1-.4-.3-.7-.4-1.1 0-.1-.1-.3-.1-.4-.1-.5-.3-1-.4-1.5-.1-.6-.3-1.1-.4-1.7-.1-.3-.1-.6-.1-.9 0-.3-.1-.7-.1-1 0-.4-.1-.7-.1-1.1v-.9-1.1-.9c0-.6.1-1.2.1-1.8 0-.3.1-.7.1-1 .1-.3.1-.7.2-1 .1-.3.1-.6.2-1 .1-.3.1-.7.2-1 .1-.4.2-.7.3-1.1.1-.3.2-.6.3-1 .2-.6.4-1.1.6-1.7.1-.3.2-.6.4-.9.1-.3.3-.7.4-1l.3-.6c.1-.1.1-.3.2-.4 2.7-4.5 5.9-7.4 6-7.4.2-.2.3-.6 0-.8-.2-.2-.6-.3-.8 0-.1.1-2.2 2-4.5 5.1-3.7-10.5-1.1-21.6.7-22.7.3-.2.8-.3 1.5-.3 2.7 0 8.1 1.4 13.4 4.2 1.4.8 2.7 1.6 3.8 2.4-7.2 3.2-9.7 6.7-9.8 6.9-.2.3-.1.6.1.8.1.1.2.1.3.1.2 0 .3-.1.5-.2.1-.1 5.2
-7.3 22.4-10.3 17.1-3 24.8 2.9 24.9 3 .2.2.6.2.8-.1.2-.2.2-.6-.1-.8-.2-.2-4-3.1-11.9-3.9.8-1.2 1.8-2.5 3-3.8 4.8-5.3 10.5-8.8 12.4-8.8h.2c2.1.4 8.4 10.1 8.4 21.3-2.6-1.7-4.9-2.6-5-2.7-.3-.1-.6 0-.7.3-.1.3 0 .6.3.7.1 0 5.2 2.1 9.1 6l.2.2c1 1.1 1.9 2.3 2.7 3.5 0 .1.1.1.1.2.4.6.7 1.2 1.1 1.7l.1.1c.7 1.3 1.3 2.6 1.8 4 0 .1.1.2.1.3.2.6.4 1.2.6 1.9 0 .1 0 .2.1.3.2.7.3 1.4.5 2.2l.3 2.4c.2 2.4.1 4.8-.3 7.1.3-.2.6-.4.9-.5.7-.3 1.2-.9 1.6-1.2.7-.5 2.4-.8 3.3-.6 1 .2 2 .4 2.8.8 1.8 1.5 3.5 3 3.7 3.4.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.2-.7-.4-.8-3.1-3-4.4-4.2L129 52l-1.5-2.9c-.5-.9-.1-2.1.8-2.5.9-.5 1.6.7 2.1 1.3.5.5.9.7 1.3 1.4.1.1.1.2.2.3l.3.6c0-.7.1-1.1.1-1.2.1-.9.9-1.7 1.8-1.6.4 0 .6.2.8.4.3.3.3.8.4 1.4 0 .1 0 .3.1.4 0 .1 0 .2.1.3.1.4.2.7.2 1.1l.1-.1c.4-.9 1.4-1.3 2.3-.9.4.2.6.3.7.5zM99.3 99.7c-1.1-2-2.2-3.6-3.4-5-2.2 1.7-5.8 3.7-11 4.4-5.7.8-10.2-.7-12.9-2.1-4.7 6.9-9.4 17.7-9.1 27.9.4 16.8 14.5 19.1 23.7 18.7 6-.3 11.7-2.4 15.5-6.7v-.1l.1-.1c2-2.3 3.4-5.1 4.1-8.6 1.8-10.2-2.8-20.5-7-28.
4zM66.6 50.5l-4.9-.7c-5-.7-9.6 2.9-10.3 7.9l-.6 4.4 20.9-3.7c.6-.9 1.3-1.6 2.2-2.3-1.3-2.9-4-5.2-7.3-5.6zm22.5-5l-4 3c-2 1.5-3.2 3.7-3.5 6.1 1.1.3 2.1.8 3 1.4l21.2-3.8-3.8-5c-3.1-3.9-8.9-4.7-12.9-1.7zM66.6 85.3l-.1-1.1v-.3-.4l.1-.3c5.3-1.7 8.6-7 7.6-12.6l-.1-.3c.1 0 .2-.1.4-.1l1 5.5c.1.8.9 1.3 1.7 1.2.8-.1 1.3-.9 1.2-1.7l-1.3-7c2.4-1.3 5.4-1.4 7.9 0 .3.2.7.2 1 .2.1 0 .2-.1.3-.1l.1.3c1 5.6 5.9 9.4 11.4 9.2l.2.3c0 .1.1.1.1.2v.1c0 .1.1.2.1.2l.1.4c0 .1.1.2.1.3l.1.5c0 .1 0 .2.1.4v2.6c-.5 2.6-2.6 4.5-5.9 5.2h-.1H92.3c-.1 0-.3.1-.4.1-.5.1-1 .4-1.5.7-.5.3-.9.7-1.2 1.1-.4.4-.7.8-1.1 1.1-.3.4-.7.7-1.1 1l-.9.5-.2.1c-.1 0-.1.1-.2.1l-.2.1h-.1l-.2.1h-.1l-.3.1-.4.1H83c-.5 0-1-.1-1.4-.2-.5-.1-.9-.3-1.4-.5-.5-.2-.9-.5-1.4-.7-.5-.2-1-.5-1.5-.6-.5-.1-1.1-.2-1.7-.1H75.3h-.1-.1-.1c-3.4.6-6.1-.5-7.5-2.8l-.1-.1-.1-.3v-.1l-.1-.1s0-.1-.1-.1l-.1-.4c0-.1 0-.1-.1-.2v-.1-.1l-.2-1c0-.2 0-.3-.1-.4zm9.5-1c.2 1 1 2.3 2.2 2.9.3.2.6.2.9.1.4-.1.8-.3 1-.8.4-.7.1-1.6-.6-2-.3-.2-.6-.7-.7-.8-.2-.8-.9-1.3-1.7-1.2-.7.3-1.3
1-1.1 1.8zm-2.4-17.5l.3-.3-.1-.4c-.1-.8.4-1.6 1.2-1.7.6-.1 1.1.1 1.4.6 3-1.4 6.4-1.4 9.4 0l-.4-2.4c-.3-1.6-.1-2.8.4-3.6l-14.2 2.5c.8.6 1.3 1.7 1.6 3.3l.4 2zm4.1-11.2c-1.8.3-3.4 1.2-4.5 2.5l9.7-1.7c-1.6-.9-3.4-1.2-5.2-.8z" fill="url(#a)" opacity=".2" transform="translate(145 67)"/><path d="M228.8 160c0-.1 0 0 0 0z" fill="#59ACFF"/><path d="M223.3 154.2c.3.2.6.2.9.1.4-.1.8-.3 1-.8.4-.7.1-1.6-.6-2-.3-.2-.6-.7-.7-.8-.2-.8-.9-1.3-1.7-1.2-.8.1-1.3.9-1.2 1.7.2 1.1 1.1 2.4 2.3 3zM220.1 131.4c-.8.1-1.3.9-1.2 1.7l.1.4c.8-.6 1.6-1.2 2.5-1.6-.3-.4-.9-.6-1.4-.5zM222.3 143.8c.8-.1 1.3-.9 1.2-1.7l-1.3-7c-.8.4-1.6 1-2.2 1.8-.1.1-.3.2-.4.3l1 5.5c.1.7.9 1.2 1.7 1.1z" fill="#F9F9FA"/><path d="M265.6 125c.1 0 .1 0 0 0v-.2.2z" fill="#59ACFF"/><path d="M113.9 62.2l1.8-.3 4.9-.9c.5-.1.9-.4 1.1-.8.2.1.3.2.4.3.1.1.2.2.3.4 0 0 0 .1.1.1.1.1.2.3.2.4v.1c.1.2.1.4.1.6.1.6.3 1.1.6 1.5.5.7 1.3 1.2 2.3 1.3h.3c1.6 0 3-1.2 3.1-2.9.1-.8-.2-1.7-.6-2.4-.5-.7-1.1-1.3-1.9-1.4l-3.1 1c-.2 0-.4.1-.7.1-.4 0-.8-.1-1.1-.2-.2-.5-
.6-.9-1.1-1h-.6l-5.2.9-1.4.3.5 2.9zm12.6-1.7c.2.3.5.8.5 1.3s-.4.8-.9.8h-.1c-.4 0-.8-.4-.8-.8 0-.3-.1-.6-.2-.8l1.5-.5zM38.7 72.4c-.8.1-1.4.9-1.2 1.8 0 .1.1.2.1.3-.2.1-.4.1-.7.1l-3.2-.1c-1.4.7-1.9 2.9-1.3 4.4.1.2.2.4.3.5 0 .1.1.1.1.1.1.1.1.2.2.3l.2.2c.1.1.1.1.2.1.3.2.7.4 1 .6.1 0 .3.1.4.1h.5c.4 0 .8-.1 1.2-.2 1.4-.6 2.2-2 1.9-3.5-.1-.7 0-1.3.4-1.8h.5l2.2-.4c.2.4.3 1.1.5 1.7.1.7.8 1.7.8 2.4-.2 1.9-1.2 3.9-2.5 5 .3.5.5 1 .5 1.6 0 .3.6 7.7 7.9 10.8 2.2 1 4.3 1.3 6.3 1.3 6.5 0 11.2-4.1 12.1-5 0-.1.1-.2.1-.3.3-.7.6-1.3.9-2 .7.6 1.7 1.2 2.9 1.5 3.5 1 5.2.8 5.9.6.7.7 2.8 2.3 5.9 2.3.5 0 1.1-.1 1.7-.2 4.1-.8 6.3-3.7 6.8-4.5 1.1-.3 5.8-2 7.8-5.6l.9.3c.3.1 3.9 2 8.5 2 3.2 0 6.9-.9 10.4-3.8 6.1-5.2 4.4-12.6 4.3-12.6-.1-.6-.1-1.1 0-1.7-.9-.4-1.9-1.2-2.7-2.1-.1-.2-.3-.4-.4-.5-.1-.2-.2-.3-.3-.5 0 0 0-.1-.1-.1-.1-.2-.2-.5-.3-.7-.3-.7.1-1.8 0-2.5 0-.3-.1-.5-.1-.8-.4 1-.8 1.9-1.3 2.9-.1-1.3-.2-2.1-.2-2.1 0-.3-.3-.5-.6-.5s-.5.3-.5.6c0 0 .2 1.6.3 3.9.1 1.6.1 3.5 0 5.5v.6c-.1 2.7-1 5.8-1.4 7.3-.2.6-.3.9-
.3 1-.1.3.1.6.3.7h.2c.2 0 .4-.1.5-.4 0-.1.6-1.7 1.1-3.7-.4 2.1-1 3.7-1 3.8-.1.3-.3.4-.6.4h-.2c-.3-.1-.5-.5-.4-.8 0 0 .1-.2.2-.5-1.9 1.7-9 3.3-15.9 3.7 0 0 0-.1.1-.1.3-.8.4-1.6.4-2.5v-.4-.8-.1-.1l-.1-.6c0-.1-.1-.3-.1-.4l-.1-.4c0-.1-.1-.2-.1-.3l-.2-.5c0-.1-.1-.2-.1-.3l-.1-.1s0-.1-.1-.1h.3l.5-.1 3.5-.6 1.7-.3c6.1-1.1 10.1-6.9 9-12.9l-1-5.8c-.3-1.7-.9-2.7-1.7-3.3.5-.3.9-.9.8-1.6-.1-.8-.9-1.4-1.8-1.2l-4.7.8L84.5 56c-.9-.6-1.9-1.1-3-1.4-1.3-.3-2.6-.4-4-.2-1.4.3-2.7.8-3.8 1.6-.9.6-1.6 1.4-2.2 2.3L50.6 62l-5.1.9h-.1c-.8.1-1.4.9-1.2 1.8.1.8.9 1.3 1.7 1.3-.5.9-.7 2-.4 3.6l.3 1.5-5.9 1-.6.1-.6.2zm-3.1 6.3c-.1 0-.2.1-.3.1-.3 0-.7-.2-.8-.6-.2-.4-.1-1 .1-1.4h1.5c0 .3 0 .6.1.8 0 .5-.2.9-.6 1.1zm84.6-4.9c.1-1.3.1-2.6.1-3.9.2.2.4.3.6.5 0 .3.1.6.2 1 0 .2 1 4.7-1.9 8.6.4-1.6.8-3.8 1-6.2zm-5.9 9.8c.1.1.2.1.3.2-1.7.8-3.5 1.3-5.4 1.3 1.9-.5 3.7-1 5.1-1.5zm-59.4 12c-1.8 0-3.6-.4-5.4-1.1-6-2.5-6.5-8.7-6.5-8.9 0-.3-.1-.6-.1-.9.5-.7 1-1.5 1.4-2.4.5 1.4 1.1 3 1.7 4.4 1.7 4 4.3 7.1 4.4 7.2.6.7 1.4 1 2.2 1 .7 0
1.3-.2 1.8-.7l.2-.2h.7c2 0 4.7-.3 7.5-.8-1.9 1.2-4.7 2.4-7.9 2.4zm22.9-40c1.8-.3 3.6 0 5.2.8l-9.7 1.7c1.1-1.3 2.7-2.2 4.5-2.5zm8.1 3.3c-.5.9-.7 2-.4 3.6l.4 2.4c-3-1.4-6.5-1.4-9.4 0-.9.4-1.7.9-2.5 1.6l-.3.3-.4-2.1c-.3-1.6-.8-2.6-1.6-3.3l14.2-2.5zM66.6 83.8v-.4l.1-.3c5.3-1.7 8.6-7 7.6-12.6l-.1-.3c.1 0 .2-.1.4-.1.2-.1.3-.2.4-.3.6-.7 1.4-1.3 2.2-1.8 2.4-1.3 5.4-1.4 7.9 0 .3.2.7.2 1 .2.1 0 .2-.1.3-.1l.1.3c1 5.6 5.9 9.4 11.4 9.2l.2.3c0 .1.1.1.1.2v.1c0 .1.1.2.1.2l.1.4c0 .1.1.2.1.3l.1.5c0 .1 0 .2.1.4v2.6c-.5 2.6-2.6 4.5-5.9 5.2h-.1H92.4c-.1 0-.3.1-.4.1-.5.1-1 .4-1.5.7-.5.3-.9.7-1.2 1.1-.4.4-.7.8-1.1 1.1-.3.4-.7.7-1.1 1l-.9.5-.2.1c-.1 0-.1.1-.2.1l-.2.1h-.1l-.2.1h-.1l-.3.1-.4.1H83.1c-.5 0-1-.1-1.4-.2-.5-.1-.9-.3-1.4-.5-.5-.2-.9-.5-1.4-.7-.5-.2-1-.5-1.5-.6-.5-.1-1.1-.2-1.7-.1H75.4h-.1-.1-.1c-3.4.6-6.1-.5-7.5-2.8l-.1-.1-.1-.3v-.1l-.1-.1s0-.1-.1-.1l-.1-.4c0-.1 0-.1-.1-.2v-.1-.1l-.2-1c0-.1 0-.2-.1-.4l-.1-1.1v-.2zm-20.4-9.6h.2l.2 1.3c1.1 6.1 6.9 10.1 12.9 9l2.5-.4 3.2-.6h.2v.8l.1 1.2c0 .1 0 .3.1.
4v.1s.2 2 1.6 3.8c0 0 0 .1.1.1-4.5 1.2-9 1.9-12 1.9-.9 0-1.7-.1-2.3-.2.2.3.2.7-.1.9-.1.1-.3.1-.4.1-.2 0-.4-.1-.5-.2 0 0-.3-.4-.8-1 .5.6.8.9.8 1 .1.1.3.2.4.2.1 0 .3-.1.4-.2.2-.2.2-.6 0-.8 0 0-.1-.1-.2-.3-.7-.8-2.9-3.4-4.1-6.3-.1-.2-.2-.4-.3-.7-.7-1.8-1.3-3.6-1.8-5.2-.8-2.4-1.2-4.3-1.2-4.3-.1-.3-.4-.5-.7-.4-.3.1-.5.4-.4.7 0 0 .3 1.1.7 2.6-1-1-2-2-2.9-3l4.3-.5zm93-26.2c-.5-.2-1-.3-1.6-.3-.6-1.8-1.8-2.3-2.9-2.3h-.3c-.8 0-1.6.3-2.3.7-.6-.7-1.5-1.7-3-1.7-.5 0-1 .1-1.4.3-2 1-2.9 3.5-1.9 5.5l.7 1.3h-.2c-.8 0-1.8.1-2.7.4 0-1.9-.1-3.9-.4-5.8-1.1-6-4-11.7-8.5-16.3.7-13.5-6.9-26.8-12.1-27.9-.3-.1-.7-.1-1.1-.1-4.9 0-12.2 6.2-15.9 10.3-.9 1-2.2 2.6-3.4 4.4h-.5c-3.1 0-6.5.3-9.9.9-3.6.6-7 1.5-10 2.6-1.7-1.2-3.3-2.2-4.5-2.8-4.4-2.4-10.9-4.7-15.5-4.7-1.7 0-3 .3-4 .9-4.5 2.7-7.1 17.8-1.8 30.3-2.7 5.9-3.5 12.2-2.5 18.3.4 2 .9 3.9 1.7 5.8h-.4c-.8 0-1.9.1-2.8.4l.2-1.5c.4-2.2-1.1-4.4-3.4-4.7h-.5c-2 0-2.9 1.7-3.3 2.6-.4-.1-.8-.2-1.2-.2-.5 0-1 .1-1.4.3-1 .4-2.1 1.2-2.1 3.1-.6.2-1.1.4-1.5.8-1.2 1.1-1.9 3-.1
5.3.2.2.2.4.3.6.1.3.3.8.8 1.3.1.1.3.4.6.7.9 1.1 1.8 2.1 2.2 2.5l.6.6 1 1c.4 1 .8 1.8 1.4 2.5.1.2.2.3.4.5.2.3.3.5.5.8 1.5 1.9 3 3.3 4.6 4 .8 4.2 3.6 12.8 13.5 17.1 3.3 1.4 6.8 2.1 10.2 2.1 1.3 0 2.7-.1 4-.3-1.2 3.7-2.1 7.1-2.6 10-.9-.3-1.9-.7-3.1-1-.3-.2-.4-.4-.5-.4-.6-.5-1.4-.8-2.2-.8-.4 0-.9.1-1.3.2-2.1-.4-4.2-.7-6.4-.9-.4-.2-.7-.4-1.1-.5-.2 0-.4-.1-.7-.1-.5 0-1 .1-1.4.3-1.1-.1-2.2-.1-3.3-.1h-2.6c-.5-.3-1.1-.4-1.6-.4-.7 0-1.3.2-1.8.5-.1 0-.1.1-.2.1-2.1.2-4.2.6-6.2 1.1-.2 0-.4-.1-.7-.1-.5 0-1 .1-1.4.3-.3.1-.6.3-.9.6-7.7 2.4-12.1 5.9-12.5 6.3-.3.3-.6.6-.7.9-2.6 2.1-4.2 4.3-4.7 6.7-1.1 5.5 3.4 11.3 11.7 15.4.1.5.4 1 .7 1.4.7.8 1.6 1.2 2.6 1.2.6 0 1.2-.2 1.8-.5 2.7.9 5.5 1.5 8.3 1.9.1.2.3.3.4.4.6.5 1.4.8 2.2.8.9 0 1.7-.3 2.4-.9 1 0 2-.1 2.9-.1 2.1-.2 4.1-.5 6.2-1 .2.2.5.3.7.5.5.2.9.3 1.4.3 1.4 0 2.6-.8 3.2-2.1 0 0 0-.1.1-.1 1.9-.6 3.8-1.3 5.6-2.1.1.1.2.1.3.2.5.3 1.1.4 1.6.4 1.3 0 2.5-.7 3.1-1.9 0-.1.3-.6.6-1.5.6 3.2 1.6 6.9 3.3 10.2 2.7 5.4 4.3 7.3 6.3 7.3.7 0 1.4-.3 2-.8.8-.9 1.2-2.2
1.1-4.5 0-1.6-.1-4.5-.2-7.4 1.9.4 3.9.7 6.2.9 1.9.1 3.7.2 5.6.2 5.9 0 11.4-.8 16.1-2.2-.1 2.8-.2 5.5-.2 7-.1 2.3.3 3.6 1.1 4.5.5.5 1.2.8 2 .8 2 0 3.6-1.8 6.3-7.3 2.4-4.8 3.4-10.4 3.9-14.3 2.9-7.6.4-22.8-2.3-30.7-1.1-3.3-2.2-6.3-3.3-9.1.6 0 1.2.1 1.8.1 6.2 0 11.8-2.1 16.6-6.1 8.2-6.9 8.4-16.1 7.9-20.3 1.3-1.2 2.4-2.9 3.3-5.2l.3-.9c.1-.2.2-.4.2-.5.3-.9.5-1.8.6-2.8l.9-1.8.2-.3c.3-.6.8-1.7 1.4-3.1.1-.3.3-.6.3-.8.3-.6.3-1.1.4-1.5 0-.2 0-.4.2-.6 1.2-2.7 0-4.4-1.5-5.1zm-.5 4.3c-.4 1.1-.2 1.4-.5 2-.3.7-1.3 3-1.7 3.8-.1.2-.7 1.2-1.3 2.5 0 .9-.2 1.8-.5 2.7-.1.2-.1.4-.2.6l-.3.9c-.7 1.9-1.8 4-3.6 4.9.5 2.6 1.6 12.4-6.9 19.6-5.1 4.3-10.5 5.6-15.1 5.6-1.4 0-2.8-.1-4-.3-1.2-2.5-2.8-4.8-2.9-4.9-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8 0 0 2.1 2.8 3.2 5.7 0 0 0 .1.1.1.1.2.1.4.2.6l.1.1c1.4 3.4 2.6 6.9 3.7 10.1 2.9 8.6 4.9 23.1 2.2 29.4-.4 3.7-1.4 9.2-3.7 13.9-2.2 4.3-3.5 6-4.3 6h-.2l-.1-.1-.1-.1s0-.1-.1-.1c0-.1-.1-.2-.1-.3-.2-.5-.2-1.3-.2-2.3.1-1.9.2-5.6.3-9.1 2.8-1.3 4.6-2.8 4.6-2.9.2-.2.2-.6 0-.8-.2-.2-.6-
.2-.8 0 0 0-1.8 1.6-4.4 2.7-4.6 1.8-10.6 3-17.9 3-1.7 0-3.5-.1-5.4-.2-3.4-.3-6.3-.8-8.7-1.5v.2c-2.1-.9-3.8-2.3-3.8-2.4-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.1.1 2.1 1.9 4.6 2.7.1 3.4.2 7 .3 8.9.1 1.8-.2 3-.8 3-.1 0-.2 0-.3-.1-.1 0-.2-.1-.3-.2l-.1-.1-.3-.3-.1-.1c-.1-.1-.2-.3-.3-.4l-.2-.2c-.1-.1-.2-.3-.3-.5-.1-.1-.2-.2-.2-.4-.1-.2-.2-.3-.3-.5-.1-.2-.2-.3-.3-.5-.1-.1-.2-.3-.2-.4-.4-.7-.8-1.4-1.2-2.2-.2-.4-.4-.9-.6-1.4 0-.1 0-.1-.1-.1-.2-.4-.4-.9-.5-1.3 0-.1-.1-.2-.1-.2-.2-.5-.3-.9-.5-1.4 0-.1 0-.1-.1-.2-.1-.5-.3-.9-.4-1.4 0-.1 0-.1-.1-.2-.1-.5-.2-.9-.4-1.4v-.1c-.1-.5-.2-1-.3-1.4v-.1c-.2-1.3-.4-2.5-.6-3.6-1 .7-2.2 1.4-3.5 2.1-.4 1.2-.7 1.9-.8 2-.2.4-.7.7-1.1.7-.2 0-.4 0-.6-.1-.4-.2-.6-.5-.6-.9-2.4 1.1-5 2.2-8 3.1-.2.6-.4 1-.4 1-.2.5-.7.7-1.1.7-.2 0-.3 0-.5-.1-.4-.2-.6-.5-.7-.9-1.7.4-3.6.8-5.4 1h-.1c-.6.1-1.2.2-1.9.2-1 .1-1.9.1-2.9.1h-.9c-.2.3-.3.4-.3.5-.2.3-.6.5-1 .5-.3 0-.6-.1-.8-.3-.3-.2-.4-.5-.4-.8-3.5-.3-7-1.1-10.2-2.3l-.5.5c-.2.2-.5.3-.8.3-.4 0-.7-.1-1-.4-.3-.4-.4-.9-.2-1.3-4.6-2.1-8.4-4
.9-10.4-7.9-.1-.1-.1-.2-.2-.3l-.3-.6c-.1-.1-.1-.3-.2-.4-.1-.1-.1-.3-.2-.4-.1-.2-.1-.3-.2-.5 0-.1-.1-.2-.1-.3-.1-.2-.1-.4-.1-.6v-.3c0-.2-.1-.4-.1-.6v-.1c0-.5 0-1.1.1-1.6.4-2.2 2.1-4.1 4.4-5.8 0-.2 0-.4.2-.6.3-.2 4.6-3.8 12.4-6.1.1-.2.3-.4.5-.5.2-.1.3-.1.5-.1s.4.1.6.2c2.2-.6 4.6-1 7.3-1.2.1-.2.2-.3.4-.4.2-.1.4-.2.7-.2.4 0 .7.2 1 .5.3 0 .6 0 .9-.1h2.3c1.3 0 2.6 0 3.8.1.2-.2.5-.3.9-.3h.2c.1 0 .4.2.7.4 2.9.2 5.4.6 7.6 1.1.2-.2.6-.4.9-.4.3 0 .5.1.8.3l.7.7c2.6.7 4.3 1.4 5.3 1.8v.1c0 .4.1.8.1 1.3.2 3 .7 7.5 1.4 11.6 0 .3.3.5.5.5h.1c.3-.1.5-.3.5-.6-1-5.8-1.5-12.1-1.6-14.3.5-3.5 1.6-7.4 2.9-11.2 0-.1.1-.2.1-.3 2.2-6.1 4.2-8.1 4.2-8.1.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0-.1.1-1.7 1.7-3.6 6.3-1.9.5-4 .9-6.3.9-2.9 0-6-.6-9.3-2-10.2-4.4-12.1-14.1-12.4-16.7-2-.4-3.6-2-4.8-3.6-.2-.2-.3-.5-.5-.7-.1-.1-.3-.3-.4-.5-.2-.3-.5-.7-.7-1.1 0-.1-.1-.1-.1-.2-.2-.4-.3-.7-.5-1.1v-.1l-2-2c-.6-.6-2.2-2.6-2.7-3.1-.1-.1-.1-.1-.1-.2-.3-.4-.3-.7-.7-1.3-.1-.1-.1-.2-.2-.3-.1-.1-.2-.2-.2-.3-.5-.8-.6-1.4 0-2 .1-.1.1-.1.2-.1l.
1-.1c.1-.1.3-.1.5-.2H21.6c.5 0 1 .2 1.3.6l.1.1c-.1-.5-.1-1.2-.2-1.8-.2-.9-.3-1.6.6-2H24c.2 0 .4.1.7.1 0 0 .1 0 .1.1.1 0 .2.1.2.1.1.1.2.2.3.2l.1.1c.1.1.2.3.2.4 0 0 .2.5.4 1.1 0-.3.1-.5.1-.7.2-1 .6-1.3.9-2 .3-.7.6-1.9 1.5-1.9h.2c.5.1.9.4 1.2.8.3.4.4.9.3 1.4l-.5 3.2-.4 2.3c-.5.9-1.2 2.1-1.7 3.4-.1.3.1.6.3.7h.2c.2 0 .4-.1.5-.4.7-1.9 1.7-3.5 2.2-4.2.5-.3 1-.7 1.6-1 .6-.3 1.6-.5 2.4-.5.3 0 .7 0 .9.1.5.1 1.2.6 1.9.6.5.1 1.2.1 1.6.7.1.2.2.4.2.8l.6-.1c-.9-1.4-1.7-2.9-2.4-4.4-.1-.3-.2-.5-.3-.8-.1-.2-.1-.4-.2-.6-.1-.4-.3-.7-.4-1.1 0-.1-.1-.3-.1-.4-.1-.5-.3-1-.4-1.5-.1-.6-.3-1.1-.4-1.7-.1-.3-.1-.6-.1-.9 0-.3-.1-.7-.1-1 0-.4-.1-.7-.1-1.1v-.9V57v-.9c0-.6.1-1.2.1-1.8 0-.3.1-.7.1-1 .1-.3.1-.7.2-1 .1-.3.1-.6.2-1 .1-.3.1-.7.2-1 .1-.4.2-.7.3-1.1.1-.3.2-.6.3-1 .2-.6.4-1.1.6-1.7.1-.3.2-.6.4-.9.1-.3.3-.7.4-1 .1-.2.1-.3.2-.5 0-.1.1-.1.1-.2.1-.1.1-.2.2-.3 2.7-4.5 5.9-7.4 6-7.4.2-.2.3-.6 0-.8-.2-.2-.6-.3-.8 0-.1.1-2.2 2-4.5 5.1-.5.7-1 1.4-1.5 2.2 0 .1-.1.1-.1.2-4.7-11.6-2.2-25.2 1.1-27.1.7-.4 1.6-.6 2.8-.6
3.8 0 9.8 2 14.4 4.5 1.5.8 3.4 2 5.2 3.4 2.9-1.1 6.5-2.1 10.8-2.9 3.6-.6 6.7-.9 9.5-.9h1.7c1.2-2 2.6-3.8 3.8-5.1 4.3-4.8 10.7-9.6 14.2-9.6.2 0 .4 0 .6.1 3.8.8 10.8 12.8 10.3 25.3l-.1-.1c-.7-.6-1.5-1.1-2.2-1.6-2.6-1.7-4.9-2.6-5-2.7-.3-.1-.6 0-.7.3-.1.3 0 .6.3.7.1 0 5.2 2.1 9.1 6l.2.2c1 1.1 1.9 2.3 2.7 3.5 0 .1.1.1.1.2.4.6.7 1.2 1.1 1.7l.1.1c.7 1.3 1.3 2.6 1.8 4 0 .1.1.2.1.3.2.6.4 1.2.6 1.9 0 .1 0 .2.1.3.2.7.3 1.4.5 2.2l.3 2.4c.2 2.4.1 4.8-.3 7.1.3-.2.6-.4.9-.5.7-.3 1.2-.9 1.6-1.2.6-.4 1.9-.7 2.8-.7h.5c1 .2 2 .4 2.8.8 1.8 1.5 3.5 3 3.7 3.4.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.2-.7-.4-.8-3.1-3-4.4-4.2l-.6-1.3-1.5-2.9c-.5-.9-.1-2.1.8-2.5.1-.1.3-.1.4-.1.7 0 1.3.9 1.7 1.4.5.5.9.7 1.3 1.4.1.1.1.2.2.3l.3.6c0-.7.1-1.1.1-1.2.1-.9.8-1.6 1.7-1.6h.1c.4 0 .6.2.8.4.3.3.3.8.4 1.4 0 .1 0 .3.1.4 0 .1 0 .2.1.3.1.4.2.7.2 1.1l.1-.1c.3-.6.9-1 1.6-1 .2 0 .5 0 .7.2.2.1.4.2.5.4.3.1.3.7-.1 1.5z" fill="url(#b)" transform="translate(145 67)"/></g></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_screenshots.svg b/browser/extensions/onboarding/content/img/figure_screenshots.svg
deleted file mode 100644
index f4930d09f7af..000000000000
--- a/browser/extensions/onboarding/content/img/figure_screenshots.svg
+++ /dev/null
@@ -1,191 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="281" height="233">
- <defs>
- <linearGradient id="a" x1="-26.7072552%" x2="121.200691%" y1="-8.21456664%" y2="115.364749%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="b" x1="-171.534367%" x2="377.694136%" y1="-258.916232%" y2="507.082022%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="c" x1="-275.615152%" x2="393.814483%" y1="-214.880097%" y2="329.931438%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="d" x1="-71.2230562%" x2="141.268437%" y1="-46.5567621%" y2="122.213199%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="e" x1="-912.187374%" x2="706.872366%" y1="-223.131903%" y2="247.7375%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="f" x1="-636.509606%" x2="265.115932%" y1="-364.308744%" y2="178.753736%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="g" x1="-96.7324958%" x2="214.858961%" y1="-489.128132%" y2="600.29142%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="h" x1="-370.226425%" x2="176.655533%" y1="-420.236682%" y2="206.08556%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="i" x1="-1573.85207%" x2="2621.18334%" y1="-918.807829%" y2="1582.542%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="j" x1="-1977.10979%" x2="2217.92561%" y1="-1158.35597%" y2="1342.99386%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="k" x1="-635.169191%" x2="1018.69953%" y1="-1184.44408%" y2="1785.60576%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="l" x1="-278.76866%" x2="377.256589%" y1="-697.981967%" y2="835.635246%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="m" x1="-553.131633%" x2="647.619338%" y1="-1374.34047%" y2="1418.49315%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="n" x1="-450.59361%" x2="546.286439%" y1="-895.950857%" y2="958.91224%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="o" x1="-511.211278%" x2="295.07392%" y1="-745.273546%" y2="396.265912%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="p" x1="-871.182847%" x2="303.781403%" y1="-595.928571%" y2="241.5435%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="q" x1="-450.336951%" x2="307.764971%" y1="-505.416691%" y2="315.448433%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="r" x1="-2519.79056%" x2="1944.50093%" y1="-1090.70814%" y2="890.815528%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="s" x1="-134.127826%" x2="165.330874%" y1="-297.102666%" y2="260.202663%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="t" x1="-1132.52358%" x2="304.180944%" y1="-1559.01765%" y2="393.843988%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="u" x1="-1884.94918%" x2="1592.74001%" y1="-342.289711%" y2="381.222953%">
- <stop stop-color="#E6FCFF" offset="0%"/>
- <stop stop-color="#B5F2FF" offset="100%"/>
- </linearGradient>
- <linearGradient id="v" x1="-109.932792%" x2="195.629347%" y1="-425.144051%" y2="431.622036%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="w" x1="-813.648281%" x2="368.736119%" y1="-1076.38789%" y2="459.249729%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="x" x1="-1092.12785%" x2="635.82518%" y1="-4587.46665%" y2="2425.66052%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="y" x1="-415.250984%" x2="1490.35841%" y1="-442.448072%" y2="1582.67684%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="z" x1="-167.167389%" x2="492.546376%" y1="-2085.55413%" y2="4392.09342%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="A" x1="-2989.85248%" x2="1926.86535%" y1="-1363.11821%" y2="921.90878%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- <linearGradient id="B" x1="-2586.45105%" x2="2652.41027%" y1="-792.93501%" y2="883.790987%">
- <stop stop-color="#00C8D7" offset="0%"/>
- <stop stop-color="#008EA4" offset="100%"/>
- </linearGradient>
- </defs>
- <g fill="none" fill-rule="evenodd">
- <g fill="#D7D7DB" fill-rule="nonzero">
- <path d="M204.3 76.7h-77c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h77c.6 0 1.1.5 1.1 1.1 0 .6-.4 1.1-1.1 1.1zM193.9 71h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zM176.4 81.7H163c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-22.2 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-11.2 0h-13.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-22.2 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-7.8 0H104c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.2.6-.5.6zm-11.2 0H80.6c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6H94c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-22.3 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6z"/>
- </g>
- <g fill-rule="nonzero">
- <path fill="#F9F9FA" d="M152.3 47.8h23.8s-7.4-16.6 8.3-18.8c14.1-1.9 19.6 12.5 19.6 12.5s1.7-8.3 10-6.7c8.3 1.6 14.3 14.8 14.3 14.8H249"/>
- <path fill="#D7D7DB" d="M249.5 45.8H245c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h4.5c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-14.5 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-.6c-.2 0-.4-.1-.5-.3-.1-.2-.6-1.1-1.3-2.3-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.6.9 1 1.7 1.2 2.1h.3c.3 0 .6.2.6.6 0 .4-.4.5-.7.5zm-52.9-.7H175c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h.6c-.1-.3-.2-.6-.4-1-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.7.6 1.7.1.2.1.4 0 .5-.1.1-.3.3-.4.3zm-10.4 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm8.7-6.1c-.3 0-.5-.2-.6-.5 0-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.3-.1.6-.5.6.1 0 .1 0 0 0zm29.2-1.1c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.1-.3 0-.6.2-.8.3-.1.6 0 .8.2.2.4.4.7.5 1 .1.3 0 .6-.3.7-.1.2-.2.2-.2.2zm17.9-1.4c-.1 0-.3-.1-.4-.2-2.4-2.3-4.8-3.7-7.2-4.1-1.6-.3-3.1-.2-4.3.2-.3.1-.6-.1-.7-.4-.1-.3.1-.6.4-.7 1.4-.5 3.1-.6 4.9-.2 2.6.5 5.2 2 7.7 4.4.2.2.2.6 0 .8-.1.1-.2.2-.4.2zM201 33.2c-.2 0-.3-.1-.4-.2-.7-.9-1.4-1.7-2.2-2
.4-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0 .8.7 1.6 1.6 2.3 2.5.2.2.2.6-.1.8-.2 0-.3.1-.4.1zm-22.8-4.3c-.2 0-.3-.1-.4-.2-.2-.2-.2-.6.1-.8 1.7-1.4 4.1-2.3 6.9-2.7 2.2-.3 4.3-.2 6.3.2.3.1.5.4.4.7-.1.3-.4.5-.7.4-1.9-.4-3.9-.5-5.9-.2-2.7.4-4.8 1.2-6.4 2.4-.1.2-.2.2-.3.2z"/>
- <path fill="#F9F9FA" d="M250.2 50.1h-97.9c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h97.9c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z"/>
- </g>
- <g fill-rule="nonzero">
- <path fill="#F9F9FA" d="M49.3 29.4h13.2s-4.1-9.2 4.6-10.4c7.8-1.1 10.9 7 10.9 7s.9-4.6 5.6-3.8c4.6.9 8 8.3 8 8.3h11.5"/>
- <path fill="#D7D7DB" d="M62.9 27.9H49.7c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h12.8s.1-.1.2-.1c.3-.1.6 0 .7.3l.1.1c.1.2.1.4 0 .5-.2.3-.4.4-.6.4zm36.6-.1h-3.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .3-.3.6-.6.6zm-20.9-3.6h-.2c-.3-.1-.5-.4-.4-.7.3-.9 1.5-4 4.9-4 .4 0 .8 0 1.2.1 1.8.3 3.6 1.5 5.4 3.4.2.2.2.6 0 .8-.2.2-.6.2-.8 0-1.6-1.7-3.2-2.7-4.8-3-.4-.1-.7-.1-1-.1-2.6 0-3.5 2.2-3.8 3.2-.1.1-.3.3-.5.3zm-15.2-4.9c-.1 0-.3-.1-.4-.2-.2-.2-.2-.6 0-.8.8-.8 1.8-1.4 3.1-1.7.3-.1.6.1.7.4.1.3-.1.6-.4.7-1.1.3-2 .8-2.6 1.4-.1.2-.3.2-.4.2zm8.4-1.5h-.2c-.3-.1-.7-.2-1-.3-.3-.1-.5-.3-.4-.7.1-.3.4-.5.7-.4.4.1.8.2 1.1.3.3.1.5.4.4.7-.2.3-.4.4-.6.4z"/>
- <path fill="#F9F9FA" d="M104 31.6H49.6c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1H104c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z"/>
- </g>
- <g fill-rule="nonzero">
- <path fill="#FFF" d="M19.6 169.1c-2.8 0-5-2.2-5-4.8V46c0-3 2.4-5.4 5.4-5.4h127c3 0 5.4 2.4 5.4 5.4v118.3c0 2.6-2.3 4.8-5 4.8H19.6z"/>
- <path fill="#D7D7DB" d="M146.9 41.8c2.3 0 4.2 1.9 4.2 4.2v118.3c0 2-1.8 3.7-3.9 3.7H19.6c-2.2 0-3.9-1.6-3.9-3.7V46c0-2.3 1.9-4.2 4.2-4.2h127zm0-2.2h-127c-3.6 0-6.5 2.9-6.5 6.5v118.3c0 3.3 2.8 5.9 6.2 5.9h127.6c3.4 0 6.2-2.7 6.2-5.9V46c0-3.5-2.9-6.4-6.5-6.4z"/>
- </g>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M145.8 62.9V161c0 1-.1 1.2-.1 1.2s-.2.1-1.2.1h-122c-1 0-1.2-.1-1.2-.1s-.1-.2-.1-1.2V62.9h124.6zm1.1-1.2H20v99.2c0 2 .4 2.5 2.5 2.5h122c2 0 2.5-.4 2.5-2.5V61.7h-.1z"/>
- <g fill="#D7D7DB" fill-rule="nonzero">
- <circle cx="3.8" cy="3.7" r="2.9" transform="translate(23 48)"/>
- <circle cx="3" cy="3.7" r="2.9" transform="translate(33 48)"/>
- <path d="M115.3 54.9H51.5c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1h63.8c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.8-1.4 3.1-3.1 3.1z"/>
- <g>
- <circle cx="3.8" cy="3.7" r="2.9" transform="translate(127 48)"/>
- <circle cx="3.1" cy="3.7" r="2.9" transform="translate(137 48)"/>
- </g>
- </g>
- <g transform="translate(149 84)">
- <ellipse cx="42.7" cy="142" fill="#EDEDF0" fill-rule="nonzero" rx="42.5" ry="6.5"/>
- <path fill="#F9F9FA" fill-rule="nonzero" d="M121.2 99.6c-1.3-3.1-4.3-5.2-7.7-5.2-.7 0-1.4.1-2.1.3-.8 0-3.1-.3-7.2-2-1.7-.7-4.8-3.9-8.4-10.5 5.2-19.9 5.5-36.8.7-50.3-.4-1-.9-2.1-1.5-3.2l-.3-1.4 2-1.7c1.6-1.4 2.3-3.5 1.7-5.6-.3-1.2-1-2.2-2-2.9 0-.3 0-.6-.1-.9-.4-2.3-2.2-4.1-4.5-4.4-.4-.1-10.6-1.7-17.1-1.7h-.4l-1.7-2.8C70 3.1 65.5.6 60.5.6c-2.6 0-5.2.7-7.5 2.1-2.6 1.6-4.5 3.9-5.7 6.7-6 .7-12.1 2.3-18.2 4.7l-3.4-1.4c-1.7-.7-3.5-1.1-5.4-1.1-5.8 0-10.9 3.5-13.1 8.8-2.7 6.6-.1 14 5.8 17.5-1.1 5.9-1.5 12.4-1 19.6.6 9-2.2 13.5-5.1 18.2-4.4 7.1-9.4 15.1 0 33.8 0 2.2.1 4.2.2 5.8 1.3 11.8 4.6 17.7 10 17.7.9 0 1.9-.2 2.7-.6 2.2-1.1 3.3-2.6 5-9.9 9.3 3.1 21.2 5.8 30.9 6.9-1.7 7.6-1.5 9.4 0 11.4 1.2 1.5 3 2.4 5 2.4 4.1 0 8.8-4.1 14-12.1 1.3-2.1 2.8-5 4.4-8.5 1.4-2.4 5.5-9.7 10-20.9 2.8 2.9 5.6 5 8.6 6.2 5.2 2.1 9.8 3.2 13.5 3.2 2.5 0 4.2-.5 5.1-.9 4.6-1.5 6.6-6.4 4.9-10.6z"/>
- <path d="M115.2 101.4c-.4-.9-1.5-1.4-2.4-1-.2.1-.6.1-1.2.1-1.4 0-4.6-.3-9.8-2.4-5.5-2.2-10.3-10.6-12.7-15.5-.1-.2-.1-.5-.1-.8 5.4-19.5 5.9-35.8 1.4-48.4-.3-.8-.7-1.8-1.3-2.7-.1-.1-.1-.2-.1-.3L87.7 25c-.1-.4 0-.8.4-1.1l2.6-2.2-5.8-.9c-.5-.1-.9-.4-.9-.9s.2-.9.6-1.2l3-1.6c-3.5-.5-8.9-1.1-12.7-1.1-1.1 0-2 .1-2.6.2l-.4.1c-.4.1-.9-.1-1.1-.5l-3.4-5.5C66 8 63.5 6.7 60.9 6.7c-1.4 0-2.8.4-4.1 1.2-2.2 1.4-3.5 3.7-3.6 6.3 0 .6-.5 1-1.1 1.1-7.2.4-14.7 2.2-22.2 5.4-.3.1-.6.1-.9 0l-5.4-2.2c-.9-.4-1.9-.6-2.9-.6-3.1 0-5.9 1.9-7.1 4.8-1.6 3.9.3 8.4 4.2 10l2.3.9c.5.2.8.8.6 1.3-1.8 6.2-2.4 13.6-1.8 21.9.7 11.1-2.9 16.9-6.1 22.1-4.3 6.9-7.7 12.3.9 28.6.1.2.1.4.1.5-.1 2.6 0 4.7.2 6.3.8 7.8 2.6 11.1 3.4 11.8.4-.8 1.2-3.3 2.9-11.3.1-.3.3-.6.6-.8.2-.1.3-.1.5-.1.1 0 .3 0 .4.1 10.8 4.5 29.6 8.7 41.2 9.1.3 0 .7.2.9.4.2.3.3.6.2.9-2.1 8.3-2.5 11-2.5 11.9 1.1-.3 4.2-2.7 8.3-9.1 1.2-1.9 2.5-4.5 4-7.9 0 0 0-.1.1-.1 3.3-5.6 8.7-16.6 13-29.4.1-.4.5-.7.9-.8.4 0 .9.2 1.1.5 3.7 6.2 7.8 10.4 11.7 12 5.5 2.2 9.1 2.7
11.1 2.7 1.6 0 2.4-.3 2.7-.4.6-.4 1-1.5.7-2.4z"/>
- <path fill="url(#a)" fill-rule="nonzero" d="M114.6 98c-.8-2.1-2.9-3.4-5.1-3.4-.6 0-1.1.1-1.7.3-.7 0-3.4 0-8.7-2.2-3-1.2-6.8-6-10.3-12.8 5.4-19.8 5.7-36.5 1-49.7-.3-1-.8-2-1.4-3l-.9-3.4 3.3-2.8c.8-.7 1.1-1.7.8-2.7-.3-1-1.1-1.7-2.1-1.9l-.7-.1c.5-.6.8-1.4.6-2.2-.2-1.1-1-2-2.1-2.1-.1 0-10.3-1.6-16.7-1.6-.7 0-1.3 0-1.9.1l-2.6-4.2C64 2.9 60.4.9 56.4.9c-2.1 0-4.2.6-6 1.7-2.5 1.6-4.3 4.1-5 6.9-6.6.6-13.5 2.3-20.3 5.1l-4.4-1.8c-1.4-.6-2.8-.8-4.3-.8-4.7 0-8.8 2.8-10.6 7.1-2.4 5.8.4 12.5 6.2 14.9l.2.1c-1.4 6.1-1.9 13.2-1.4 20.9.7 9.9-2.5 15-5.6 19.9-4.3 6.9-8.7 14 .4 31.7 0 2.4 0 4.5.2 6.2.6 5.7 2.4 15.2 7.2 15.2.5 0 1-.1 1.5-.4 1.3-.6 2.1-1.5 4.2-11.1 10.3 3.8 25.5 7.2 36.4 8.1-2.6 10.4-2 11.1-1.2 12.2.7.9 1.7 1.4 2.8 1.4 4.1 0 9-6.8 11.6-10.8 1.3-2 2.7-4.8 4.2-8.3C75.5 114 80 104.9 84 94c3.4 4.5 6.9 7.6 10.6 9.1 4.9 2 9.1 3 12.5 3 2 0 3.3-.4 4.1-.7 3.2-1.4 4.5-4.6 3.4-7.4zm-4.4 3.8c-.3.1-1.1.4-2.7.4-2 0-5.6-.5-11.1-2.7-3.9-1.6-8-5.7-11.7-12-.2-.4-.6-.6-1.1-.5-.4 0-.8.3-.9.8-4.3 12.8-9.
7 23.9-13 29.4 0 0 0 .1-.1.1-1.5 3.4-2.8 6.1-4 7.9-4.1 6.4-7.1 8.8-8.3 9.1 0-.9.4-3.6 2.5-11.9.1-.3 0-.7-.2-.9-.2-.3-.5-.4-.9-.4-11.6-.4-30.4-4.6-41.2-9.1-.1-.1-.3-.1-.4-.1-.2 0-.4 0-.5.1-.3.2-.5.4-.6.8-1.7 8.1-2.5 10.6-2.9 11.3-.8-.7-2.6-4-3.4-11.8-.2-1.7-.2-3.8-.2-6.3 0-.2 0-.4-.1-.5-8.5-16.3-5.2-21.7-.9-28.6 3.2-5.1 6.8-11 6.1-22.1-.5-8.3.1-15.7 1.8-21.9.2-.5-.1-1.1-.6-1.3l-2.3-.9c-3.9-1.6-5.8-6.1-4.2-10 1.2-2.9 4-4.8 7.1-4.8 1 0 2 .2 2.9.6l5.4 2.2c.3.1.6.1.9 0 7.5-3.2 15-5 22.2-5.4.6 0 1-.5 1.1-1.1.1-2.6 1.5-4.9 3.6-6.3 1.2-.8 2.6-1.2 4.1-1.2 2.7 0 5.1 1.4 6.5 3.6l3.4 5.5c.2.4.7.6 1.1.5l.4-.1c.7-.1 1.6-.2 2.6-.2 3.8 0 9.2.6 12.7 1.1l-3 1.6c-.4.2-.7.7-.6 1.2.1.5.5.8.9.9l5.8.9-2.6 2.2c-.3.3-.5.7-.4 1.1l1.3 5.4c0 .1.1.2.1.3.6 1 1 1.9 1.3 2.7 4.5 12.7 4 29-1.4 48.4-.1.3 0 .5.1.8 2.4 4.8 7.1 13.2 12.7 15.5 5.2 2.1 8.4 2.4 9.8 2.4.6 0 1 0 1.2-.1.9-.4 2 .1 2.4 1 .6.9.2 2-.7 2.4z" transform="translate(4 2)"/>
- <path fill="url(#b)" fill-rule="nonzero" d="M36.6 40.6c-1.1 0-2.2-.2-3.3-.7l-16.2-6.6c-4.5-1.8-6.7-7-4.8-11.5 1.8-4.5 7-6.7 11.5-4.8L40 23.6c4.5 1.8 6.7 7 4.8 11.5-1.4 3.4-4.7 5.5-8.2 5.5z"/>
- <path fill="url(#c)" fill-rule="nonzero" d="M70.8 39.3c-2.9 0-5.8-1.5-7.5-4.2L53.1 18.6c-2.6-4.1-1.3-9.6 2.8-12.1C60 3.9 65.5 5.2 68 9.3l10.2 16.5c2.6 4.1 1.3 9.6-2.8 12.1-1.4 1-3 1.4-4.6 1.4z"/>
- <path fill="url(#d)" fill-rule="nonzero" d="M28.6 19.4c-2.2.9-12.8 10.5-11.1 37.1 1.7 26.2-21.6 21.8-3.8 53.4 3.9 6.9 50.2 17.7 58.6 12.7 2.5-1.5 31.6-54.6 19.1-89.8-4.1-11.5-28.5-28-62.8-13.4z"/>
- <path fill="url(#e)" fill-rule="nonzero" d="M14.3 87.5s-2.6 17.8-1.7 26.6c1 8.8 3.3 13.7 5.1 12.8 1.7-.8 6.2-26.8 6.2-26.8l-9.6-12.6z"/>
- <path fill="url(#f)" fill-rule="nonzero" d="M80.7 103s-5.5 17.1-10.3 24.6c-4.8 7.5-9.1 10.8-10.2 9.3-1.2-1.5 6.2-26.8 6.2-26.8l14.3-7.1z"/>
- <path fill="url(#g)" fill-rule="nonzero" d="M33.5 19c7.8-4 28.9-2.7 38.4-4.1C77 14.1 91 16.3 91 16.3l-6 3.2 8.2 1.2-4.5 3.8 1.8 7.3-1.3-.7-46.3-12.8-9.4.7z"/>
- <path fill="url(#h)" fill-rule="nonzero" d="M111.4 105.1c-2.3 0-6-.6-11.5-2.8-10-4-16.7-20.9-17.4-22.9-.6-1.5.2-3.2 1.7-3.8 1.5-.6 3.2.2 3.8 1.7 1.7 4.5 7.7 16.9 14.1 19.5 7.1 2.9 10.2 2.3 10.2 2.3 1.5-.6 3.2.1 3.8 1.6.6 1.5-.1 3.2-1.6 3.8-.4.3-1.4.6-3.1.6z"/>
- <path fill="#FFF" fill-rule="nonzero" d="M35.4 29.8c-8.3 5.5-3.2 72.6 2.7 79.8 9.5 11.8 31.7 9.3 34.6 3 1.1-2.3 26-48.2 14.3-79.8-3-8-22.5-22.3-51.6-3z"/>
- <path fill="url(#i)" fill-rule="nonzero" d="M50.3 43.8c.9.2 1.4 1.1 1.2 1.9l-.8 3.5c-.2.9-1.1 1.4-1.9 1.2-.9-.2-1.4-1.1-1.2-1.9l.8-3.5c.2-.9 1.1-1.4 1.9-1.2z"/>
- <path fill="url(#j)" fill-rule="nonzero" d="M81.4 44.8c.9.2 1.4 1.1 1.2 1.9l-.8 3.5c-.2.9-1.1 1.4-1.9 1.2-.9-.2-1.4-1.1-1.2-1.9l.8-3.5c.2-.9 1-1.4 1.9-1.2z"/>
- <path fill="url(#k)" fill-rule="nonzero" d="M48.9 57.6c-.5 0-1-.1-1.5-.2-3.5-.8-4.7-3.9-4.7-4.1-.3-.8.1-1.6.9-1.9.8-.3 1.6.1 1.9.9 0 .1.7 1.8 2.6 2.2 1.9.5 3.3-.8 3.3-.8.6-.6 1.5-.5 2.1 0 .6.6.5 1.5 0 2.1-.2.1-2 1.8-4.6 1.8z"/>
- <path fill="url(#l)" fill-rule="nonzero" d="M56.6 69.2c-.8 0-1.4-.6-1.5-1.3-.1-.8.5-1.5 1.3-1.6 8.9-.7 17.1-2.5 18-3.8 1-1.7 1.2-4 1.2-4.1 0-.8.7-1.4 1.4-1.4.8 0 1.4.5 1.5 1.3.1 1.3.6 3.4 1.2 4.1 1.1 1.3 2.3 1.2 2.3 1.2.8 0 1.5.6 1.6 1.4.1.8-.6 1.5-1.4 1.6-1 .1-3.2-.3-4.8-2.3-.1-.2-.3-.4-.4-.6-.1.1-.1.2-.2.3-2 3.3-14.8 4.7-20.3 5.2h.1z"/>
- <g fill-rule="nonzero">
- <path fill="url(#m)" d="M2.4 4.3C1.3 5 7.7 8.2 8.6 8.2c1.3 0 7.8-2.8 7.6-5C16 2.1 6.8 1.3 2.4 4.3z" transform="translate(70 52)"/>
- <path fill="url(#n)" d="M8.6 9.7C7.5 9.7 1.5 7 .9 5c-.2-.8.1-1.5.7-2C5.8.2 13.9.3 16.3 1.4c1 .4 1.2 1.1 1.3 1.6.1.9-.2 1.7-1 2.6-1.8 2.1-6.4 4.1-8 4.1zm-3.9-5c1.3.8 3.5 1.9 4.1 2 .9-.1 4.3-1.7 5.5-2.8-2-.4-6.5-.5-9.6.8z" transform="translate(70 52)"/>
- </g>
- <g fill-rule="nonzero">
- <path fill="#C8C8CC" d="M115 92.8l-7.2.1-.5-40.7c0-3.3 2.5-6.1 5.7-6.3.3 0 .5.2.5.4l1.5 46.5z"/>
- <path fill="#E1E1E6" d="M130.1 53.3c.2-.2.5-.1.7.1 1.9 2.7 1.4 6.4-1.1 8.5l-31.3 26-4.6-5.5 36.3-29.1z"/>
- <path fill="url(#o)" d="M.7 10c-.4 2.6.2 5.2 1.9 7.1.8 1 1.8 1.7 2.9 2.3 3.5 1.6 7.8 1 11-1.7.2-.2.5-.4.7-.6l10.1-8.4c.4-.4.7-.9.8-1.4.1-.6-.1-1.1-.5-1.5l-2.9-3.4c-.2-.2-.4-.4-.7-.6-.2-.1-.5-.2-.7-.2-.6-.1-1.1.1-1.5.5l-2.9 2.4c-.1-.2-.2-.3-.4-.5-.8-1-1.8-1.7-2.9-2.3-3.5-1.6-7.8-1-11 1.7C2.5 5.1 1.2 7.5.7 10zm6.6-3.4c1.9-1.6 4.5-2.1 6.5-1.1.6.3 1.1.7 1.5 1.1 1.4 1.6 1.3 4.1.1 6.1-.5.7-1.1 1.4-2 2.1-1.9 1.3-4.2 1.5-5.9.7-.6-.3-1.1-.7-1.5-1.1-.8-1-1.2-2.4-.9-3.8 0-1.5.9-2.9 2.2-4z" transform="translate(77 75)"/>
- <path fill="url(#p)" d="M0 2.5l.2 13.2v.9c.1 4.1 2.3 7.8 5.7 9.4 1.2.6 2.5.9 3.8.8 5.1-.1 9.3-4.7 9.2-10.4-.1-4.1-2.3-7.8-5.7-9.4-1.2-.6-2.5-.9-3.8-.8h-.6V2.4c0-.8-.5-1.5-1.2-1.9C7.3.4 7 .3 6.7.3L2.2.4C1.6.4 1.1.6.7 1 .2 1.4 0 2 0 2.5zm11.3 8.3c1.9.9 3.2 3.1 3.3 5.6 0 3.4-2.2 6.1-5 6.2-.7 0-1.3-.1-1.9-.4-1.8-.8-3-2.7-3.2-4.9v-.1c0-1.2.1-2.1.3-2.9.7-2.2 2.5-3.9 4.7-3.9.5 0 1.2.1 1.8.4z" transform="translate(107 83)"/>
- <path fill="#C8C8CC" d="M111.3 70.6c1.3.1 2.2 1.3 2.1 2.5-.1 1.3-1.3 2.2-2.5 2.1-1.3-.1-2.2-1.3-2.1-2.5.1-1.2 1.2-2.2 2.5-2.1z"/>
- </g>
- <path fill="url(#q)" fill-rule="nonzero" d="M1.4 2.1L.3 5.7c-1 3.1.7 6.4 3.8 7.4 3.1 1 6.4-.7 7.4-3.8L14.4.1l-13 2z" transform="translate(57 67)"/>
- <path fill="url(#r)" fill-rule="nonzero" d="M63.3 74.7h-.2c-.4-.1-.6-.5-.5-.9l2.2-6.8c.1-.4.5-.6.9-.5.4.1.6.5.5.9L64 74.2c-.1.3-.4.5-.7.5z"/>
- <path fill="url(#s)" fill-rule="nonzero" d="M58.7 98.1c-17.5 0-33-27.8-33.6-29-.8-1.4-.3-3.2 1.2-4 1.4-.8 3.2-.3 4 1.2 4.2 7.6 17.5 27 29.4 25.9 15.2-1.4 22.4-6.9 22.4-7 1.3-1 3.1-.8 4.1.5 1 1.3.8 3.1-.4 4.1-.3.3-8.5 6.7-25.6 8.2-.5.1-1 .1-1.5.1z"/>
- <path fill="url(#t)" fill-rule="nonzero" d="M112.5 97.8s-8 3.2-8.1 5.9c-.1 2.7 8.2 6 11.8.7 3.6-5.2-2.3-7.2-3.7-6.6z"/>
- <path fill="url(#u)" fill-rule="nonzero" d="M30.5 65.3s.7 5.9 4.4 9.2c3.7 3.3-4.8 8.1-4.4 15.4.4 7.4 0-24.6 0-24.6z"/>
- <path fill="url(#v)" fill-rule="nonzero" d="M58.8 98.9h-1.1C44 98.5 32 81 31.5 80.2c-.2-.3-.1-.8.2-1 .3-.2.8-.1 1 .2.1.2 12.1 17.7 25 18 12.8.3 25.3-6.2 27.1-7.7.5-.4.9-2.6.2-3.7-.7-1-2.4-.3-3.6.5-.3.2-.8.1-1-.2-.2-.3-.1-.8.2-1 3.4-2.1 4.9-.9 5.6-.1 1.2 1.6.8 4.7-.4 5.7-1.2 1-13.4 8-27 8z"/>
- <path fill="url(#w)" fill-rule="nonzero" d="M110.8 108.3c-1.3 0-2.8-.3-4.4-1.3-1.9-1-2.8-2.2-2.7-3.6.2-2.7 4.7-4.5 5.2-4.7.4-.1.8 0 1 .4.1.4 0 .8-.4 1-1.6.6-4.2 2.1-4.3 3.5-.1.9 1 1.7 1.9 2.2 2.2 1.2 4.3 1.4 6.1.6 2.1-1 3.1-2.8 3.2-3.2.1-.6.5-2.4-.5-3.5-.7-.8-2.1-1.1-4.1-.9-.4 0-.8-.3-.8-.7 0-.4.3-.8.7-.8 2.5-.2 4.3.2 5.3 1.4 1.5 1.6 1 4 .8 4.7-.2.9-1.6 3.2-4 4.3-.8.3-1.8.6-3 .6z"/>
- <path fill="url(#x)" fill-rule="nonzero" d="M61.1 125.5c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7 3.2 0 8.1-1 8.2-1 .4-.1.8.2.9.6.1.4-.2.8-.6.9-.2-.1-5.1.9-8.5.9z"/>
- <path fill="url(#y)" fill-rule="nonzero" d="M23 25.4h-.2c-.4-.1-.6-.5-.5-.9.2-.7 2.4-5 7.8-7.4.4-.2.8 0 1 .4.2.4 0 .8-.4 1-4.7 2-6.7 5.8-6.9 6.4-.2.3-.5.5-.8.5z"/>
- <path fill="url(#z)" fill-rule="nonzero" d="M68.5 14.8c-8.9 0-18.2-1.2-18.3-1.2-.4-.1-.7-.4-.6-.8.1-.4.4-.7.8-.6.1 0 14.1 1.8 24.1 1 .4 0 .8.3.8.7 0 .4-.3.8-.7.8-2 0-4 .1-6.1.1z"/>
- <path fill="url(#A)" fill-rule="nonzero" d="M88.8 89h-.2c-.4-.1-.6-.5-.5-.9l2-6c.1-.4.5-.6.9-.5.4.1.6.5.5.9l-2 6c-.1.3-.4.5-.7.5z"/>
- <path fill="url(#B)" fill-rule="nonzero" d="M21 119.1h-.1c-.4-.1-.7-.5-.6-.9l1.7-8.6c.1-.4.5-.7.9-.6.4.1.7.5.6.9l-1.7 8.6c-.2.4-.5.6-.8.6z"/>
- </g>
- <path fill="#D7D7DB" fill-rule="nonzero" d="M70.8 82.4c-3.7 0-6.6 3-6.6 6.6h6.6v-6.6zm20 0h-6.6V89h6.6v-6.6zm13.3 0V89h6.6c0-3.6-3-6.6-6.6-6.6zm-23.3 0h-6.6V89h6.6v-6.6zm19.9 0h-6.6V89h6.6v-6.6zm3.4 16.6h6.6v-6.6h-6.6V99zm0 20c3.7 0 6.6-3 6.6-6.6h-6.6v6.6zm0-10h6.6v-6.6h-6.6v6.6zm-1.5-7.2c-2.1-3-6.2-3.7-9.3-1.6l-12.7 9.4-6.5-4.6c0-.3.1-.6.1-1 0-2.7-1.3-5.1-3.3-6.6v-5h-6.6v3.5c-3.8.8-6.6 4.1-6.6 8.1 0 4.6 3.7 8.3 8.3 8.3 1.8 0 3.5-.6 4.8-1.6l4.1 2.9-4.6 3.3c-1.3-.8-2.7-1.2-4.3-1.2-4.6 0-8.3 3.7-8.3 8.3 0 4.6 3.7 8.3 8.3 8.3 4.6 0 8.3-3.7 8.3-8.3 0-.6-.1-1.1-.2-1.6l28.5-20.6zm-36.7 6.4c-2.3 0-4.2-1.9-4.2-4.2 0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.2 1.9 4.2 4.2-.1 2.3-1.9 4.2-4.2 4.2zm0 19.9c-2.3 0-4.2-1.9-4.2-4.2 0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.2 1.9 4.2 4.2-.1 2.4-1.9 4.2-4.2 4.2zm17.9-8l10 7.6c3 2.1 7.2 1.4 9.3-1.6L89.6 116l-5.8 4.1z"/>
- <g fill="#D7D7DB" fill-rule="nonzero">
- <path d="M17.5 26.8l-.1-.1.1.1zM266.5 1.5v4.4c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5V3h-2.9c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h4.4c.8 0 1.5.7 1.5 1.5zM266.5 14.4v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V40c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.4zm0 17.1V57c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V74c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V91c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17.1v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17.1v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5
1.5zM266.5 184.8v4.4c0 .8-.7 1.5-1.5 1.5h-4.4c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h2.9v-2.9c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.5zM253.3 189.2c0 .8-.7 1.5-1.5 1.5H243c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5H208c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.4.7 1.4 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8
c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5H94c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5H59c.8 0 1.4.7 1.4 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zM7.8 189.2c0 .8-.7 1.5-1.5 1.5H2c-.8 0-1.5-.7-1.5-1.5v-4.4c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5v2.9h2.9c.8 0 1.4.7 1.4 1.5zM3.4 14.4v8.5c0 .8-.7 1.5-1.5 1.5S.4 23.7.4 22.9v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V40c0 .8-.7 1.5-1.5 1.5S.4 40.8.4 40v-8.5c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.4zm0 17.1V57c0 .8-.7 1.5-1.5 1.5S.4 57.8.4 57v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V74c0 .8-.7 1.5-1.5 1.5S.4 74.8.4 74v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V91c0 .8-.7 1.5-1.5 1.5S.4 91.8.4 91v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17.1v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7
-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17.1v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zM7.8 1.5c0 .8-.7 1.5-1.5 1.5H3.4v2.9c0 .8-.7 1.5-1.5 1.5S.4 6.7.4 5.9V1.5C.4.7 1.1 0 1.9 0h4.4c.9 0 1.5.7 1.5 1.5zM253.3 1.5c0 .8-.7 1.5-1.5 1.5H243c-.8 0-1.5-.7-1.5-1.5S242.2 0 243 0h8.8c.8 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5H208c-.8 0-1.5-.7-1.5-1.5S207.2 0 208 0h8.8c.8 0 1.4.7 1.4 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-
.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S137 0 137.8 0h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S84.4 0 85.2 0H94c.9 0 1.5.7 1.5 1.5zM78 1.5c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S66.9 0 67.7 0h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S49.3 0 50.1 0H59c.8 0 1.4.7 1.4 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S31.8 0 32.6 0h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S14.3 0 15.1 0h8.8c.8 0 1.5.7 1.5 1.5z"/>
- </g>
- <path d="M-18-32h352v303H-18z"/>
- </g>
-</svg>
diff --git a/browser/extensions/onboarding/content/img/figure_singlesearch.svg b/browser/extensions/onboarding/content/img/figure_singlesearch.svg
deleted file mode 100644
index 9be029397ccf..000000000000
--- a/browser/extensions/onboarding/content/img/figure_singlesearch.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="303" height="253" viewBox="0 0 303 253" xmlns="http://www.w3.org/2000/svg"><title>search</title><defs><linearGradient x1="-18.632%" y1="-397.383%" x2="117.795%" y2="492.152%" id="a"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-312.046%" y1="-3945.649%" x2="293.266%" y2="2768.992%" id="b"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-291.258%" y1="-362.215%" x2="267.9%" y2="331.228%" id="c"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-145.39%" y1="-145.464%" x2="148.231%" y2="148.054%" id="d"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-760.952%" y1="-957.112%" x2="540.851%" y2="637.214%" id="e"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></
linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-18-9h352v303H-18z"/><g fill-rule="nonzero"><g fill="#D7D7DB"><path d="M262.3 209.3H138.8c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h123.5c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1zM245.6 203.7h-31c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h31c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zM217.5 214.1h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-22.3 0h-3.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-11.1 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-22.4 0h-3.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-7.8 0H145c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-11.1 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6H135c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-22.3 0h-3.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6
-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-11.2 0H80.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-22.3 0H68c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.2.6-.5.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-11.2 0H39c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6z"/></g><path d="M6.3 148.8c-2.8 0-5.1-2.3-5.1-5.1v-27.2c0-2.8 2.3-5.1 5.1-5.1h245.8c2.8 0 5.1 2.3 5.1 5.1v27.2c0 2.8-2.3 5.1-5.1 5.1H6.3z" fill="#FFF"/><path d="M252.1 2.4c2.2 0 4 1.8 4 4v27.2c0 2.2-1.8 4-4 4H6.3c-2.2 0-4-1.8-4-4V6.4c0-2.2 1.8-4 4-4h245.8zm0-2.2H6.3C2.9.2.1 3 .1 6.4v27.2c0 3.4 2.8 6.2 6.2 6.2h245.8c3.4 0 6.2-2.8 6.2-6.2V6.4c.1-3.4-2.7-6.2-6.2-6.2z" fill="url(#a)" transform="translate(0 110)"/><path d="M157 23.5h24.1s-7.5-16.9 8.5-19c14.3-1.9 19.9 12.7 19.9 12.7s1.7-8.5 10.2-6.8c8.4 1.6 14.6 15.1 14.6 15.1h21" fill="#F9F9FA"/><path d="M255.6 21.4h-6.2c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h6.2c.3 0 .6.2.6.6 0 .
4-.3.6-.6.6zm-16.2 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-57.9-.6h-1.8c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1c-.1-.2-.2-.4-.3-.7-.1-.3.1-.6.3-.7.3-.1.6.1.7.3.3.9.5 1.4.5 1.4.1.2.1.4 0 .5 0 .3-.2.4-.4.4zm-10.7 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6-.1.3-.3.6-.6.6zm63.4-.1c-.2 0-.4-.1-.5-.3-.4-.6-.9-1.6-1.7-2.8-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.8 1.2 1.4 2.2 1.8 2.9.2.3.1.6-.2.8h-.4zM179.9 15c-.3 0-.5-.2-.6-.5-.1-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.2-.1.5-.5.6.1 0 0 0 0 0zm29.1-2.5c-.2 0-.4-.1-.5-.3-.2-.3-.3-.6-.5-1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.4.4.7.6 1 .1.3 0 .6-.2.8-.3.1-.3.1-.4.1zm17.7-1.4c-.1 0-.3 0-.4-.1-2.1-1.8-4.3-3-6.3-3.4-2-.4-3.8-.2-5.3.6-.3.1-.6 0-.8-.2-.1-.3 0-.6.2-.8 1.7-.9 3.8-1.1 6.1-.7 2.3.4 4.6 1.6 6.9 3.6.2.2.3.6.1.8-.2.1-.4.2-.5.2zm-20.9-3.2c-.2 0-.3-.1-.4-.2-.7-.8-1.5-1.6-2.3-2.3-.2-.2-.3-.6-.1-.8.2-.2.5-.3.8-.1.9.7 1.7 1.5 2.4 2.4.2.2.2.6-.1.8 0 .2-.2.2-.3.2zm-23-3.2c-.2 0-.3-.1-.4-.2-.2-.
2-.2-.6 0-.8 1.8-1.6 4.3-2.7 7.5-3.1 1.9-.3 3.8-.2 5.7.1.3.1.5.3.5.6-.1.3-.3.5-.6.5-1.7-.3-3.5-.3-5.3-.1-2.9.4-5.3 1.3-6.9 2.8-.2.1-.4.2-.5.2z" fill="#D7D7DB"/><path d="M256.3 25.7H157c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h99.4c.6 0 1.1.5 1.1 1.1 0 .6-.6 1.1-1.2 1.1zM4 46.5h13.4s-4.2-9.4 4.7-10.6C30 34.8 33.2 43 33.2 43s.9-4.7 5.7-3.8c4.7.9 8.1 8.4 8.1 8.4h11.7" fill="#F9F9FA"/><path d="M17.8 45H4.5c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.7.6zm41.3-.1h-.5c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h.5c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-20.4-3.4c-.2 0-.4-.2-.5-.4L33 41c-.1-.3 0-.6.2-.7.5-1.6 2-3.8 4.9-3.8.4 0 .8 0 1.3.1 1.7.3 3.3 1.3 5 2.9.2.2.2.6 0 .8-.2.2-.6.2-.8 0-1.5-1.4-3-2.3-4.4-2.6-.4-.1-.7-.1-1-.1-3.2 0-3.9 3.3-4 3.5-.1.2-.3.4-.5.4zm-15.6-4.9c-.1 0-.3 0-.4-.1-.2-.2-.3-.6-.1-.8.7-.9 1.8-1.5 3.1-1.9.3-.1.6.1.7.4.1.3-.1.6-.4.7-1.1.3-1.9.9-2.5 1.6 0 0-.2.1-.4.1zm8.3-1.9h-.1c-.3-.1-.7-.2-1-.2-.3
0-.5-.3-.5-.6s.3-.5.6-.5c.4.1.8.1 1.2.2.3.1.5.4.4.7-.1.2-.3.4-.6.4z" fill="#D7D7DB"/><path d="M59.5 48.8H4.3c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h55.3c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.2 1.1z" fill="#F9F9FA"/><g><path d="M210 92.1v-9.5c0-2-1.6-3.6-3.6-3.6H38.3c-2 0-3.6 1.6-3.6 3.6v9.5c0 2 1.6 3.6 3.6 3.6h168.1c2 0 3.6-1.6 3.6-3.6zm0-34.8v-9.5c0-2-1.6-3.6-3.6-3.6H38.3c-2 0-3.6 1.6-3.6 3.6v9.5c0 2 1.6 3.6 3.6 3.6h168.1c2 0 3.6-1.6 3.6-3.6zm0 121.3v-9.5c0-2-1.6-3.6-3.6-3.6H38.3c-2 0-3.6 1.6-3.6 3.6v9.5c0 2 1.6 3.6 3.6 3.6h168.1c2 0 3.6-1.6 3.6-3.6z" fill="#FFF"/><path d="M206 44.2c2.2 0 4 1.8 4 4v8.7c0 2.2-1.8 4-4 4H38.8c-2.2 0-4-1.8-4-4v-8.7c0-2.2 1.8-4 4-4H206zm0 34.8c2.2 0 4 1.8 4 4v8.7c0 2.2-1.8 4-4 4H38.8c-2.2 0-4-1.8-4-4V83c0-2.2 1.8-4 4-4H206zm0 86.5c2.2 0 4 1.8 4 4v8.7c0 2.2-1.8 4-4 4H38.8c-2.2 0-4-1.8-4-4v-8.7c0-2.2 1.8-4 4-4H206zm0-123.6H38.8c-3.4 0-6.2 2.8-6.2 6.2v8.7c0 3.4 2.8 6.2 6.2 6.2H206c3.4 0 6.2-2.8 6.2-6.2v-8.7c0-3.4-2.8-6.2-6.2-6.2zm0 34.8H38.8c-3.4 0-6.2 2.8-6.
2 6.2v8.7c0 3.4 2.8 6.2 6.2 6.2H206c3.4 0 6.2-2.8 6.2-6.2V83c0-3.5-2.8-6.3-6.2-6.3zm0 86.6H38.8c-3.4 0-6.2 2.8-6.2 6.2v8.7c0 3.4 2.8 6.2 6.2 6.2H206c3.4 0 6.2-2.8 6.2-6.2v-8.7c0-3.4-2.8-6.2-6.2-6.2z" fill="#D7D7DB"/></g><path d="M300.8 176.6l-.1-.1-4.7-4.3c-.2-1.2-.8-2.3-1.7-3.1l-17.4-16c-.9-.8-2-1.3-3.2-1.4l-8.3-7.6c-1-1-2.2-1.7-3.5-2.1 10.8-18 8.1-41.3-6.9-56.4-8.7-8.7-20.3-13.5-32.6-13.5s-23.9 4.8-32.6 13.5c-18 18-18 47.3 0 65.2 8.7 8.7 20.3 13.5 32.6 13.5 8.3 0 16.6-2.3 23.7-6.6.4 1.3 1.2 2.6 2.2 3.6l7.6 8.3c.1 1.2.6 2.3 1.4 3.2l16 17.4c.8.9 1.9 1.5 3.1 1.7l4.2 4.6.1.1c1.5 1.5 3.4 2.3 5.7 2.3 3.6 0 7.8-2 11.2-5.4 5.7-5.8 7.1-13 3.2-16.9z" fill="#F9F9FA"/><g><path d="M224.1 88.7c-10.7 0-20.3 5.1-26.3 13h52.6c-6.1-7.9-15.6-13-26.3-13z" fill="#F9F9FA"/><path d="M248.9 152.7c.5-1.5 1.4-3.1 3.1-4.8 1.6-1.6 3.2-2.6 4.8-3.1l-2.5-2.5c12-15.9 10.8-38.6-3.7-53.1-7.9-7.9-18.3-11.9-28.7-11.9-10.4 0-20.8 4-28.7 11.9-15.8 15.8-15.8 41.5 0 57.4 7.9 7.9 18.3 11.9 28.7 11.9 8.6 0 17.2-2.7 24.4-8
.2l2.6 2.4zm-27-1.8c-11.8 0-22.1-6.2-28-15.4.1.1.1.3.2.4-1-1.6-1.9-3.3-2.7-5.1v-.1c-.2-.4-.4-.9-.5-1.3l-.6-1.8v-.1c-.9-3-1.4-6.2-1.4-9.6 0-3.8.7-7.5 1.8-10.9.6-1.8 1.4-3.6 2.4-5.3h.2c5.7-10 16.4-16.7 28.8-16.7 12.3 0 23.1 6.7 28.7 16.7h.1c.9 1.7 1.7 3.4 2.4 5.3 1.2 3.4 1.8 7 1.8 10.9-.1 18.2-14.9 33-33.2 33z" fill="#CCEDF0"/><path d="M253.2 107h-58.7c-2.2 4.4-3.5 9.5-3.5 14.8 0 4.9 1.1 9.6 3 13.7 5.9 9.3 16.2 15.4 28 15.4 18.3 0 33.1-14.8 33.1-33.1-.1-3.8-.7-7.4-1.9-10.8zM190.8 107h-.1c-1.2 3.4-1.8 7-1.8 10.9 0 3.3.5 6.5 1.4 9.6-.9-3-1.3-6.1-1.3-9.3-.1-4 .6-7.8 1.8-11.2zM190.9 129.3l-.6-1.8.6 1.8z" fill="#FFF"/><path d="M71.3 26.7H18.7c-1.3 1.6-2.4 3.4-3.3 5.3h58.7c-.6-1.8-1.4-3.6-2.4-5.3h-.1c.4.7.8 1.5 1.2 2.2-.4-.7-.9-1.5-1.5-2.2z" fill="url(#b)" transform="translate(179 75)"/><path d="M193.3 101.7h-.2c-.9 1.7-1.7 3.4-2.4 5.3h.1c.7-1.9 1.5-3.6 2.5-5.3z" fill="#E9E9EE"/><path d="M15.5 32c.9-1.9 2-3.6 3.3-5.3 6-7.9 15.6-13 26.3-13 10.7 0 20.2 5.1 26.3 13 .5.7 1.1 1.5 1.6 2.2-.4-.8-.
7-1.5-1.2-2.2C66.1 16.7 55.4 10 43.1 10S20 16.7 14.3 26.7c-1 1.7-1.8 3.4-2.4 5.3-1.2 3.5-1.9 7.2-1.9 11.1 0 3.2.5 6.4 1.3 9.3v.1l.6 1.8c.2.5.3.9.5 1.3v.1c.7 1.8 1.6 3.5 2.7 5.1-.1-.1-.1-.3-.2-.4-1.9-4.2-3-8.8-3-13.7.1-5.3 1.4-10.3 3.6-14.7z" fill="url(#c)" opacity=".4" transform="translate(179 75)"/><path d="M119.1 103.6l-5.7-5.2c0-.2.1-.3.1-.5 0-.6-.3-1.2-.7-1.6l-17.4-16c-.4-.4-1-.6-1.5-.6-.2 0-.4 0-.7.1l-9.4-8.6c-.8-.8-1.8-1.3-3-1.5l-2.5-2.5c11.6-16.8 9.5-39.9-5-54.5C65.2 4.6 54.5.2 43 .2S20.8 4.7 12.7 12.7C-4 29.4-4 56.5 12.7 73.2c8.1 8.1 18.8 12.5 30.2 12.5 8.6 0 17.1-2.7 24.2-7.5l2.6 2.6c.2 1.2.8 2.2 1.6 3l8.6 9.4c-.2.7-.1 1.6.5 2.2l16 17.4c.4.4 1 .7 1.6.7.2 0 .3 0 .5-.1l5.2 5.7c.8.8 2 1.3 3.3 1.3 2.7 0 6.1-1.7 8.8-4.5 4.4-4.5 5.8-9.8 3.3-12.3zM14.3 71.5C-1.5 55.7-1.5 30 14.3 14.1 22.2 6.2 32.6 2.2 43 2.2c10.4 0 20.8 4 28.7 11.9 14.5 14.5 15.7 37.2 3.7 53.1l2.5 2.5c-1.6.5-3.2 1.5-4.8 3.1-1.7 1.7-2.7 3.3-3.1 4.8l-2.5-2.5c-7.2 5.5-15.8 8.2-24.4 8.2-10.5.1-20.9-3.9-28.8-11.8zm96.9
26.3L98 111.1 82 93.7l11.8-11.8 17.4 15.9z" fill="url(#d)" transform="translate(179 75)"/><path fill="#CCEDF0" d="M277 186.1l13.2-13.3-17.4-15.9-11.8 11.8"/></g><ellipse fill="#EDEDF0" cx="242.1" cy="246.7" rx="57.2" ry="5.8"/><g><path d="M21.3 33.9c-.6 0-1.3-.2-1.8-.6L7.1 23.2c-1.3-.9-2.4-2-3.2-3.2C1 15.5 1.6 9.5 5.4 5.8c2.1-2.1 5-3.3 8-3.3s5.8 1.1 7.9 3.2c2.1-2 4.9-3.2 7.9-3.2 3.3 0 6.5 1.5 8.7 4 3.2 3.8 3.5 9.4.8 13.5-.8 1.3-1.9 2.3-3.2 3.2l-12.3 10c-.6.5-1.2.7-1.9.7z" fill="url(#e)" transform="translate(201 113)"/><path d="M214.4 117c2.5 0 5 1 6.9 2.9.3.3.6.4 1 .4s.7-.1 1-.4c1.9-1.9 4.4-2.8 6.9-2.8 2.7 0 5.5 1.2 7.5 3.5 2.8 3.3 3 8.1.7 11.7-.8 1.1-1.7 2-2.7 2.7l-12.4 10.1c-.2.2-.5.3-.8.3-.3 0-.5-.1-.8-.3L209.2 135c-1.1-.7-2.1-1.6-2.8-2.8-2.5-3.8-2-9 1.3-12.2 1.7-2 4.2-3 6.7-3zm0-3.1c-3.4 0-6.7 1.3-9.1 3.8-4.3 4.3-5 11.1-1.7 16.2.9 1.4 2.2 2.7 3.6 3.7l12.4 10c.8.6 1.8 1 2.8 1 1 0 2-.3 2.7-1l12.3-10.1c1.4-1 2.6-2.1 3.5-3.5 3.1-4.7 2.8-11.1-.9-15.4-2.5-2.9-6.1-4.6-9.9-4.6-2.9 0-5.
6.9-7.9 2.7-2.2-1.9-4.9-2.8-7.8-2.8z" fill="#FFF"/><path d="M208.6 128.1h-.1c-.9-.1-1.6-.9-1.5-1.8.3-3.2 2.5-5.8 5.7-6.5.9-.2 1.8.4 1.9 1.2.2.9-.4 1.8-1.2 1.9-1.7.4-3 1.8-3.1 3.6-.2 1-.9 1.6-1.7 1.6z" fill="#F9F9FA"/></g></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_sync.svg b/browser/extensions/onboarding/content/img/figure_sync.svg
deleted file mode 100644
index 74562d37236d..000000000000
--- a/browser/extensions/onboarding/content/img/figure_sync.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="279" height="212" viewBox="0 0 279 212" xmlns="http://www.w3.org/2000/svg"><title>sync</title><defs><linearGradient x1="-424.525%" y1="-219.797%" x2="201.215%" y2="136.157%" id="a"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1416.558%" y1="-1417.275%" x2="631.855%" y2="631.14%" id="b"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1909.4%" y1="-1924.057%" x2="675.504%" y2="691.989%" id="c"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1453.558%" y1="-828.355%" x2="354.762%" y2="235.706%" id="d"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-608.073%" y1="-599.552%" x2="1804.502%" y2="1813.024%" id="e"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"
/></linearGradient><linearGradient x1="-55.527%" y1="-25.138%" x2="334.297%" y2="252.524%" id="f"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-359.418%" y1="-359.43%" x2="1512.409%" y2="1512.397%" id="g"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-393.876%" y1="-203.242%" x2="1247.254%" y2="755.651%" id="h"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-772.819%" y1="-773.412%" x2="1098.573%" y2="1098.414%" id="i"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1129.33%" y1="-1133.526%" x2="1256.735%" y2="1279.05%" id="j"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-78.929%" y1="-156.663%" x2="182.03%" y2="261.703%" id
="k"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-2.965%" y1="-86.281%" x2="110.352%" y2="213.059%" id="l"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-833.673%" y1="-459.972%" x2="807.063%" y2="498.921%" id="m"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-17.606%" y1="-93.916%" x2="104.414%" y2="177.35%" id="n"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-37-28h352v268H-37z"/><g fill-rule="nonzero"><g><path d="M23 23.1h23.9S39.4 6.4 55.3 4.2c14.2-1.9 19.8 12.6 19.8 12.6s1.7-8.4 10.1-6.8c8.3 1.6 14.5 15 14.5 15h20.8" fill="#F9F9FA"/><path d="M121 21.1h-5.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h5.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-15.4 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4
.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-5.5-.1c-.2 0-.4-.1-.5-.3-.2-.3-.7-1.4-1.7-2.9-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2 1 1.5 1.6 2.6 1.7 2.9.1.3 0 .6-.2.8-.1.1-.2.1-.3.1zm-52.7-.6h-1.6c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h.8c-.1-.2-.2-.5-.3-.9-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.6.6 1.6.1.2.1.4 0 .5-.3.2-.5.3-.6.3zm-10.6 0H23.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm8.9-5.9c-.3 0-.5-.2-.6-.5 0-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.2-.1.5-.5.6.1-.1.1 0 0 0zm29.2-1.8c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.4.4.7.5 1 .1.3 0 .6-.2.8-.2.1-.2.1-.3.1zm17.8-1.4c-.1 0-.3 0-.4-.1-2.3-2.1-4.6-3.4-6.8-3.8-.7-.1-1.4-.2-2-.2-1 0-2 .2-2.8.5-.3.1-.6 0-.7-.3-.1-.3 0-.6.3-.7 1-.4 2.1-.6 3.3-.6.7 0 1.4.1 2.2.2 2.4.5 4.9 1.8 7.3 4 .2.2.2.6 0 .8-.1.1-.2.2-.4.2zM71.8 8c-.2 0-.3-.1-.4-.2-.7-.9-1.5-1.6-2.3-2.3-.2-.2-.3-.6-.1-.8.2-.2.6-.3.8-.1.8.7 1.6 1.6 2.4 2.5.2.2.2.6-.1.8-.1.1-.2.1-.3.1zM48.9 4.2c-.2 0-.3-.1-.4-.2-.2-.2-.2-.6.
1-.8C50.4 1.7 52.8.8 55.8.3c2.1-.3 4.1-.2 6 .1.3.1.5.4.4.7-.1.3-.3.5-.7.4-1.8-.4-3.7-.4-5.6-.1-2.8.4-5 1.3-6.6 2.6-.2.2-.3.2-.4.2z" fill="#D7D7DB"/><path d="M121.6 25.3H23c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h98.6c.6 0 1.1.5 1.1 1.1 0 .6-.4 1.1-1.1 1.1zM222.4 31.5h13.3s-4.2-9.3 4.7-10.5c7.9-1.1 11 7 11 7s.9-4.7 5.6-3.8c4.6.9 8 8.3 8 8.3h11.6" fill="#F9F9FA"/><path d="M236.1 30h-13.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.3v.5l.5-.2c.1.2.1.4 0 .6-.2.2-.3.3-.5.3zm36.5-.2h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-20.8-3.3h-.1c-.3-.1-.5-.4-.4-.7.1-.4 1.1-4.3 5-4.3.4 0 .8 0 1.2.1 1.7.3 3.5 1.4 5.2 3.1.2.2.2.6 0 .8-.2.2-.6.2-.8 0-1.6-1.6-3.1-2.5-4.6-2.8-.4-.1-.7-.1-1-.1-3 0-3.8 2.8-3.9 3.4-.1.3-.4.5-.6.5zm-15.3-5.1c-.1 0-.3 0-.4-.1-.2-.2-.2-.6 0-.8.8-.8 1.8-1.5 3.1-1.8.3-.1.6.1.7.4.1.3-.1.6-.4.7-1.1.3-2 .8-2.6 1.5-.1.1-.3.1-.4.1zm8.3-1.6h-.2c-.3-.1-.7-.2-1-.2-.3-.1-.5-.3-.5-.6.1-.3.3-.5.6-.5l1.2.3c.3.1.5.4.4.7 0 .1-.2.3-.5.3z" fill="#D7D7DB"/><path d="M277.5
33.7h-54.9c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h54.9c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z" fill="#F9F9FA"/><ellipse fill="#EDEDF0" cx="144.1" cy="206.4" rx="59.7" ry="5.2"/><path d="M187.8 21.6h.1c.7 0 1.3-.5 1.3-1.2.1-1.5 1.2-2.7 2.6-3 .7-.2 1.2-.9 1-1.6-.2-.7-.9-1.2-1.6-1-2.6.6-4.5 2.8-4.7 5.4 0 .7.6 1.4 1.3 1.4z" fill="#F9F9FA"/><ellipse fill="#EDEDF0" cx="248.8" cy="206.4" rx="25.7" ry="4.5"/><ellipse fill="#EDEDF0" cx="35.7" cy="206.4" rx="35" ry="4.5"/></g><path d="M173 63.2c-.1-.3-.5-.5-.9-.4-.9.4-1.8.7-2.7 1.1-.2.1-.3.3-.4.5h2.7c.3-.1.6-.3.9-.4.4-.1.6-.5.4-.8zM231.7 155.7c.1.1.3.2.5.2s.3-.1.5-.2c.2-.2.4-.5.7-.7h-1.8c-.1.2-.1.5.1.7zM149.2 63.7c.3-.2.3-.7.1-.9-.2-.3-.7-.3-.9-.1-.3.3-.7.6-1 .8-.3.2-.3.6-.1.9h1.1c.2-.2.5-.4.8-.7zM65.2 62.8c-.2.1-.3.1-.5.2.5 0 .9.1 1.3.2-.1-.4-.5-.5-.8-.4zM129.2 63.9c.1.1.3.2.4.2.2 0 .4-.1.5-.2.2-.3.2-.7-.1-.9-.3-.3-.7-.6-1-.8-.3-.2-.7-.2-.9.1-.2.3-.2.7.1.9.3.1.6.4 1 .7zM42.3 62.8c-.2-.3-.7-.3-.9-.1l-.3.3h1.4c-.1-.1-.1-.2-.2-.2z" fill="#F3
F3F7"/><path d="M196.2 171.5c0 .4-.3.7-.6.7-1 .1-2 .1-2.9.1h-.1c-3.9 0-7.9-.4-11.7-1.2-.4-.1-.6-.4-.5-.8.1-.4.4-.6.8-.5 3.7.8 7.6 1.2 11.4 1.2 1 0 2 0 2.9-.1.4-.1.7.2.7.6zm10.5-109.3c3.7 1 7.4 2.4 10.8 4.1.1 0 .2.1.3.1.2 0 .5-.1.6-.4.2-.3 0-.7-.3-.9-3.5-1.8-7.2-3.2-11.1-4.2-.4-.1-.7.1-.8.5 0 .3.2.7.5.8zm-11.3-3.1c-4.9-.2-9.9.2-14.7 1.2-.4.1-.6.4-.5.8.1.3.3.5.7.5h.1c4.7-1 9.6-1.4 14.4-1.2.4 0 .7-.3.7-.6-.1-.4-.3-.7-.7-.7zm-25.5 108.4c.3 0 .5-.1.6-.4.2-.3 0-.7-.3-.9-.6-.3-1.1-.5-1.7-.8h-2.9c1.3.7 2.7 1.4 4.1 2 0 0 .1.1.2.1zM223.3 68c-.3-.2-.7-.1-.9.2-.2.3-.1.7.2.9.8.5 1.6 1.1 2.4 1.6.1.1.3.1.4.1.2 0 .4-.1.5-.3.2-.3.1-.7-.2-.9-.8-.5-1.6-1-2.4-1.6zm-.6 94c-3.2 2.1-6.7 3.9-10.3 5.3-.3.1-.5.5-.4.9.1.3.4.4.6.4h.2c3.7-1.4 7.2-3.2 10.5-5.4.3-.2.4-.6.2-.9 0-.4-.5-.5-.8-.3zm-15.8 7c-.9.2-1.9.5-2.8.7-.4.1-.6.4-.5.8.1.3.3.5.7.5h.1c1-.2 1.9-.4 2.9-.7.4-.1.6-.5.5-.8-.1-.3-.5-.6-.9-.5zM192.6 54.7c16.8 0 32 6.8 43.1 17.9h3.7C227.7 60 211.1 52 192.6 52c-14.1 0-27.1 4.6-37.7 12.4h4.7c9.6-6.1 20.9-9.7
33-9.7zm0 121.8c-13.1 0-25.2-4.1-35.1-11.2H153c10.9 8.7 24.6 13.9 39.6 13.9 20.2 0 38.3-9.5 49.9-24.3H239c-11.1 13.2-27.8 21.6-46.4 21.6zm11.8 5.8c-5 .9-10.2 1.2-15.2.9-.3 0-.7.3-.7.6 0 .4.3.7.6.7 1.2.1 2.3.1 3.5.1 4 0 8.1-.4 12-1 .4-.1.6-.4.5-.8 0-.4-.3-.6-.7-.5zm-25.4-.4c-1.2-.3-2.5-.5-3.7-.9-.4-.1-.7.1-.8.5-.1.4.1.7.5.8 1.3.3 2.5.6 3.8.9h.1c.3 0 .6-.2.7-.5 0-.3-.2-.7-.6-.8zm37.7-3c-.4.2-.8.3-1.2.4-.3.1-.5.5-.4.9.1.3.4.4.6.4h.2c.4-.1.8-.3 1.2-.5.3-.1.5-.5.4-.9-.1-.3-.5-.5-.8-.3zm19.4-115c.1.1.3.2.4.2.2 0 .4-.1.5-.2.2-.3.2-.7-.1-.9-.3-.3-.7-.6-1-.8-.3-.2-.7-.2-.9.1-.2.3-.2.7.1.9.4.1.7.4 1 .7zm-65.7 115.7c-.4-.1-.8-.3-1.2-.4-.3-.1-.7 0-.9.4-.1.3 0 .7.4.9.4.2.8.3 1.2.4h.2c.3 0 .5-.2.6-.5.3-.3.1-.7-.3-.8zm54.4-4.4c-1.1.6-2.3 1.2-3.4 1.7-.3.2-.5.6-.3.9.1.2.4.4.6.4.1 0 .2 0 .3-.1 1.2-.6 2.3-1.1 3.5-1.8.3-.2.4-.6.3-.9-.3-.3-.7-.4-1-.2zm19.6-16.1c-3.3 3.9-7 7.4-11.1 10.5-.3.2-.4.6-.1.9.1.2.3.3.5.3.1 0 .3 0 .4-.1 4.1-3.1 7.9-6.7 11.3-10.7.2-.3.2-.7-.1-.9-.2-.3-.6-.3-.9 0zm.9-88c-.2-.3-.7-.
3-.9-.1-.3.2-.3.7-.1.9.2.2.3.4.5.6h1.7c-.4-.4-.8-.9-1.2-1.4zm-87-13.9c.1 0 .2 0 .3-.1 4.4-2.6 9.1-4.6 14-6.1.4-.1.6-.5.4-.8-.1-.4-.5-.6-.8-.4-5 1.5-9.8 3.6-14.3 6.3-.3.2-.4.6-.2.9.1.1.3.2.6.2zm45.8-8.2c5 .9 10 2.3 14.7 4.3.1 0 .2.1.3.1.3 0 .5-.2.6-.4.1-.3 0-.7-.4-.9-4.8-2-9.8-3.5-15-4.4-.4-.1-.7.2-.8.5 0 .3.3.7.6.8zm23.8 8.9c1.1.7 2.2 1.4 3.2 2.1.1.1.3.1.4.1.2 0 .4-.1.6-.3.2-.3.1-.7-.2-.9-1.1-.7-2.2-1.5-3.3-2.1-.3-.2-.7-.1-.9.2-.2.3-.1.7.2.9zM191.4 48h1.3c.4 0 .6-.3.6-.7 0-.4-.4-.7-.7-.7h-1.2c-.4 0-.7.3-.7.7 0 .4.3.7.7.7zm-45.8 118.2c3.8 3.5 8 6.7 12.5 9.3.1.1.2.1.3.1.2 0 .5-.1.6-.3.2-.3.1-.7-.2-.9-4.3-2.5-8.4-5.5-12.1-8.9h-1.2c-.1.1-.1.5.1.7zm36.8-117.5c.1 0 .1 0 0 0 1.3-.2 2.6-.3 3.9-.5.4 0 .6-.4.6-.7 0-.4-.4-.6-.7-.6-1.3.1-2.6.3-3.9.5-.4.1-.6.4-.6.8.1.3.4.5.7.5zM97.3 171h.1c1-.2 1.9-.4 2.9-.7.4-.1.6-.5.5-.8-.1-.4-.5-.6-.8-.5-.9.2-1.9.5-2.8.7-.4.1-.6.4-.5.8 0 .3.3.5.6.5zm2-109.6c-.1.4.1.7.5.8 2.3.6 4.5 1.4 6.7 2.3h3.3c-3.1-1.5-6.4-2.7-9.7-3.6-.4-.1-.7.1-.8.5zm-25.6-1.1c-.4.1-.6.4-
.5.8.1.3.3.5.7.5h.1c4.7-1 9.6-1.4 14.4-1.2.4 0 .7-.3.7-.6 0-.4-.3-.7-.6-.7-5-.3-10 .1-14.8 1.2zm-.3 110c-.1.4.2.7.5.8 3.8.8 7.8 1.2 11.7 1.2h.1c1 0 2 0 2.9-.1.4 0 .7-.3.6-.7 0-.4-.3-.7-.7-.6-1 0-1.9.1-2.9.1-3.9 0-7.7-.4-11.4-1.2-.4-.2-.7.1-.8.5zm31.7-2.2c.1.3.4.4.6.4h.2c2.3-.9 4.6-2 6.7-3.1h-2.9c-1.4.7-2.8 1.3-4.3 1.9-.3.1-.5.5-.3.8zm-42.2-.6c.3 0 .5-.1.6-.4.2-.3 0-.7-.3-.9-1.8-.8-3.6-1.7-5.3-2.7h-2.6c2.3 1.5 4.8 2.8 7.3 3.9.1 0 .2.1.3.1zM85.6 54.7c12.1 0 23.4 3.6 32.9 9.7h4.7C112.7 56.6 99.7 52 85.6 52 72.4 52 60.1 56 50 62.9h5.1c9-5.2 19.4-8.2 30.5-8.2zm0 121.8c-14.2 0-27.2-4.9-37.6-13.1h-4.2c11.2 9.8 25.8 15.7 41.8 15.7 15 0 28.7-5.2 39.6-13.9h-4.5c-9.9 7.2-22 11.3-35.1 11.3zm32.2-1.3c-1.1.6-2.3 1.2-3.4 1.7-.3.2-.5.6-.3.9.1.2.4.4.6.4.1 0 .2 0 .3-.1 1.2-.6 2.3-1.1 3.5-1.8.3-.2.4-.6.3-.9-.3-.3-.7-.4-1-.2zm3.1-117.3c1.1.7 2.2 1.4 3.2 2.1.1.1.3.1.4.1.2 0 .4-.1.6-.3.2-.3.1-.7-.2-.9-1.1-.7-2.2-1.5-3.3-2.1-.3-.2-.7-.1-.9.2-.2.3-.1.7.2.9zM97.4 182.3c-5 .9-10.2 1.2-15.2.9-.4 0-.7.3-.7.6 0
.4.3.7.6.7 1.2.1 2.3.1 3.5.1 4 0 8.1-.4 12-1 .4-.1.6-.4.5-.8 0-.4-.3-.6-.7-.5zm-34-2.7c-.4-.1-.8-.3-1.2-.4-.3-.1-.7 0-.9.4-.1.3 0 .7.4.9.4.2.8.3 1.2.4h.2c.3 0 .5-.2.6-.5.3-.3.1-.7-.3-.8zm8.7 2.3c-1.2-.3-2.5-.5-3.7-.9-.4-.1-.7.1-.8.5-.1.4.1.7.5.8 1.3.3 2.5.6 3.8.9h.1c.3 0 .6-.2.7-.5 0-.3-.3-.7-.6-.8zm54.3-12.3c-.3.2-.4.6-.1.9.1.2.3.3.5.3.1 0 .3 0 .4-.1 2.2-1.7 4.3-3.4 6.2-5.3h-2c-1.6 1.5-3.3 2.9-5 4.2zm-16.7 9.3c-.4.2-.8.3-1.2.4-.3.1-.5.5-.4.9.1.3.4.4.6.4h.2c.4-.1.8-.3 1.2-.5.3-.1.5-.5.4-.9-.1-.3-.5-.5-.8-.3zM97.1 49c5 .9 10 2.3 14.7 4.3.1 0 .2.1.3.1.3 0 .5-.2.6-.4.1-.3 0-.7-.4-.9-4.8-2-9.8-3.5-15-4.4-.4-.1-.7.2-.8.5 0 .3.3.7.6.8zm-12.7-1h1.3c.4 0 .6-.3.6-.7 0-.4-.4-.7-.7-.7h-1.2c-.4 0-.7.3-.7.7.1.4.4.7.7.7zm-33.1 9.2c.1 0 .2 0 .3-.1 4.4-2.6 9.1-4.6 14-6.1.4-.1.6-.5.4-.8-.1-.4-.5-.6-.8-.4-5 1.5-9.8 3.6-14.3 6.3-.3.2-.4.6-.2.9.1.1.3.2.6.2zm.6 117.1c-4.4-2.5-8.6-5.6-12.3-9.1-.3-.3-.7-.2-1 0-.3.3-.2.7 0 1 3.8 3.5 8 6.7 12.5 9.3.1.1.2.1.3.1.2 0 .5-.1.6-.3.3-.4.2-.8-.1-1zM75.4 48.7c.1 0
.1 0 0 0 1.3-.2 2.6-.3 3.9-.5.4 0 .6-.4.6-.7 0-.4-.4-.6-.7-.6-1.3.1-2.6.3-3.9.5-.4.1-.6.4-.6.8.1.3.4.5.7.5z" fill="#D7D7DB"/><path d="M261.6 34.4h-30.1c-1.3 0-2.3 1-2.3 2.3v56.4c0 1.3 1 2.3 2.3 2.3h30.1c1.3 0 2.3-1 2.3-2.3V36.7c0-1.2-1-2.3-2.3-2.3zm-15.5 4.9c4.2 0 7.7 3.5 7.7 7.7s-3.5 7.7-7.7 7.7-7.7-3.5-7.7-7.7 3.5-7.7 7.7-7.7zm-7.5 23.1c.1-.4.5-.8 1-.9l3.7-.7 2.1-4.1.8-.1c.5 0 .9.3 1.1.7l1.7 3.5 4.4.8.3.7c.1.4 0 .9-.3 1.3l-2.6 2.8.7 4.7-.6.5c-.4.3-.9.3-1.3.1l-3.3-1.7-4 2.1-.7-.4c-.4-.3-.6-.7-.5-1.2l.6-3.9-3.1-3.4v-.8zm8.2 17.3c0-.7.5-1.2 1.2-1.2h1.3c-.8-.9-1.9-1.4-3.2-1.4-2 0-3.8 1.4-4.3 3.3-.1.5-.6.9-1.1.9h-.3c-.6-.2-1-.8-.9-1.4.8-3 3.4-5.1 6.6-5.1 1.6 0 3.2.6 4.4 1.7V76c0-.7.5-1.2 1.2-1.2s1.2.5 1.2 1.2v3.7c0 .7-.5 1.2-1.2 1.2H248c-.7 0-1.2-.5-1.2-1.2zm-.7 8.7c-1.6 0-3.2-.6-4.4-1.7v.5c0 .7-.5 1.2-1.2 1.2s-1.2-.5-1.2-1.2v-3.7c0-.7.5-1.2 1.2-1.2h3.7c.7 0 1.2.5 1.2 1.2s-.5 1.2-1.2 1.2h-1.3c.8.9 1.9 1.4 3.2 1.4 2 0 3.8-1.4 4.3-3.3.2-.6.8-1 1.4-.9.6.2 1 .8.9 1.4-.8 3-3.5 5.1-6.6 5.1z"
fill="url(#a)" transform="translate(1 46)"/><path d="M246.1 52.4c2.9 0 5.3-2.4 5.3-5.3s-2.4-5.3-5.3-5.3-5.3 2.4-5.3 5.3 2.4 5.3 5.3 5.3zm-1.1-8.6c0-.4.3-.7.7-.7.4 0 .7.3.7.7v3.1h3.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-3.7c-.4 0-.7-.3-.7-.7v-3.8h-.1z" fill="url(#b)" transform="translate(1 46)"/><path fill="url(#c)" d="M243.6 68.7l2.5-1.3 2.6 1.3-.5-3 2.1-2.2-2.9-.5-1.3-2.6-1.3 2.6-2.9.5 2.1 2.2" transform="translate(1 46)"/><path d="M240.9 70.5c-.1.5.1.9.5 1.2l.7.4 4-2.1 3.3 1.7c.4.2.9.2 1.3-.1l.6-.5-.7-4.7 2.6-2.8c.3-.3.4-.8.3-1.3l-.3-.7-4.4-.8-1.7-3.5c-.2-.4-.7-.7-1.1-.7l-.8.1-2.1 4.1-3.7.7c-.5.1-.8.4-1 .9l-.2.8 3.1 3.4-.4 3.9zm3.9-7.5l1.3-2.6 1.3 2.6 2.9.5-2.1 2.2.4 3-2.5-1.3-2.5 1.3.4-3-2.1-2.2 2.9-.5z" fill="url(#d)" transform="translate(1 46)"/><path fill="url(#e)" d="M35 60.4l-1.4 2.8-3.1.6 2.2 2.4-.4 3.2 2.7-1.5 2.7 1.5-.4-3.2 2.2-2.4-3.1-.6" transform="translate(1 46)"/><path d="M10.2 103.3h50.7c1.4 0 2.5-1.1 2.5-2.5V27.6c0-1.4-1.1-2.5-2.5-2.5H10.2c-1.4 0-2.5 1.1-2.5 2.5v73.2c.1
1.4 1.2 2.5 2.5 2.5zm32.1-14.5c-.8 3.3-3.8 5.7-7.3 5.7-1.8 0-3.5-.7-4.8-1.8v.4c0 .7-.6 1.3-1.3 1.3-.7 0-1.3-.6-1.3-1.3V89c0-.7.6-1.3 1.3-1.3H33c.7 0 1.3.6 1.3 1.3 0 .7-.6 1.3-1.3 1.3h-1.3c.9.9 2.1 1.4 3.4 1.4 2.2 0 4.1-1.5 4.6-3.6.2-.7.9-1.2 1.6-1 .7.2 1.1 1 1 1.7zm.2-3.9c0 .7-.6 1.3-1.3 1.3h-4.1c-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.3-1.3h1.3c-.9-.9-2.1-1.4-3.4-1.4-2.2 0-4.1 1.5-4.6 3.6-.2.6-.7 1-1.3 1h-.3c-.7-.2-1.2-.9-1-1.6.8-3.3 3.8-5.7 7.3-5.7 1.8 0 3.5.7 4.8 1.8v-.4c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v4zm.5-21L40.1 67l.7 5.1-.7.6c-.4.3-1 .4-1.5.1L35 71l-4.4 2.3-.8-.5c-.4-.3-.7-.8-.6-1.4l.6-4.3-3.4-3.7.2-.9c.2-.5.6-.9 1.1-1l4-.7 2.3-4.6.9-.1c.6 0 1 .3 1.3.8l1.9 3.8 4.8.9.3.8c.3.6.2 1.2-.2 1.5zm-8-30.2c4.7 0 8.5 3.8 8.5 8.5s-3.8 8.5-8.5 8.5-8.5-3.8-8.5-8.5 3.8-8.5 8.5-8.5z" fill="url(#f)" transform="translate(1 46)"/><path d="M29.2 42.2c0 3.2 2.6 5.8 5.8 5.8 3.2 0 5.8-2.6 5.8-5.8 0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.8 2.6-5.8 5.8zm4.6-3.6c0-.4.3-.7.7-.7.4 0 .7.3.7.7V42h3.4c.4 0 .7.3.7.7 0
.4-.3.7-.7.7h-4.1c-.4 0-.7-.3-.7-.7v-4.1z" fill="url(#g)" transform="translate(1 46)"/><path d="M43 61.7l-4.8-.9-1.9-3.8c-.2-.5-.7-.8-1.3-.8l-.9.1-2.3 4.6-4 .7c-.5.1-1 .5-1.1 1l-.2.9 3.4 3.7-.6 4.3c-.1.5.1 1.1.6 1.4l.8.5L35 71l3.6 1.9c.5.3 1.1.2 1.5-.1l.7-.6-.7-5.1L43 64c.4-.4.5-.9.3-1.4l-.3-.9zm-5.7 4.5l.4 3.2L35 68l-2.7 1.4.4-3.2-2.2-2.4 3.1-.6 1.4-2.8 1.4 2.8 3.1.6-2.2 2.4z" fill="url(#h)" transform="translate(1 46)"/><path d="M119.4 59.6c3.2 0 5.8-2.6 5.8-5.8 0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.8 2.6-5.8 5.8-.1 3.1 2.6 5.8 5.8 5.8zm-1.2-9.5c0-.4.3-.7.7-.7.4 0 .7.3.7.7v3.4h3.4c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-4.1c-.4 0-.7-.3-.7-.7v-4.1z" fill="url(#i)" transform="translate(1 46)"/><path fill="url(#j)" d="M143.4 52.3l-1.3-2.8-1.4 2.8-3.2.6 2.3 2.4-.5 3.2 2.8-1.4 2.7 1.4-.5-3.2 2.3-2.4" transform="translate(1 46)"/><path d="M102.8 81.1h77.6c1.6 0 2.8-1.3 2.8-2.8V32c0-1.6-1.3-2.8-2.8-2.8h-77.6c-1.6 0-2.8 1.3-2.8 2.8v46.3c-.1 1.6 1.2 2.8 2.8 2.8zm44.4-24.9l.7 5.1-.7.6c-.4.3-1 .4-1.5.1l-3.6-1
.9-4.4 2.3-.8-.5c-.4-.3-.7-.8-.6-1.4l.6-4.3-3.4-3.7.2-.9c.2-.5.6-.9 1.1-1l4-.7 2.3-4.6.9-.1c.5 0 1 .3 1.3.8l1.9 3.8 4.8.9.3.8c.2.5 0 1.1-.3 1.4l-2.8 3.3zm10.3-4.3c.8-3.3 3.8-5.7 7.3-5.7 1.8 0 3.5.7 4.8 1.8v-.4c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v4.1c0 .7-.6 1.3-1.3 1.3h-4.1c-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.3-1.3h1.3c-.9-.9-2.1-1.4-3.4-1.4-2.2 0-4.1 1.5-4.6 3.6-.2.6-.7 1-1.3 1h-.3c-.8-.2-1.2-1-1-1.7zm-.3 3.9c0-.7.6-1.3 1.3-1.3h4.1c.7 0 1.3.6 1.3 1.3 0 .7-.6 1.3-1.3 1.3h-1.3c.9.9 2.1 1.4 3.4 1.4 2.2 0 4.1-1.5 4.6-3.6.2-.7.9-1.2 1.6-1 .7.2 1.2.9 1 1.6-.8 3.3-3.8 5.7-7.3 5.7-1.8 0-3.5-.7-4.8-1.8v.4c0 .7-.6 1.3-1.3 1.3-.7 0-1.3-.6-1.3-1.3v-4zm-37.8-10.6c4.7 0 8.5 3.8 8.5 8.5s-3.8 8.5-8.5 8.5-8.5-3.8-8.5-8.5c-.1-4.7 3.8-8.5 8.5-8.5z" fill="url(#k)" transform="translate(1 46)"/><path d="M264.7 75.3h-34.4c-2.6 0-4.6 2.1-4.6 4.6v67.7c0 2.6 2.1 4.6 4.6 4.6h34.4c2.6 0 4.6-2.1 4.6-4.6V79.9c.1-2.5-2-4.6-4.6-4.6zm-11.8 71.1c0 1.2-.9 2.1-2.1 2.1h-6.7c-1.2 0-2.1-.9-2.1-2.1v-.1c0-1.2.9-2.1 2.1-2.1
h6.7c1.2.1 2.1 1 2.1 2.2zm12-7.3c0 1.3-1 2.3-2.3 2.3h-30.1c-1.3 0-2.3-1-2.3-2.3V82.7c0-1.3 1-2.3 2.3-2.3h30.1c1.3 0 2.3 1 2.3 2.3v56.4zM9 160.8h55.2c2.7 0 4.9-2.2 4.9-4.9V70.6c0-2.7-2.2-4.9-4.9-4.9H9c-2.7 0-4.9 2.2-4.9 4.9v85.3c-.1 2.7 2.1 4.9 4.9 4.9zm19.4-5.3v-1.7c0-1 .8-1.8 1.8-1.8H43c1 0 1.8.8 1.8 1.8v1.7c0 1-.8 1.8-1.8 1.8H30.2c-1 0-1.8-.9-1.8-1.8zM8.8 73.6c0-1.4 1.1-2.5 2.5-2.5H62c1.4 0 2.5 1.1 2.5 2.5v73.2c0 1.4-1.1 2.5-2.5 2.5H11.2c-1.4 0-2.5-1.1-2.5-2.5V73.6h.1zm92.4 57.9h82.7c2.6 0 4.8-2.1 4.8-4.8V71.9c0-2.6-2.1-4.8-4.8-4.8h-82.7c-2.6 0-4.8 2.1-4.8 4.8v54.8c0 2.7 2.2 4.8 4.8 4.8zM141 71c0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6 0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6zm-40.1 7c0-1.6 1.3-2.8 2.8-2.8h77.6c1.6 0 2.8 1.3 2.8 2.8v46.3c0 1.6-1.3 2.8-2.8 2.8h-77.6c-1.6 0-2.8-1.3-2.8-2.8V78zm94.8 84.7c1.6 0 3-1.2 3-2.6v-1.4c0-.3-.1-.7-.2-1l-9.9-21.7c-.5-1-1.5-1.7-2.8-1.7H98.7c-1.2 0-2.4.7-2.8 1.7l-9.3 21.7c-.1.3-.2.6-.2.9v1.4c0 1.5 1.3 2.6 3 2.6h106.3v.1zm-11.4-20.2l.5 1.5c.1.4-.5.9-1.2
.9h-5c-.4 0-.8-.2-.8-.4-.1-.6-.2-.9-.5-1.5-.2-.4.4-.9 1.1-.9h5c.4 0 .8.1.9.4zm-7.4-5.3h4.7c.4 0 .7.2.8.4.1.6.2.9.4 1.5.1.4-.4.8-1 .8h-4.6c-.4 0-.8-.2-.9-.4l-.5-1.5c-.2-.4.4-.8 1.1-.8zm-4.3 5.3c.1.6.2.9.3 1.5.1.4-.6.9-1.3.9h-5.1c-.5 0-.8-.2-.9-.5-.2-.6-.2-.9-.4-1.5-.1-.4.5-.9 1.3-.9h5.3c.4.1.8.3.8.5zm-7.1-5.3h5c.4 0 .8.2.8.4.1.6.2.9.3 1.5.1.4-.5.8-1.2.8h-4.9c-.4 0-.8-.2-.8-.4-.2-.6-.2-.9-.4-1.5-.1-.4.5-.8 1.2-.8zm-5.8 5.5c.1.6.1.9.2 1.6.1.4-.5.8-1.2.8h-5.3c-.5 0-.9-.2-1-.5-.1-.6-.2-.9-.3-1.6-.1-.4.5-.8 1.2-.8h5.5c.4-.1.8.1.9.5zm-6.8-5.5h5.2c.5 0 .9.2.9.5.1.6.1.9.2 1.5.1.4-.5.8-1.1.8H153c-.5 0-.9-.2-.9-.5-.1-.6-.2-.9-.3-1.5-.1-.4.5-.8 1.1-.8zm-13.4.6c.1-.3.5-.5 1.1-.5h4.7c.5 0 1 .2 1 .5.1.6.1.9.2 1.5.1.4-.4.7-1.1.7h-5.3c-.6 0-1.1-.3-1-.7.2-.6.2-.9.4-1.5zm-.4 5c.1-.3.5-.6 1.1-.6h5c.6 0 1 .2 1.1.6.1.6.2.9.3 1.6.1.4-.5.8-1.1.8H140c-.7 0-1.2-.4-1.1-.8 0-.6.1-1 .2-1.6zm-11.4-5.5h5.2c.7 0 1.2.4 1.1.8l-.5 1.5c-.1.3-.5.5-1 .5h-5.1c-.6 0-1.2-.4-1.1-.8.1-.6.2-.9.3-1.5.2-.3.6-.5 1.1-.5zm-2 5.5c.
1-.3.5-.5 1-.5h5.5c.7 0 1.3.4 1.1.8-.2.6-.3 1-.4 1.6-.1.3-.5.5-1 .5h-5.3c-.7 0-1.3-.4-1.2-.8.1-.6.2-.9.3-1.6zm-17.7.4c-.3.6-.4 1-.5 1.6-.1.3-.4.5-.8.5h-5c-.7 0-1.3-.4-1.2-.9.2-.6.3-1 .5-1.6.1-.3.5-.5.9-.5h5c.7 0 1.2.5 1.1.9zm1.2-3.5c-.1.3-.5.4-.9.4h-4.6c-.6 0-1.1-.4-.9-.8l.5-1.5c.1-.3.4-.4.8-.4h4.7c.7 0 1.2.4 1.1.8-.3.6-.5.9-.7 1.5zm10.5 5.1c-.1.3-.4.5-.9.5h-5.1c-.7 0-1.3-.4-1.2-.9.1-.6.2-1 .4-1.6.1-.3.4-.5.9-.5h5.3c.7 0 1.3.4 1.2.9-.3.6-.4 1-.6 1.6zm1.1-5.1c-.1.3-.4.4-.9.4H115c-.7 0-1.2-.4-1.1-.8.2-.6.3-.9.4-1.5.1-.3.4-.4.9-.4h5c.7 0 1.2.4 1.1.8l-.5 1.5zm3.1 14.6c.4-2.3.6-3.5 1.1-5.9 0-.3.4-.6.9-.6 13.6-.1 20.5-.2 34.1-.3.5 0 .9.2.9.6.3 2.4.5 3.6.6 6.1 0 .4-.6.8-1.2.8h-35.4c-.6.1-1.1-.3-1-.7z" fill="#FFF"/><path d="M263.7 26.6h-.2v-1.3c0-.6-.5-1.2-1.2-1.2h-6.5c-.6 0-1.2.5-1.2 1.2v1.3h-25.4c-4 0-7.3 3.3-7.3 7.3v67.7c0 4 3.3 7.3 7.3 7.3h34.4c4 0 7.3-3.3 7.3-7.3V33.9c.1-4-3.1-7.3-7.2-7.3zm4.7 75c0 2.6-2.1 4.6-4.6 4.6h-34.4c-2.6 0-4.6-2.1-4.6-4.6V33.9c0-2.6 2.1-4.6 4.6-4.6h34.4c2.6 0 4
.6 2.1 4.6 4.6v67.7zm-16.5-1.2c0 1.2-.9 2.2-2.1 2.2h-6.7c-1.2 0-2.1-.9-2.1-2.1v-.1c0-1.2.9-2.1 2.1-2.1h6.7c1.2 0 2.1.9 2.1 2.1zM54.3 117.5h8.8c4.2 0 7.6-3.4 7.6-7.6V24.6c0-3.6-2.4-6.5-5.7-7.4-.4-.1-.9-.2-1.3-.2H8C3.8 17 .4 20.4.4 24.6v85.3c0 4.2 3.4 7.6 7.6 7.6h46.3zM3 24.6c0-2.7 2.2-4.9 4.9-4.9h55.2c2.7 0 4.9 2.2 4.9 4.9v85.3c0 2.7-2.2 4.9-4.9 4.9H8c-2.7 0-4.9-2.2-4.9-4.9V24.6H3zm26.2 86.7c-1 0-1.8-.8-1.8-1.8v-1.7c0-1 .8-1.8 1.8-1.8H42c1 0 1.8.8 1.8 1.8v1.7c0 1-.8 1.8-1.8 1.8H29.2zm135.3 8.1H194.6c3.1 0 5.7-2.4 5.7-5.3v-1.4c0-.7-.2-1.4-.5-2.1l-9.9-21.7c-.5-1-1.2-1.8-2.2-2.4 1.6-1.4 2.6-3.4 2.6-5.6V26.1c0-4.1-3.4-7.5-7.5-7.5h-82.5c-4.1 0-7.5 3.4-7.5 7.5v54.8c0 2.1.9 4.1 2.3 5.4-1.2.6-2.1 1.5-2.6 2.7l-9.3 21.7c-.3.6-.4 1.3-.4 2v1.4c0 2.9 2.5 5.3 5.7 5.3h76zm-76-2.7c-1.6 0-3-1.2-3-2.6v-1.4c0-.3.1-.6.2-.9L95 90.1c.4-1 1.5-1.7 2.8-1.7h87.1c1.2 0 2.3.7 2.8 1.7l9.9 21.7c.1.3.2.6.2 1v1.4c0 1.5-1.3 2.6-3 2.6H88.5v-.1zm6.9-35.9V26c0-2.6 2.1-4.8 4.8-4.8h82.7c2.6 0 4.8 2.1 4.8 4.8v54.8c0 2.6-2
.1 4.8-4.8 4.8h-82.7c-2.6-.1-4.8-2.2-4.8-4.8zm27.5 27.5c.4-2.3.6-3.5 1.1-5.9 0-.3.4-.6.9-.6 13.6-.1 20.5-.2 34.1-.3.5 0 .9.2.9.6.3 2.4.5 3.6.6 6.1 0 .4-.6.8-1.2.8h-35.4c-.6.1-1.1-.3-1-.7zm-3.8-11.1c-.2.6-.3 1-.5 1.6-.1.3-.4.5-.9.5h-5.1c-.7 0-1.3-.4-1.2-.9.1-.6.2-1 .4-1.6.1-.3.4-.5.9-.5h5.3c.7 0 1.3.5 1.1.9zm5.3 1.2c.1-.6.2-1 .3-1.6.1-.3.5-.5 1-.5h5.5c.7 0 1.3.4 1.1.8-.2.6-.3 1-.4 1.6-.1.3-.5.5-1 .5h-5.3c-.7 0-1.2-.4-1.2-.8zm33.3-2.3c.5 0 .9.2 1 .5.1.6.1.9.2 1.6.1.4-.5.8-1.2.8h-5.3c-.5 0-.9-.2-1-.5-.1-.6-.2-.9-.3-1.6-.1-.4.5-.8 1.2-.8h5.4zm-19.9 2.3c.1-.6.2-.9.3-1.6.1-.3.5-.6 1.1-.6h5c.6 0 1 .2 1.1.6.1.6.2.9.3 1.6.1.4-.5.8-1.1.8H139c-.8-.1-1.3-.4-1.2-.8zm27.7-2.3h5.3c.5 0 .8.2.9.5.1.6.2.9.3 1.5.1.4-.6.9-1.3.9h-5.1c-.5 0-.8-.2-.9-.5-.2-.6-.2-.9-.4-1.5-.2-.5.5-.9 1.2-.9zm-45.1-3.9l-.5 1.5c-.1.3-.4.4-.9.4h-4.9c-.7 0-1.2-.4-1.1-.8.2-.6.3-.9.4-1.5.1-.3.4-.4.9-.4h5c.7 0 1.2.4 1.1.8zm6.3-.9h5.2c.7 0 1.2.4 1.1.8l-.5 1.5c-.1.3-.5.5-1 .5h-5.1c-.6 0-1.2-.4-1.1-.8.1-.6.2-.9.3-1.5.2-.3.6-.5 1.1-.
5zm24.4 2.2c-.1-.6-.2-.9-.3-1.5-.1-.4.5-.8 1.1-.8h5.2c.5 0 .9.2.9.5.1.6.1.9.2 1.5.1.4-.5.8-1.1.8H152c-.4 0-.8-.2-.9-.5zm-13-.2c.1-.6.2-.9.4-1.5.1-.3.5-.5 1.1-.5h4.7c.5 0 1 .2 1 .5.1.6.1.9.2 1.5.1.4-.4.7-1.1.7h-5.3c-.6 0-1.1-.3-1-.7zm25.6.2c-.2-.6-.2-.9-.4-1.5-.1-.4.5-.8 1.2-.8h5c.4 0 .8.2.8.4.1.6.2.9.3 1.5.1.4-.5.8-1.2.8h-4.9c-.4 0-.7-.1-.8-.4zM107 97.2c-.3.6-.4 1-.5 1.6-.1.3-.4.5-.8.5h-5c-.7 0-1.3-.4-1.2-.9.2-.6.3-1 .5-1.6.1-.3.5-.5.9-.5h5c.7 0 1.2.5 1.1.9zm1.8-5c-.2.6-.3.9-.6 1.5-.1.3-.5.4-.9.4h-4.6c-.6 0-1.1-.4-.9-.8l.5-1.5c.1-.3.4-.4.8-.4h4.7c.6 0 1.1.4 1 .8zm68.5 3.9h5c.4 0 .8.2.9.5l.5 1.5c.1.4-.5.9-1.2.9h-5c-.4 0-.8-.2-.8-.4-.1-.6-.2-.9-.5-1.5-.1-.6.4-1 1.1-1zm-2.1-2.6l-.5-1.5c-.1-.4.5-.8 1.2-.8h4.7c.4 0 .7.2.8.4.1.6.2.9.4 1.5.1.4-.4.8-1 .8h-4.6c-.5 0-.9-.2-1-.4zm-33.6-66.9c-.9 0-1.6-.7-1.6-1.6 0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6-.1.9-.8 1.6-1.6 1.6z" fill="url(#l)" transform="translate(1 46)"/><path d="M150.4 51.6l-.3-.8-4.8-.9-1.9-3.8c-.2-.5-.7-.8-1.3-.8l-.9.1-2.3 4.6-4 .7c
-.5.1-1 .5-1.1 1l-.2.9 3.4 3.7-.6 4.3c-.1.5.2 1.1.6 1.4l.8.5 4.4-2.3 3.6 1.9c.5.3 1.1.2 1.5-.1l.7-.6-.7-5.1 2.9-3.1c.3-.5.4-1.1.2-1.6zm-6.1 3.7l.4 3.2-2.7-1.4-2.7 1.4.4-3.2-2.2-2.4 3.1-.6 1.4-2.8 1.4 2.8 3.1.6-2.2 2.4z" fill="url(#m)" transform="translate(1 46)"/><path d="M238.4 47c0 4.2 3.5 7.7 7.7 7.7s7.7-3.5 7.7-7.7-3.5-7.7-7.7-7.7-7.7 3.5-7.7 7.7zm7.7-5.3c2.9 0 5.3 2.4 5.3 5.3s-2.4 5.3-5.3 5.3-5.3-2.4-5.3-5.3 2.4-5.3 5.3-5.3zm-1.1 5.8v-3.7c0-.4.3-.7.7-.7.4 0 .7.3.7.7v3.1h3.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-3.7c-.5-.1-.8-.4-.8-.8zm3 33.4c-.7 0-1.2-.5-1.2-1.2s.5-1.2 1.2-1.2h1.3c-.8-.9-1.9-1.4-3.2-1.4-2 0-3.8 1.4-4.3 3.3-.1.5-.6.9-1.1.9h-.3c-.6-.2-1-.8-.9-1.4.8-3 3.4-5.1 6.6-5.1 1.6 0 3.2.6 4.4 1.7V76c0-.7.5-1.2 1.2-1.2s1.2.5 1.2 1.2v3.7c0 .7-.5 1.2-1.2 1.2H248zm-1.9 7.5c-1.6 0-3.2-.6-4.4-1.7v.5c0 .7-.5 1.2-1.2 1.2s-1.2-.5-1.2-1.2v-3.7c0-.7.5-1.2 1.2-1.2h3.7c.7 0 1.2.5 1.2 1.2s-.5 1.2-1.2 1.2h-1.3c.8.9 1.9 1.4 3.2 1.4 2 0 3.8-1.4 4.3-3.3.2-.6.8-1 1.4-.9.6.2 1 .8.9 1.4-.8 3-3.5 5.1-6.
6 5.1zM35 50.7c4.7 0 8.5-3.8 8.5-8.5s-3.8-8.5-8.5-8.5-8.5 3.8-8.5 8.5 3.8 8.5 8.5 8.5zm0-14.3c3.2 0 5.8 2.6 5.8 5.8 0 3.2-2.6 5.8-5.8 5.8-3.2 0-5.8-2.6-5.8-5.8 0-3.2 2.6-5.8 5.8-5.8zm-1.2 6.3v-4.1c0-.4.3-.7.7-.7.4 0 .7.3.7.7V42h3.4c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-4.1c-.4 0-.7-.3-.7-.7zm8.7 38.1v4.1c0 .7-.6 1.3-1.3 1.3h-4.1c-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.3-1.3h1.3c-.9-.9-2.1-1.4-3.4-1.4-2.2 0-4.1 1.5-4.6 3.6-.2.6-.7 1-1.3 1h-.3c-.7-.2-1.2-.9-1-1.6.8-3.3 3.8-5.7 7.3-5.7 1.8 0 3.5.7 4.8 1.8v-.4c0-.7.6-1.3 1.3-1.3.7-.1 1.3.5 1.3 1.2zm-.2 8c-.8 3.3-3.8 5.7-7.3 5.7-1.8 0-3.5-.7-4.8-1.8v.4c0 .7-.6 1.3-1.3 1.3-.7 0-1.3-.6-1.3-1.3V89c0-.7.6-1.3 1.3-1.3H33c.7 0 1.3.6 1.3 1.3 0 .7-.6 1.3-1.3 1.3h-1.3c.9.9 2.1 1.4 3.4 1.4 2.2 0 4.1-1.5 4.6-3.6.2-.7.9-1.2 1.6-1 .7.2 1.1 1 1 1.7zm77.1-26.5c4.7 0 8.5-3.8 8.5-8.5s-3.8-8.5-8.5-8.5-8.5 3.8-8.5 8.5c-.1 4.6 3.8 8.5 8.5 8.5zm0-14.4c3.2 0 5.8 2.6 5.8 5.8 0 3.2-2.6 5.8-5.8 5.8-3.2 0-5.8-2.6-5.8-5.8-.1-3.2 2.6-5.8 5.8-5.8zm-1.2 6.3v-4.1c0-.4.3-.7.7-.7.4 0
.7.3.7.7v3.4h3.4c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-4.1c-.4 0-.7-.3-.7-.7zm39 5.7v-4.1c0-.7.6-1.3 1.3-1.3h4.1c.7 0 1.3.6 1.3 1.3 0 .7-.6 1.3-1.3 1.3h-1.3c.9.9 2.1 1.4 3.4 1.4 2.2 0 4.1-1.5 4.6-3.6.2-.7.9-1.2 1.6-1 .7.2 1.2.9 1 1.6-.8 3.3-3.8 5.7-7.3 5.7-1.8 0-3.5-.7-4.8-1.8v.4c0 .7-.6 1.3-1.3 1.3-.7.1-1.3-.5-1.3-1.2zm.3-8c.8-3.3 3.8-5.7 7.3-5.7 1.8 0 3.5.7 4.8 1.8v-.4c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v4.1c0 .7-.6 1.3-1.3 1.3h-4.1c-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.3-1.3h1.3c-.9-.9-2.1-1.4-3.4-1.4-2.2 0-4.1 1.5-4.6 3.6-.2.6-.7 1-1.3 1h-.3c-.8-.2-1.2-1-1-1.7z" fill="url(#n)" transform="translate(1 46)"/></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_tor-circuit-display.png b/browser/extensions/onboarding/content/img/figure_tor-circuit-display.png
new file mode 100644
index 000000000000..ea6ecb7f82a3
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-circuit-display.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-expect-differences.png b/browser/extensions/onboarding/content/img/figure_tor-expect-differences.png
new file mode 100644
index 000000000000..36970bd711a8
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-expect-differences.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-network.png b/browser/extensions/onboarding/content/img/figure_tor-network.png
new file mode 100644
index 000000000000..87829397ab2a
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-network.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-onion-services.png b/browser/extensions/onboarding/content/img/figure_tor-onion-services.png
new file mode 100644
index 000000000000..018345e4b3a0
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-onion-services.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-privacy.png b/browser/extensions/onboarding/content/img/figure_tor-privacy.png
new file mode 100644
index 000000000000..38201ca5c878
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-privacy.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-security-level.png b/browser/extensions/onboarding/content/img/figure_tor-security-level.png
new file mode 100644
index 000000000000..9a5c221c8d8e
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-security-level.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-security.png b/browser/extensions/onboarding/content/img/figure_tor-security.png
new file mode 100644
index 000000000000..6eb7e5a9995c
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-security.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-toolbar-layout.png b/browser/extensions/onboarding/content/img/figure_tor-toolbar-layout.png
new file mode 100644
index 000000000000..6d8651e58c17
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-toolbar-layout.png differ
diff --git a/browser/extensions/onboarding/content/img/figure_tor-welcome.png b/browser/extensions/onboarding/content/img/figure_tor-welcome.png
new file mode 100644
index 000000000000..1bf27c5b9311
Binary files /dev/null and b/browser/extensions/onboarding/content/img/figure_tor-welcome.png differ
diff --git a/browser/extensions/onboarding/content/img/icons_addons.svg b/browser/extensions/onboarding/content/img/icons_addons.svg
deleted file mode 100644
index 6b27dea39252..000000000000
--- a/browser/extensions/onboarding/content/img/icons_addons.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="8 8 16 16"><title>Icons / Extension</title><g fill="none"><path d="M0 0h16v16H0z"/><path d="M22.5 16c-1 0-1 1-1.7 1-.5 0-.8-.3-.8-.7V13c0-.6-.4-1-1-1h-3.2c-.5 0-.8-.3-.8-.7 0-.8 1-.8 1-1.8 0-.9-.9-1.5-2-1.5s-2 .6-2 1.5c0 1 1 1 1 1.8 0 .4-.3.7-.7.7H9c-.6 0-1 .4-1 1v2.3c0 .4.3.7.8.7.7 0 .7-1 1.7-1 .9 0 1.5.9 1.5 2s-.6 2-1.5 2c-1 0-1-1-1.7-1-.5 0-.8.3-.8.8V23c0 .6.4 1 1 1h3.3c.4 0 .7-.3.7-.7 0-.8-1-.8-1-1.8 0-.9.9-1.5 2-1.5s2 .6 2 1.5c0 1-1 1-1 1.8 0 .4.3.7.8.7H19c.6 0 1-.4 1-1v-3.2c0-.5.3-.8.8-.8.7 0 .7 1 1.7 1 .9 0 1.5-.9 1.5-2s-.6-2-1.5-2z" fill="#3E3D40"/></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_customize.svg b/browser/extensions/onboarding/content/img/icons_customize.svg
deleted file mode 100644
index ae0a9409fa5c..000000000000
--- a/browser/extensions/onboarding/content/img/icons_customize.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><title>Glyph / Customize</title><g id="Symbols" fill="none" fill-rule="evenodd"><g id="Glyph-/-Customize" fill-rule="nonzero" fill="#3E3D40"><path d="M4 10c-.886.002-1.665.59-1.91 1.44 0 .01-.015.015-.018.025-.362 1.135-.705 2.11-1.76 2.573l-.022.012-.024.012c-.162.086-.265.254-.266.438 0 .276.224.5.5.5 1.74.12 3.46-.414 4.825-1.5.006-.006.007-.013.013-.02.62-.55.832-1.428.534-2.202C5.575 10.504 4.83 9.995 4 10zM15.693.307c-.365-.363-.95-.383-1.338-.046l-8.03 7c-.206.18-.327.435-.336.707-.01.27.093.535.285.727l1.032 1.03c.184.185.433.288.693.288h.033c.272-.01.527-.13.706-.335l7-8.03c.338-.39.318-.975-.047-1.34z" id="Shape"/></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_default.svg b/browser/extensions/onboarding/content/img/icons_default.svg
deleted file mode 100644
index 235f7d65b685..000000000000
--- a/browser/extensions/onboarding/content/img/icons_default.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><title>default-browser-16</title><path fill="context-fill" d="M8,6s0-4,3.5-4S15,5,15,6c0,4.5-7,9-7,9Z"/><path fill="context-fill" d="M8,6S8,2,4.5,2,1,5,1,6c0,4.5,7,9,7,9L9,9Z"/></svg>
diff --git a/browser/extensions/onboarding/content/img/icons_library.svg b/browser/extensions/onboarding/content/img/icons_library.svg
deleted file mode 100644
index 064c2e619486..000000000000
--- a/browser/extensions/onboarding/content/img/icons_library.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg width="92px" height="92px" viewBox="0 0 92 92" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Tip / Icon / Library</title><desc>Created with Sketch.</desc><defs></defs><g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Tip-/-Icon-/-Library" fill-rule="nonzero" fill="#0C0C0D"><g id="Icon-/-Library-/-Web"><path d="M28.7405828,17.2350375 C25.5662458,17.2350375 22.9929371,19.8060508 22.9929371,22.9775563 L22.9929371,80.402744 C22.9929371,83.5742496 25.5662458,86.1452628 28.7405828,86.1452628 C31.9149199,86.1452628 34.4882285,83.5742496 34.4882285,80.402744 L34.4882285,22.9775563 C34.4882285,19.8060508 31.9149199,17.2350375 28.7405828,17.2350375 Z M45.98352,11.4925188 C42.8091829,11.4925188 40.2358743,14.063532 40.2358743,17.2350375 L40.2358743,80.402744 C40.2358743,83.5742496 42.8091829,86.1452628 45.98352,86.1452628 C49.157857,86.1452628 51.7311657,83.574249
6 51.7311657,80.402744 L51.7311657,17.2350375 C51.7311657,14.063532 49.157857,11.4925188 45.98352,11.4925188 Z M91.6140792,78.4388026 L68.6234964,15.2710961 C67.9500245,13.3049026 66.2658683,11.8556604 64.2198302,11.4816739 C62.1737921,11.1076875 60.0851643,11.8673187 58.7585671,13.4679283 C57.4319699,15.0685378 57.0744241,17.2603443 57.8236701,19.198979 L80.814253,82.3666855 C81.4877249,84.332879 83.1718811,85.7821212 85.2179192,86.1561076 C87.2639573,86.5300941 89.3525851,85.7704629 90.6791823,84.1698533 C92.0057794,82.5692438 92.3633253,80.3774372 91.6140792,78.4388026 L91.6140792,78.4388026 Z M11.4976457,5.75 C8.32330864,5.75 5.75,8.32101323 5.75,11.4925188 L5.75,80.402744 C5.75,83.5742496 8.32330864,86.1452628 11.4976457,86.1452628 C14.6719828,86.1452628 17.2452914,83.5742496 17.2452914,80.402744 L17.2452914,11.4925188 C17.2452914,8.32101323 14.6719828,5.75 11.4976457,5.75 Z" id="Shape"></path></g></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_no-icon.png b/browser/extensions/onboarding/content/img/icons_no-icon.png
new file mode 100644
index 000000000000..21aae225793b
Binary files /dev/null and b/browser/extensions/onboarding/content/img/icons_no-icon.png differ
diff --git a/browser/extensions/onboarding/content/img/icons_performance.svg b/browser/extensions/onboarding/content/img/icons_performance.svg
deleted file mode 100644
index ad23ba27400c..000000000000
--- a/browser/extensions/onboarding/content/img/icons_performance.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="context-fill" d="M8 1a8.009 8.009 0 0 0-8 8 7.917 7.917 0 0 0 .78 3.43 1 1 0 1 0 1.8-.86A5.943 5.943 0 0 1 2 9a6 6 0 1 1 11.414 2.571 1 1 0 1 0 1.807.858A7.988 7.988 0 0 0 8 1z"/><path fill="context-fill" d="M11.769 7.078a.5.5 0 0 0-.69.153L8.616 11.1a2 2 0 1 0 .5 3.558 2.011 2.011 0 0 0 .54-.54 1.954 1.954 0 0 0-.2-2.479l2.463-3.871a.5.5 0 0 0-.15-.69z"/></svg>
diff --git a/browser/extensions/onboarding/content/img/icons_private.svg b/browser/extensions/onboarding/content/img/icons_private.svg
deleted file mode 100755
index 7d4d2c416801..000000000000
--- a/browser/extensions/onboarding/content/img/icons_private.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="8 8 16 16"><title>Icons / Private Browsing</title><g fill="none"><path d="M0 0h32v32H0z"/><path d="M20.4 20c-1.7 0-2.8-2-4.4-2-1.6 0-2.8 2-4.4 2-2 0-3.5-2-3.5-5.3-.1-2 .6-2.7 3.2-2.7s3.4 1.1 4.7 1.1c1.3 0 2.1-1.1 4.7-1.1s3.3.7 3.2 2.7c0 3.3-1.5 5.3-3.5 5.3zm-7.8-5.4c-1.6 0-2.3 1-2.3 1.2 0 .3 1.1.9 2.1.9 1.1 0 2.3-.4 2.3-.7-.2-1-1.1-1.6-2.1-1.4zm6.8 0c-1-.2-1.9.4-2.1 1.4 0 .3 1.2.7 2.3.7 1 0 2.1-.6 2.1-.9 0-.2-.7-1.2-2.3-1.2z" fill="#3E3D40"/></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_screenshots.svg b/browser/extensions/onboarding/content/img/icons_screenshots.svg
deleted file mode 100644
index 8d219dce78b5..000000000000
--- a/browser/extensions/onboarding/content/img/icons_screenshots.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg width="92px" height="92px" viewBox="0 0 92 92" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Tip / Icon / Screenshots</title><desc>Created with Sketch.</desc><defs></defs><g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Tip-/-Icon-/-Screenshots" fill-rule="nonzero" fill="#0C0C0D"><g id="Icon-/-Screenshot-/-Web"><path d="M23.0526905,5.75 C16.7062659,5.75 11.5614723,10.8982866 11.5614723,17.2490201 L23.0526905,17.2490201 L23.0526905,5.75 Z M57.5263453,5.75 L46.035127,5.75 L46.035127,17.2490201 L57.5263453,17.2490201 L57.5263453,5.75 Z M80.5087818,5.75 L80.5087818,17.2490201 L92,17.2490201 C92,10.8982866 86.8552063,5.75 80.5087818,5.75 Z M40.2895179,5.75 L28.7982997,5.75 L28.7982997,17.2490201 L40.2895179,17.2490201 L40.2895179,5.75 Z M74.7631726,5.75 L63.2719544,5.75 L63.2719544,17.2490201 L74.7631726,17.2490201 L74.7631726,5.75 Z M80.5087818,34.4975502
L92,34.4975502 L92,22.9985301 L80.5087818,22.9985301 L80.5087818,34.4975502 Z M80.5087818,68.9946104 C86.8552063,68.9946104 92,63.8463237 92,57.4955903 L80.5087818,57.4955903 L80.5087818,68.9946104 Z M80.5087818,51.7460803 L92,51.7460803 L92,40.2470602 L80.5087818,40.2470602 L80.5087818,51.7460803 Z M77.9749681,39.286892 C74.3364854,34.0846734 67.1729138,32.8182928 61.9734467,36.4581331 L39.9390357,52.734996 L28.631677,44.8006721 C28.7205927,44.2448747 28.7762328,43.6842562 28.7982997,43.1218152 C28.7892628,38.6172543 26.6604054,34.3800822 23.0526905,31.6860398 L23.0526905,22.9985301 L11.5614723,22.9985301 L11.5614723,29.0355156 C5.79583786,30.1835386 1.31120668,34.7313256 0.240775953,40.5156383 C-0.829654779,46.2999509 1.73019662,52.1531434 6.70268981,55.2910372 C11.675183,58.4289309 18.0565494,58.2180974 22.811375,54.7588235 L29.9474215,59.7551477 L21.9035687,65.4011666 C16.3310302,62.0167647 9.17796578,62.8225007 4.49677041,67.3619045 C-0.184424965,71.9013083 -1.21401,79.0303725
1.99130168,84.710299 C5.19661336,90.3902255 11.8290284,93.1895755 18.1311131,91.5224455 C24.4331979,89.8553154 28.8167193,84.1418505 28.7982997,77.6188754 C28.7959008,76.6687877 28.699673,75.721263 28.5110192,74.7901165 L77.9749681,39.286892 Z M14.4342769,50.3087028 C10.4677615,50.3087028 7.25226545,47.0910236 7.25226545,43.1218152 C7.25226545,39.1526068 10.4677615,35.9349277 14.4342769,35.9349277 C18.4007922,35.9349277 21.6162883,39.1526068 21.6162883,43.1218152 C21.6162883,47.0910236 18.4007922,50.3087028 14.4342769,50.3087028 Z M14.4342769,84.805763 C10.4677615,84.805763 7.25226545,81.5880838 7.25226545,77.6188754 C7.25226545,73.649667 10.4677615,70.4319879 14.4342769,70.4319879 C18.4007922,70.4319879 21.6162883,73.649667 21.6162883,77.6188754 C21.6162883,81.5880838 18.4007922,84.805763 14.4342769,84.805763 Z M45.4605661,70.8402031 L62.7950688,84.0640762 C67.9945359,87.7039165 75.1581075,86.4375358 78.7965902,81.2353172 L55.457926,63.8200513 L45.4605661,70.8402031 Z" id="Shape"><
/path></g></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_singlesearch.svg b/browser/extensions/onboarding/content/img/icons_singlesearch.svg
deleted file mode 100644
index 3e06a3852288..000000000000
--- a/browser/extensions/onboarding/content/img/icons_singlesearch.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="8 8 16 16 "><title>Icons / Search</title><g fill="none"><path d="M0 0h32v32H0z"/><path d="M23.7 22.3l-4.8-4.8c1.8-2.5 1.4-6.1-1-8.1s-5.9-1.9-8.1.4c-2.3 2.2-2.4 5.7-.4 8.1 2 2.4 5.6 2.8 8.1 1l4.8 4.8c.4.4 1 .4 1.4 0 .4-.4.4-1 0-1.4zM14 18c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4c0 1.1-.4 2.1-1.1 2.9-.8.7-1.8 1.1-2.9 1.1z" fill="#3E3D40"/></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_sync.svg b/browser/extensions/onboarding/content/img/icons_sync.svg
deleted file mode 100644
index 286422275aa7..000000000000
--- a/browser/extensions/onboarding/content/img/icons_sync.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="8 8 16 16"><title> Icons / Sync</title><desc> Created with Sketch.</desc><g fill="none"><rect width="32" height="32"/><path d="M22 9C21.4 9 21 9.4 21 10L21 11.1C19.2 9.3 16.6 8.6 14.2 9.2 11.7 9.9 9.8 11.8 9.2 14.3 9.1 14.7 9.2 15 9.5 15.3 9.8 15.5 10.1 15.6 10.5 15.5 10.8 15.4 11.1 15.1 11.2 14.8 11.7 12.6 13.7 11 16 11 17.6 11 19 11.7 20 13L18 13C17.4 13 17 13.4 17 14 17 14.6 17.4 15 18 15L22 15C22.6 15 23 14.6 23 14L23 10C23 9.4 22.6 9 22 9ZM22 16.5C21.8 16.4 21.5 16.5 21.3 16.6 21.1 16.7 20.9 17 20.8 17.2 20.3 19.4 18.3 21 16 21 14.4 21 13 20.3 12 19L14 19C14.6 19 15 18.6 15 18 15 17.4 14.6 17 14 17L10 17C9.4 17 9 17.4 9 18L9 22C9 22.6 9.4 23 10 23 10.6 23 11 22.6 11 22L11 20.9C12.8 22.7 15.4 23.4 17.8 22.8 20.3 22.1 22.2 20.2 22.8 17.7 22.9 17.2 22.6 16.6 22 16.5Z" fill="#3E3D40"/></g></svg>
diff --git a/browser/extensions/onboarding/content/img/icons_tour-complete.png b/browser/extensions/onboarding/content/img/icons_tour-complete.png
new file mode 100644
index 000000000000..8802bf083ed3
Binary files /dev/null and b/browser/extensions/onboarding/content/img/icons_tour-complete.png differ
diff --git a/browser/extensions/onboarding/content/img/icons_tour-complete.svg b/browser/extensions/onboarding/content/img/icons_tour-complete.svg
index 173e72c332df..761c31cbf9d0 100644
--- a/browser/extensions/onboarding/content/img/icons_tour-complete.svg
+++ b/browser/extensions/onboarding/content/img/icons_tour-complete.svg
@@ -8,10 +8,10 @@
<g id="Tips-/-Navigation" transform="translate(-30.000000, -117.000000)" stroke-width="2">
<g id="Group">
<g id="Tip-/-Check" transform="translate(30.000000, 117.000000)">
- <circle id="Oval-2" stroke="#FFFFFF" fill="#33F70C" fill-rule="evenodd" cx="10" cy="10" r="9"></circle>
+ <circle id="Oval-2" stroke="#FFFFFF" fill="#00DDB3" fill-rule="evenodd" cx="10" cy="10" r="9"></circle>
<polyline id="Path-31" stroke="#165866" stroke-linecap="round" stroke-linejoin="round" points="5.5 10.5 8.5 13.5 14.5 6.5"></polyline>
</g>
</g>
</g>
</g>
-</svg>
\ No newline at end of file
+</svg>
diff --git a/browser/extensions/onboarding/content/img/watermark.svg b/browser/extensions/onboarding/content/img/watermark.svg
deleted file mode 100644
index c9345ed2ba1d..000000000000
--- a/browser/extensions/onboarding/content/img/watermark.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><title>newtab-firefox-gry</title><path d="M31.359,14.615h0c-.044-.289-.088-.459-.088-.459s-.113.131-.3.378A10.77,10.77,0,0,0,30.6,12.5a13.846,13.846,0,0,0-.937-2.411,10.048,10.048,0,0,0-.856-1.468q-.176-.263-.359-.51c-.57-.931-1.224-1.5-1.981-2.576a7.806,7.806,0,0,1-.991-2.685A10.844,10.844,0,0,0,25,4.607c-.777-.784-1.453-1.341-1.861-1.721C21.126,1.006,21.36.031,21.36.031h0S17.6,4.228,19.229,8.6a8.4,8.4,0,0,0,2.8,3.733c1.576,1.3,3.273,2.323,4.168,4.937a8.377,8.377,0,0,0-3.144-3.317,7.573,7.573,0,0,1,.6,3,7.124,7.124,0,0,1-8.711,6.94,6.561,6.561,0,0,1-1.765-.6,7.183,7.183,0,0,1-2.115-1.955l-.01-.017.126.046a6.5,6.5,0,0,0,.9.241,5.628,5.628,0,0,0,3.583-.423c1.126-.625,1.808-1.088,2.361-.905l.01,0c.54.172.966-.352.58-.9a2.94,2.94,0,0,0-2.848-1.112c-1.127.164-2.16.965-3.637.189a3.129,3.129,0,0,1-.277-.163c-.1-.057.317.087.22.022a7.33,7.33,0,0,1-.928-.554c-.022-.018.223.07.2.052a3.581,3.581,0,0,1-.968-.979
,1.741,1.741,0,0,1-.066-1.554,1.371,1.371,0,0,1,.6-.564c.191.094.309.165.309.165s-.087-.16-.134-.244c.017-.006.032,0,.049-.011.167.072.537.26.732.375a1.016,1.016,0,0,1,.335.3s.067-.033.017-.173a.9.9,0,0,0-.346-.424l.016,0a2.94,2.94,0,0,1,.426.265,2.079,2.079,0,0,0,.17-.9,1.178,1.178,0,0,0-.069-.5c-.053-.1.03-.14.123-.035a.976.976,0,0,0-.079-.238v-.008h0s.053-.069.077-.094a1.43,1.43,0,0,1,.216-.176,9.973,9.973,0,0,1,1.465-.747c.414-.181.757-.319.827-.359a2.3,2.3,0,0,0,.293-.225,1.968,1.968,0,0,0,.66-1.14,1.6,1.6,0,0,0,.017-.178v-.05l0-.03v0l0-.012v0l0-.013h0c-.06-.225-.448-.394-2.476-.584a1.773,1.773,0,0,1-1.45-1.36l0,.009c-.029.074-.055.149-.081.225.026-.075.052-.15.081-.225l0-.016a5.138,5.138,0,0,1,1.986-2.466c.052-.042-.208.011-.156-.032a5.156,5.156,0,0,1,.53-.224c.091-.038-.39-.222-.815-.177a2.2,2.2,0,0,0-.756.178c.1-.086.4-.2.329-.2a4.865,4.865,0,0,0-1.542.583.314.314,0,0,1,.03-.14,2.4,2.4,0,0,0-.964.744,1.275,1.275,0,0,0,.01-.174,2.876,2.876,0,0,0-.473.444l-.009.007a6.285,6.285
,0,0,0-3.517-.3l-.01-.009.012,0a2.943,2.943,0,0,1-.625-.7L6.1,5.852,6.081,5.83c-.077-.114-.156-.243-.237-.387-.058-.1-.117-.217-.176-.338,0-.008-.009-.011-.013-.012-.024,0-.041.111-.061.082l0-.006a4.308,4.308,0,0,1-.283-1.687l-.016.008a1.884,1.884,0,0,0-.714.934c-.061.137-.1.212-.14.287,0,.006,0-.01,0-.035.009-.069.039-.211.032-.2s-.012.019-.019.029a1.733,1.733,0,0,0-.251.372,2.355,2.355,0,0,0-.15.382c-.006.021,0-.018,0-.064s.009-.128,0-.111l-.022.043a9.5,9.5,0,0,0-.8,3.035A3.022,3.022,0,0,0,3.2,8.7v.016a6.628,6.628,0,0,0-.817,1.1,15.606,15.606,0,0,0-1.727,4.23,10.351,10.351,0,0,1,.925-1.621,15,15,0,0,0-1.045,5.5,14.233,14.233,0,0,1,.45-1.629A13.807,13.807,0,0,0,2.234,22.76a15.037,15.037,0,0,0,5.951,6.748h0a13.016,13.016,0,0,0,3.468,1.662c.162.059.326.117.494.173-.053-.021-.1-.044-.153-.067a15.7,15.7,0,0,0,4.5.662c5.394,0,7.175-2.054,7.339-2.259h0a2.73,2.73,0,0,0,.637-.856h0q.156-.064.315-.137l.067-.03.121-.057a11.312,11.312,0,0,0,2.277-1.426,5.5,5.5,0,0,0,2.123-3.1h0a1.938,1.938,0,
0,0,.029-1.428q.083-.131.171-.28a12.706,12.706,0,0,0,1.907-6.181v-.006c0-.059,0-.118,0-.177A7.731,7.731,0,0,0,31.359,14.615Z" fill="context-fill"/></svg>
diff --git a/browser/extensions/onboarding/content/onboarding-tor-circuit-display.js b/browser/extensions/onboarding/content/onboarding-tor-circuit-display.js
new file mode 100644
index 000000000000..de4b23c84c2a
--- /dev/null
+++ b/browser/extensions/onboarding/content/onboarding-tor-circuit-display.js
@@ -0,0 +1,283 @@
+// Copyright (c) 2018, The Tor Project, Inc.
+// vim: set sw=2 sts=2 ts=8 et syntax=javascript:
+
+let gStringBundle;
+
+let domLoadedListener = (aEvent) => {
+ let doc = aEvent.originalTarget;
+ if (doc.nodeName == "#document") {
+ removeEventListener("DOMContentLoaded", domLoadedListener);
+ beginCircuitDisplayOnboarding();
+ }
+};
+
+addEventListener("DOMContentLoaded", domLoadedListener, false);
+
+function beginCircuitDisplayOnboarding() {
+ // 1 of 3: Show the introductory "How do circuits work?" info panel.
+ let target = "torBrowser-circuitDisplay";
+ let title = getStringFromName("intro.title");
+ let msg = getStringFromName("intro.msg");
+ let button1Label = getStringFromName("one-of-three");
+ let button2Label = getStringFromName("next");
+ let buttons = [];
+ buttons.push({label: button1Label, style: "text"});
+ buttons.push({label: button2Label, style: "primary", callback: function() {
+ showCircuitDiagram(); }});
+ let options = {closeButtonCallback: function() { cleanUp(); }};
+ Mozilla.UITour.showInfo(target, title, msg, undefined, buttons, options);
+}
+
+function showCircuitDiagram() {
+ // 2 of 3: Open the control center and show the circuit diagram info panel.
+ Mozilla.UITour.showMenu("controlCenter", function() {
+ let target = "torBrowser-circuitDisplay-diagram";
+ let title = getStringFromName("diagram.title");
+ let msg = getStringFromName("diagram.msg");
+ let button1Label = getStringFromName("two-of-three");
+ let button2Label = getStringFromName("next");
+ let buttons = [];
+ buttons.push({label: button1Label, style: "text"});
+ buttons.push({label: button2Label, style: "primary", callback: function() {
+ showNewCircuitButton(); }});
+ let options = {closeButtonCallback: function() { cleanUp(); }};
+ Mozilla.UITour.showInfo(target, title, msg, undefined, buttons, options);
+ });
+}
+
+function showNewCircuitButton() {
+ // 3 of 3: Show the New Circuit button info panel.
+ let target = "torBrowser-circuitDisplay-newCircuitButton";
+ let title = getStringFromName("new-circuit.title");
+ let msg = getStringFromName("new-circuit.msg");
+ let button1Label = getStringFromName("three-of-three");
+ let button2Label = getStringFromName("done");
+ let buttons = [];
+ buttons.push({label: button1Label, style: "text"});
+ buttons.push({label: button2Label, style: "primary", callback: function() {
+ cleanUp(); }});
+ let options = {closeButtonCallback: function() { cleanUp(); }};
+ Mozilla.UITour.showInfo(target, title, msg, undefined, buttons, options);
+}
+
+function cleanUp() {
+ Mozilla.UITour.hideMenu("controlCenter");
+ Mozilla.UITour.closeTab();
+}
+
+function getStringFromName(aName) {
+ const TORBUTTON_BUNDLE_URI = "chrome://torbutton/locale/browserOnboarding.properties";
+ const PREFIX = "onboarding.tor-circuit-display.";
+
+ if (!gStringBundle) {
+ gStringBundle = Services.strings.createBundle(TORBUTTON_BUNDLE_URI)
+ }
+
+ let result;
+ try {
+ result = gStringBundle.GetStringFromName(PREFIX + aName);
+ } catch (e) {
+ result = aName;
+ }
+ return result;
+}
+
+
+// The remainder of the code in this file was adapted from
+// browser/components/uitour/UITour-lib.js (unfortunately, we cannot use that
+// code here because it directly accesses 'document' and it assumes that the
+// content window is the global JavaScript object),
+
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// create namespace
+if (typeof Mozilla == "undefined") {
+ var Mozilla = {};
+}
+
+(function($) {
+ "use strict";
+
+ // create namespace
+ if (typeof Mozilla.UITour == "undefined") {
+ /**
+ * Library that exposes an event-based Web API for communicating with the
+ * desktop browser chrome. It can be used for tasks such as opening menu
+ * panels and highlighting the position of buttons in the toolbar.
+ *
+ * <p>For security/privacy reasons `Mozilla.UITour` will only work on a list of allowed
+ * secure origins. The list of allowed origins can be found in
+ * {@link https://dxr.mozilla.org/mozilla-central/source/browser/app/permissions|
+ * browser/app/permissions}.</p>
+ *
+ * @since 29
+ * @namespace
+ */
+ Mozilla.UITour = {};
+ }
+
+ function _sendEvent(action, data) {
+ var event = new content.CustomEvent("mozUITour", {
+ bubbles: true,
+ detail: {
+ action,
+ data: data || {}
+ }
+ });
+
+ content.document.dispatchEvent(event);
+ }
+
+ function _generateCallbackID() {
+ return Math.random().toString(36).replace(/[^a-z]+/g, "");
+ }
+
+ function _waitForCallback(callback) {
+ var id = _generateCallbackID();
+
+ function listener(event) {
+ if (typeof event.detail != "object")
+ return;
+ if (event.detail.callbackID != id)
+ return;
+
+ content.document.removeEventListener("mozUITourResponse", listener);
+ callback(event.detail.data);
+ }
+ content.document.addEventListener("mozUITourResponse", listener);
+
+ return id;
+ }
+
+ /**
+ * Show an arrow panel with optional images and buttons anchored at a specific UI target.
+ *
+ * @see Mozilla.UITour.hideInfo
+ *
+ * @param {Mozilla.UITour.Target} target - Identifier of the UI widget to anchor the panel at.
+ * @param {String} title - Title text to be shown as the heading of the panel.
+ * @param {String} text - Body text of the panel.
+ * @param {String} [icon=null] - URL of a 48x48px (96px @ 2dppx) image (which will be resolved
+ * relative to the tab's URI) to display in the panel.
+ * @param {Object[]} [buttons=[]] - Array of objects describing buttons.
+ * @param {String} buttons[].label - Button label
+ * @param {String} buttons[].icon - Button icon URL
+ * @param {String} buttons[].style - Button style ("primary" or "link")
+ * @param {Function} buttons[].callback - Called when the button is clicked
+ * @param {Object} [options={}] - Advanced options
+ * @param {Function} options.closeButtonCallback - Called when the panel's close button is clicked.
+ *
+ * @example
+ * var buttons = [
+ * {
+ * label: 'Cancel',
+ * style: 'link',
+ * callback: cancelBtnCallback
+ * },
+ * {
+ * label: 'Confirm',
+ * style: 'primary',
+ * callback: confirmBtnCallback
+ * }
+ * ];
+ *
+ * var icon = '//mozorg.cdn.mozilla.net/media/img/firefox/australis/logo.png';
+ *
+ * var options = {
+ * closeButtonCallback: closeBtnCallback
+ * };
+ *
+ * Mozilla.UITour.showInfo('appMenu', 'my title', 'my text', icon, buttons, options);
+ */
+ Mozilla.UITour.showInfo = function(target, title, text, icon, buttons, options) {
+ var buttonData = [];
+ if (Array.isArray(buttons)) {
+ for (var i = 0; i < buttons.length; i++) {
+ buttonData.push({
+ label: buttons[i].label,
+ icon: buttons[i].icon,
+ style: buttons[i].style,
+ callbackID: _waitForCallback(buttons[i].callback)
+ });
+ }
+ }
+
+ var closeButtonCallbackID, targetCallbackID;
+ if (options && options.closeButtonCallback)
+ closeButtonCallbackID = _waitForCallback(options.closeButtonCallback);
+ if (options && options.targetCallback)
+ targetCallbackID = _waitForCallback(options.targetCallback);
+
+ _sendEvent("showInfo", {
+ target,
+ title,
+ text,
+ icon,
+ buttons: buttonData,
+ closeButtonCallbackID,
+ targetCallbackID
+ });
+ };
+
+ /**
+ * Hide any visible info panels.
+ * @see Mozilla.UITour.showInfo
+ */
+ Mozilla.UITour.hideInfo = function() {
+ _sendEvent("hideInfo");
+ };
+
+ /**
+ * Open the named application menu.
+ *
+ * @see Mozilla.UITour.hideMenu
+ *
+ * @param {Mozilla.UITour.MenuName} name - Menu name
+ * @param {Function} [callback] - Callback to be called with no arguments when
+ * the menu opens.
+ *
+ * @example
+ * Mozilla.UITour.showMenu('appMenu', function() {
+ * console.log('menu was opened');
+ * });
+ */
+ Mozilla.UITour.showMenu = function(name, callback) {
+ var showCallbackID;
+ if (callback)
+ showCallbackID = _waitForCallback(callback);
+
+ _sendEvent("showMenu", {
+ name,
+ showCallbackID,
+ });
+ };
+
+ /**
+ * Close the named application menu.
+ *
+ * @see Mozilla.UITour.showMenu
+ *
+ * @param {Mozilla.UITour.MenuName} name - Menu name
+ */
+ Mozilla.UITour.hideMenu = function(name) {
+ _sendEvent("hideMenu", {
+ name
+ });
+ };
+
+ /**
+ * @summary Closes the tab where this code is running. As usual, if the tab is in the
+ * foreground, the tab that was displayed before is selected.
+ *
+ * @description The last tab in the current window will never be closed, in which case
+ * this call will have no effect. The calling code is expected to take an
+ * action after a small timeout in order to handle this case, for example by
+ * displaying a goodbye message or a button to restart the tour.
+ * @since 46
+ */
+ Mozilla.UITour.closeTab = function() {
+ _sendEvent("closeTab");
+ };
+})();
diff --git a/browser/extensions/onboarding/content/onboarding-tour-agent.js b/browser/extensions/onboarding/content/onboarding-tour-agent.js
index d60a41b2c9f5..7cdb10063f28 100644
--- a/browser/extensions/onboarding/content/onboarding-tour-agent.js
+++ b/browser/extensions/onboarding/content/onboarding-tour-agent.js
@@ -18,6 +18,18 @@ let onCanSetDefaultBrowserInBackground = () => {
let onClick = evt => {
switch (evt.target.id) {
+ case "onboarding-tour-tor-security-button":
+ Mozilla.UITour.torBrowserOpenSecurityLevelPanel();
+ break;
+ case "onboarding-tour-tor-toolbar-update-9-0-button":
+ Mozilla.UITour.showHighlight("torBrowser-newIdentityButton", "zoom");
+ break;
+ case "onboarding-tour-tor-network-action-button":
+ Mozilla.UITour.openPreferences("tor");
+ break;
+#if 0
+// Firefox onboarding actions. To reduce conflicts when rebasing against
+// newer Firefox code, we use the preprocessor to omit this code block.
case "onboarding-tour-addons-button":
Mozilla.UITour.showHighlight("addons");
break;
@@ -60,6 +72,7 @@ let onClick = evt => {
case "onboarding-tour-sync-connect-device-button":
Mozilla.UITour.showConnectAnotherDevice();
break;
+#endif
}
let classList = evt.target.classList;
// On keyboard navigation the target would be .onboarding-tour-item.
diff --git a/browser/extensions/onboarding/content/onboarding.css b/browser/extensions/onboarding/content/onboarding.css
index 8f2431477634..431b73bd148e 100644
--- a/browser/extensions/onboarding/content/onboarding.css
+++ b/browser/extensions/onboarding/content/onboarding.css
@@ -14,8 +14,8 @@
/* Ensuring we can put the overlay over elements using
z-index on original page */
z-index: 20999;
- color: #4d4d4d;
- background: var(--newtab-overlay-color, rgb(245, 245, 247, 0.9)); /* #f7f7f5, 0.9 opacity */
+ color: #4a4a4a;
+ background: rgba(0,0,0,0);
display: none;
}
@@ -23,12 +23,45 @@
display: block;
}
-#onboarding-overlay-button {
- padding: 10px 0 0 0;
+#onboarding-overlay-button-container {
+ padding: 16px 0 0 0;
position: fixed;
- cursor: pointer;
top: 4px;
inset-inline-start: 12px;
+}
+
+/*
+ * Define an animated attention-grabbing dot which is shown on the
+ * speech bubble when we are displaying the "updated" tour.
+*/
+#onboarding-overlay-button-container.onboarding-overlay-attention-dot::after {
+ display: inline-block;
+ position: relative;
+ content: " ";
+ width: 20px;
+ height: 20px;
+ top: -8px;
+ inset-inline-start: -16px;
+ background-color: #00E2B1;
+ border-radius: 50%;
+ animation: pulsate 2.0s ease-out;
+ animation-iteration-count: 7;
+}
+
+@keyframes pulsate {
+ 0% {
+ opacity: 1.0;
+ }
+ 50% {
+ opacity: 0.5;
+ }
+ 100% {
+ opacity: 1.0;
+ }
+}
+
+#onboarding-overlay-button {
+ cursor: pointer;
border: none;
/* Set to none so no grey contrast background in the high-contrast mode */
background: none;
@@ -56,7 +89,7 @@
margin-top: -1px;
margin-inline-start: -13px;
border: 2px solid #f2f2f2;
- background: #0A84FF;
+ background: #420c5d;
padding: 0;
width: 10px;
height: 10px;
@@ -70,7 +103,7 @@
#onboarding-overlay-button:hover::after,
#onboarding-overlay-button.onboarding-speech-bubble::after {
- background: #0060df;
+ background: rgba(255,255,255,0.2);
font-size: 13px;
text-align: center;
color: #fff;
@@ -78,7 +111,7 @@
font-weight: 400;
content: attr(aria-label);
border: 1px solid transparent;
- border-radius: 2px;
+ border-radius: 12px;
padding: 10px 16px;
width: auto;
height: auto;
@@ -124,24 +157,17 @@
width: 16px;
height: 16px;
border: none;
- background: none;
+ background: url("img/close.png") center no-repeat;
padding: 0;
}
-.onboarding-close-btn::before {
- content: url("chrome://global/skin/icons/close.svg");
- -moz-context-properties: fill, fill-opacity;
- fill-opacity: 0;
- fill: var(--newtab-icon-primary-color, currentColor);
-}
-
-.onboarding-close-btn:-moz-any(:hover, :active, :focus, :-moz-focusring)::before {
- fill-opacity: 0.1;
+.onboarding-close-btn:-moz-any(:hover, :active, :focus, :-moz-focusring) {
+ background-color: rgba(0, 0, 0, 0.1);
}
#onboarding-overlay.onboarding-opened > #onboarding-overlay-dialog {
width: 960px;
- height: 510px;
+ height: 540px;
background: #fff;
border: 1px solid rgba(9, 6, 13, 0.2); /* #09060D, 0.2 opacity */
border-radius: 3px;
@@ -218,7 +244,7 @@
font-size: 16px;
cursor: pointer;
max-height: 54px;
- --onboarding-tour-item-active-color: #0A84FF;
+ --onboarding-tour-item-active-color: #420c5d;
}
#onboarding-tour-list .onboarding-tour-item:dir(rtl) {
@@ -226,7 +252,7 @@
}
#onboarding-tour-list .onboarding-tour-item.onboarding-complete::before {
- content: url("img/icons_tour-complete.svg");
+ content: url("img/icons_tour-complete.png");
position: relative;
inset-inline-start: 3px;
top: -10px;
@@ -262,6 +288,7 @@
#onboarding-tour-list .onboarding-tour-item.onboarding-active,
#onboarding-tour-list .onboarding-tour-item-container:hover .onboarding-tour-item {
+ font-weight: bold;
color: var(--onboarding-tour-item-active-color);
/* With 1px transparent outline, could see a border in the high-constrast mode */
outline: 1px solid transparent;
@@ -319,6 +346,18 @@
grid-template-columns: [tour-page-start] 368px [tour-content-start] 1fr [tour-page-end];
}
+.onboarding-tour-description-highlight {
+ display: inline-block;
+ margin-inline-start: 8px;
+ padding: 6px 8px;
+ vertical-align: middle;
+ background-color: #F1F1F3;
+ border-radius: 4px;
+ font-size: 10px;
+ font-weight: 600;
+ text-transform: uppercase;
+}
+
.onboarding-tour-description {
grid-row: tour-page-start / tour-page-end;
grid-column: tour-page-start / tour-content-start;
@@ -326,15 +365,26 @@
line-height: 22px;
padding-inline-start: 40px;
padding-inline-end: 28px;
- max-height: 360px;
+ max-height: 370px;
overflow: auto;
}
.onboarding-tour-description > h1 {
- font-size: 36px;
- margin-top: 16px;
+ font-size: 30px;
+ margin: 16px 0px 10px 0px;
font-weight: 300;
- line-height: 44px;
+ line-height: 36px;
+ color: #420c5d;
+}
+
+.onboarding-tour-description-para2 {
+ margin-top: 16px;
+}
+
+.onboarding-tour-description-suffix {
+ margin-top: 6px;
+ font-size: 13px;
+ line-height: 16px;
}
.onboarding-tour-content {
@@ -345,8 +395,8 @@
}
.onboarding-tour-content > img {
- width: 352px;
- margin: 0;
+ width: 300px;
+ margin: 20px;
}
/* These illustrations need to be stuck on the right side to the border. Thus we
@@ -369,7 +419,7 @@
}
.onboarding-tour-action-button {
- background: #0060df;
+ background: #4d0c5d;
/* With 1px transparent border, could see a border in the high-constrast mode */
border: 1px solid transparent;
border-radius: 2px;
@@ -399,18 +449,43 @@
}
.onboarding-tour-action-button:hover:not([disabled]) {
- background: #003eaa;
+ background: #410a4e;
cursor: pointer;
}
.onboarding-tour-action-button:active:not([disabled]) {
- background: #002275;
+ background: #34083f;
}
.onboarding-tour-action-button:disabled {
opacity: 0.5;
}
+/* Tor action buttons appear in the description column rather than the content one. */
+.onboarding-tour-tor-action-button-container {
+ /* Get higher z-index in order to ensure buttons within container are selectable */
+ z-index: 2;
+ grid-row: tour-button-start / tour-page-end;
+ grid-column: tour-page-start / tour-content-start;
+}
+
+.onboarding-tour-tor-action-button-container > .onboarding-tour-action-button {
+ margin-inline-start: 40px; /* match .onboarding-tour-description */
+ float: inline-start;
+ background: #e6e6e6;
+ color: #303030;
+}
+
+.onboarding-tour-tor-action-button-container > .onboarding-tour-action-button:hover:not([disabled]) {
+ background: #d6d6d6;
+ cursor: pointer;
+}
+
+.onboarding-tour-tor-action-button-container > .onboarding-tour-action-button:active:not([disabled]) {
+ background: #c6c6c6;
+}
+
+
/* Tour Icons */
#onboarding-tour-singlesearch.onboarding-tour-item::after,
#onboarding-notification-bar[data-target-tour-id=onboarding-tour-singlesearch] #onboarding-notification-tour-title::before {
@@ -457,6 +532,15 @@
mask-image: url("img/icons_screenshots.svg");
}
+a#onboarding-tour-tor-expect-differences-button,
+a#onboarding-tour-tor-expect-differences-button:hover,
+a#onboarding-tour-tor-expect-differences-button:visited,
+a#onboarding-tour-tor-onion-services-button,
+a#onboarding-tour-tor-onion-services-button:hover,
+a#onboarding-tour-tor-onion-services-button:visited,
+a#onboarding-tour-tor-learn-more-button,
+a#onboarding-tour-tor-learn-more-button:hover,
+a#onboarding-tour-tor-learn-more-button:visited,
a#onboarding-tour-screenshots-button,
a#onboarding-tour-screenshots-button:hover,
a#onboarding-tour-screenshots-button:visited {
@@ -464,6 +548,12 @@ a#onboarding-tour-screenshots-button:visited {
text-decoration: none;
}
+/* The Tor Browswer tour items do not have icons, so we use a transparent PNG. */
+.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_no-icon.png");
+}
+
/* Tour Notifications */
#onboarding-notification-bar {
position: fixed;
diff --git a/browser/extensions/onboarding/content/onboarding.js b/browser/extensions/onboarding/content/onboarding.js
index c67bd8876201..a447fb31b6ac 100644
--- a/browser/extensions/onboarding/content/onboarding.js
+++ b/browser/extensions/onboarding/content/onboarding.js
@@ -12,6 +12,7 @@ ChromeUtils.defineModuleGetter(this, "Onboarding", "resource://onboarding/Onboar
const ABOUT_HOME_URL = "about:home";
const ABOUT_NEWTAB_URL = "about:newtab";
const ABOUT_WELCOME_URL = "about:welcome";
+const ABOUT_TOR_URL = "about:tor";
// Load onboarding module only when we enable it.
if (Services.prefs.getBoolPref("browser.onboarding.enabled", false)) {
@@ -22,7 +23,7 @@ if (Services.prefs.getBoolPref("browser.onboarding.enabled", false)) {
let window = evt.target.defaultView;
let location = window.location.href;
- if (location == ABOUT_NEWTAB_URL || location == ABOUT_HOME_URL || location == ABOUT_WELCOME_URL) {
+ if (location == ABOUT_TOR_URL) {
// We just want to run tests as quickly as possible
// so in the automation test, we don't do `requestIdleCallback`.
if (Cu.isInAutomation) {
diff --git a/browser/extensions/onboarding/jar.mn b/browser/extensions/onboarding/jar.mn
index 1d580be9861f..af83e1d06e6c 100644
--- a/browser/extensions/onboarding/jar.mn
+++ b/browser/extensions/onboarding/jar.mn
@@ -6,9 +6,14 @@
# resource://onboarding/ is referenced in about:home about:newtab and about:welcome,
# so make it content-accessible.
% resource onboarding %content/ contentaccessible=yes
- content/ (content/*)
+ content/ (content/*.css)
+ content/img/ (content/img/*)
+* content/onboarding-tour-agent.js (content/onboarding-tour-agent.js)
+ content/onboarding.js (content/onboarding.js)
+* content/Onboarding.jsm (content/Onboarding.jsm)
+ content/onboarding-tor-circuit-display.js (content/onboarding-tor-circuit-display.js)
# Package UITour-lib.js in here rather than under
# /browser/components/uitour to avoid "unreferenced files" error when
# Onboarding extension is not built.
content/lib/UITour-lib.js (/browser/components/uitour/UITour-lib.js)
- content/modules/ (*.jsm)
+ content/modules/OnboardingTourType.jsm (OnboardingTourType.jsm)
diff --git a/browser/themes/shared/UITour.inc.css b/browser/themes/shared/UITour.inc.css
index 2e08215d6239..6470ba816672 100644
--- a/browser/themes/shared/UITour.inc.css
+++ b/browser/themes/shared/UITour.inc.css
@@ -49,14 +49,16 @@
}
#UITourTooltipTitle {
- font-size: 1.45rem;
+ color: #420C5D;
+ font-size: 16px;
font-weight: bold;
margin: 0;
}
#UITourTooltipDescription {
margin-inline: 0;
- font-size: 1.15rem;
+ color: #4A4A4A;
+ font-size: 13px;
line-height: 1.8rem;
margin-bottom: 0; /* Override global.css */
}
@@ -78,7 +80,6 @@
#UITourTooltipButtons {
-moz-box-pack: end;
background-color: var(--arrowpanel-dimmed);
- border-top: 1px solid var(--panel-separator-color);
margin: 10px -16px -16px;
padding: 16px;
}
@@ -112,38 +113,29 @@
#UITourTooltipButtons > button:not(.button-link) {
-moz-appearance: none;
background-color: rgb(251,251,251);
- border-radius: 3px;
- border: 1px solid;
- border-color: rgb(192,192,192);
+ border-radius: 2px;
color: rgb(71,71,71);
- padding: 4px 30px;
+ padding: 6px 30px;
transition-property: background-color, border-color;
transition-duration: 150ms;
}
-#UITourTooltipButtons > button:not(.button-link):not(:active):hover {
- background-color: hsla(210,4%,10%,.15);
- border-color: hsla(210,4%,10%,.15);
- box-shadow: 0 1px 0 0 hsla(210,4%,10%,.05) inset;
-}
-
#UITourTooltipButtons > label,
#UITourTooltipButtons > button.button-link:not(:hover) {
-moz-appearance: none;
background: transparent;
border: none;
box-shadow: none;
- color: var(--panel-disabled-color);
+ color: #4A4A4A;
padding-inline: 10px;
}
-/* The primary button gets the same color as the customize button. */
#UITourTooltipButtons > button.button-primary {
- background-color: rgb(116,191,67);
+ background-color: #420C5D;
color: white;
- padding-inline: 30px;
+ padding-inline: 28px;
}
#UITourTooltipButtons > button.button-primary:not(:active):hover {
- background-color: rgb(105,173,61);
+ background-color: #410A4E;
}
diff --git a/intl/strres/nsStringBundle.cpp b/intl/strres/nsStringBundle.cpp
index 7116cb6c3209..0fff98149510 100644
--- a/intl/strres/nsStringBundle.cpp
+++ b/intl/strres/nsStringBundle.cpp
@@ -76,6 +76,7 @@ static const char kContentBundles[][52] = {
"chrome://global/locale/svg/svg.properties",
"chrome://global/locale/xul.properties",
"chrome://necko/locale/necko.properties",
+ "chrome://torbutton/locale/onboarding.properties",
};
static bool IsContentBundle(const nsCString& aUrl) {
1
0

[tor-browser/tor-browser-78.1.0esr-10.0-1] Bring back old Firefox onboarding
by gk@torproject.org 07 Aug '20
by gk@torproject.org 07 Aug '20
07 Aug '20
commit 69c21cbd330c5d12f82b181bfcd845471e96daf1
Author: Alex Catarineu <acat(a)torproject.org>
Date: Wed May 29 20:04:37 2019 +0200
Bring back old Firefox onboarding
Revert "Bug 1462415 - Delete onboarding system add-on r=Standard8,k88hudson"
This reverts commit f7ffd78b62541d44d0102f8051d2f4080bdbc432.
Revert "Bug 1498378 - Actually remove the old onboarding add-on's prefs r=Gijs"
This reverts commit 057fe36fc6f3e93e265505c7dcc703a0941778e2.
Bug 28822: Convert onboarding to webextension
Partially revert 1564367 (controlCenter in UITour.jsm)
---
browser/app/profile/firefox.js | 16 +
browser/components/BrowserGlue.jsm | 11 -
browser/components/uitour/UITour.jsm | 42 +
browser/extensions/moz.build | 1 +
.../extensions/onboarding/OnboardingTelemetry.jsm | 578 +++++++
.../extensions/onboarding/OnboardingTourType.jsm | 40 +
browser/extensions/onboarding/README.md | 87 ++
browser/extensions/onboarding/api.js | 238 +++
browser/extensions/onboarding/background.js | 8 +
.../extensions/onboarding/content/Onboarding.jsm | 1581 ++++++++++++++++++++
.../onboarding/content/img/figure_addons.svg | 1 +
.../onboarding/content/img/figure_customize.svg | 561 +++++++
.../onboarding/content/img/figure_default.svg | 1 +
.../onboarding/content/img/figure_library.svg | 689 +++++++++
.../onboarding/content/img/figure_performance.svg | 1 +
.../onboarding/content/img/figure_private.svg | 1 +
.../onboarding/content/img/figure_screenshots.svg | 191 +++
.../onboarding/content/img/figure_singlesearch.svg | 1 +
.../onboarding/content/img/figure_sync.svg | 1 +
.../onboarding/content/img/icons_addons.svg | 1 +
.../onboarding/content/img/icons_customize.svg | 1 +
.../onboarding/content/img/icons_default.svg | 1 +
.../onboarding/content/img/icons_library.svg | 1 +
.../onboarding/content/img/icons_performance.svg | 1 +
.../onboarding/content/img/icons_private.svg | 1 +
.../onboarding/content/img/icons_screenshots.svg | 1 +
.../onboarding/content/img/icons_singlesearch.svg | 1 +
.../onboarding/content/img/icons_sync.svg | 1 +
.../onboarding/content/img/icons_tour-complete.svg | 17 +
.../onboarding/content/img/watermark.svg | 1 +
.../onboarding/content/onboarding-tour-agent.js | 94 ++
.../extensions/onboarding/content/onboarding.css | 589 ++++++++
.../extensions/onboarding/content/onboarding.js | 37 +
browser/extensions/onboarding/data_events.md | 154 ++
browser/extensions/onboarding/jar.mn | 14 +
.../onboarding/locales/en-US/onboarding.properties | 126 ++
browser/extensions/onboarding/locales/jar.mn | 8 +
browser/extensions/onboarding/locales/moz.build | 7 +
browser/extensions/onboarding/manifest.json | 26 +
browser/extensions/onboarding/moz.build | 29 +
browser/extensions/onboarding/schema.json | 1 +
.../onboarding/test/browser/.eslintrc.js | 7 +
.../extensions/onboarding/test/browser/browser.ini | 18 +
.../browser/browser_onboarding_accessibility.js | 89 ++
.../test/browser/browser_onboarding_keyboard.js | 137 ++
.../browser/browser_onboarding_notification.js | 62 +
.../browser/browser_onboarding_notification_2.js | 80 +
.../browser/browser_onboarding_notification_3.js | 82 +
.../browser/browser_onboarding_notification_4.js | 84 ++
.../browser/browser_onboarding_notification_5.js | 25 +
...arding_notification_click_auto_complete_tour.js | 33 +
.../browser_onboarding_select_default_tour.js | 80 +
.../test/browser/browser_onboarding_skip_tour.js | 47 +
.../test/browser/browser_onboarding_tours.js | 115 ++
.../test/browser/browser_onboarding_tourset.js | 82 +
.../test/browser/browser_onboarding_uitour.js | 167 +++
browser/extensions/onboarding/test/browser/head.js | 288 ++++
.../extensions/onboarding/test/unit/.eslintrc.js | 7 +
browser/extensions/onboarding/test/unit/head.js | 54 +
.../test/unit/test-onboarding-tour-type.js | 89 ++
.../extensions/onboarding/test/unit/xpcshell.ini | 5 +
browser/installer/package-manifest.in | 1 +
browser/locales/Makefile.in | 2 +
browser/locales/filter.py | 1 +
browser/locales/l10n.ini | 1 +
browser/locales/l10n.toml | 4 +
extensions/permissions/PermissionManager.cpp | 3 +
tools/lint/codespell.yml | 1 +
68 files changed, 6714 insertions(+), 11 deletions(-)
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index 22e8e5f2de1f..9c7de3700fcf 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -1852,6 +1852,22 @@ pref("browser.sessionstore.restore_tabs_lazily", true);
pref("browser.suppress_first_window_animation", true);
+// Preferences for Photon onboarding system extension
+pref("browser.onboarding.enabled", true);
+// Mark this as an upgraded profile so we don't offer the initial new user onboarding tour.
+pref("browser.onboarding.tourset-version", 2);
+pref("browser.onboarding.state", "default");
+// On the Activity-Stream page, the snippet's position overlaps with our notification.
+// So use `browser.onboarding.notification.finished` to let the AS page know
+// if our notification is finished and safe to show their snippet.
+pref("browser.onboarding.notification.finished", false);
+pref("browser.onboarding.notification.mute-duration-on-first-session-ms", 300000); // 5 mins
+pref("browser.onboarding.notification.max-life-time-per-tour-ms", 432000000); // 5 days
+pref("browser.onboarding.notification.max-life-time-all-tours-ms", 1209600000); // 14 days
+pref("browser.onboarding.notification.max-prompt-count-per-tour", 8);
+pref("browser.onboarding.newtour", "performance,private,screenshots,addons,customize,default");
+pref("browser.onboarding.updatetour", "performance,library,screenshots,singlesearch,customize,sync");
+
// Preference that allows individual users to disable Screenshots.
pref("extensions.screenshots.disabled", false);
// Preference that allows individual users to leave Screenshots enabled, but
diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
index dbc7f3dc16d2..cb3bb63ac498 100644
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -3418,17 +3418,6 @@ BrowserGlue.prototype = {
);
}
- if (currentUIVersion < 76) {
- // Clear old onboarding prefs from profile (bug 1462415)
- let onboardingPrefs = Services.prefs.getBranch("browser.onboarding.");
- if (onboardingPrefs) {
- let onboardingPrefsArray = onboardingPrefs.getChildList("");
- for (let item of onboardingPrefsArray) {
- Services.prefs.clearUserPref("browser.onboarding." + item);
- }
- }
- }
-
if (currentUIVersion < 77) {
// Remove currentset from all the toolbars
let toolbars = [
diff --git a/browser/components/uitour/UITour.jsm b/browser/components/uitour/UITour.jsm
index ac6c38320df2..2e0a178bf425 100644
--- a/browser/components/uitour/UITour.jsm
+++ b/browser/components/uitour/UITour.jsm
@@ -875,6 +875,14 @@ var UITour = {
["ViewShowing", this.onPageActionPanelSubviewShowing],
],
},
+ {
+ name: "controlCenter",
+ node: aWindow.gIdentityHandler._identityPopup,
+ events: [
+ ["popuphidden", this.onPanelHidden],
+ ["popuphiding", this.onControlCenterHiding],
+ ],
+ },
];
for (let panel of panels) {
// Ensure the menu panel is hidden and clean up panel listeners after calling hideMenu.
@@ -1515,6 +1523,31 @@ var UITour = {
} else if (aMenuName == "bookmarks") {
let menuBtn = aWindow.document.getElementById("bookmarks-menu-button");
openMenuButton(menuBtn);
+ } else if (aMenuName == "controlCenter") {
+ let popup = aWindow.gIdentityHandler._identityPopup;
+
+ // Add the listener even if the panel is already open since it will still
+ // only get registered once even if it was UITour that opened it.
+ popup.addEventListener("popuphiding", this.onControlCenterHiding);
+ popup.addEventListener("popuphidden", this.onPanelHidden);
+
+ popup.setAttribute("noautohide", "true");
+ this.clearAvailableTargetsCache();
+
+ if (popup.state == "open") {
+ if (aOpenCallback) {
+ aOpenCallback();
+ }
+ return;
+ }
+
+ this.recreatePopup(popup);
+
+ // Open the control center
+ if (aOpenCallback) {
+ popup.addEventListener("popupshown", aOpenCallback, { once: true });
+ }
+ aWindow.document.getElementById("identity-box").click();
} else if (aMenuName == "pocket") {
let pageAction = PageActions.actionForID("pocket");
if (!pageAction) {
@@ -1558,6 +1591,9 @@ var UITour = {
} else if (aMenuName == "bookmarks") {
let menuBtn = aWindow.document.getElementById("bookmarks-menu-button");
closeMenuButton(menuBtn);
+ } else if (aMenuName == "controlCenter") {
+ let panel = aWindow.gIdentityHandler._identityPopup;
+ panel.hidePopup();
} else if (aMenuName == "urlbar") {
aWindow.gURLBar.view.close();
} else if (aMenuName == "pageActionPanel") {
@@ -1654,6 +1690,12 @@ var UITour = {
);
},
+ onControlCenterHiding(aEvent) {
+ UITour._hideAnnotationsForPanel(aEvent, true, aTarget => {
+ return aTarget.targetName.startsWith("controlCenter-");
+ });
+ },
+
onPanelHidden(aEvent) {
aEvent.target.removeAttribute("noautohide");
UITour.recreatePopup(aEvent.target);
diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
index 499c59b8d6a5..b0f98f9d4a2a 100644
--- a/browser/extensions/moz.build
+++ b/browser/extensions/moz.build
@@ -5,6 +5,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DIRS += [
+ 'onboarding',
'pdfjs',
]
diff --git a/browser/extensions/onboarding/OnboardingTelemetry.jsm b/browser/extensions/onboarding/OnboardingTelemetry.jsm
new file mode 100644
index 000000000000..494c8d246d87
--- /dev/null
+++ b/browser/extensions/onboarding/OnboardingTelemetry.jsm
@@ -0,0 +1,578 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+var EXPORTED_SYMBOLS = ["OnboardingTelemetry"];
+
+ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+XPCOMUtils.defineLazyModuleGetters(this, {
+ PingCentre: "resource:///modules/PingCentre.jsm",
+});
+XPCOMUtils.defineLazyServiceGetter(this, "gUUIDGenerator",
+ "@mozilla.org/uuid-generator;1", "nsIUUIDGenerator");
+
+// Validate the content has non-empty string
+function hasString(str) {
+ return typeof str == "string" && str.length > 0;
+}
+
+// Validate the content is an empty string
+function isEmptyString(str) {
+ return typeof str == "string" && str === "";
+}
+
+// Validate the content is an interger
+function isInteger(i) {
+ return Number.isInteger(i);
+}
+
+// Validate the content is a positive interger
+function isPositiveInteger(i) {
+ return Number.isInteger(i) && i > 0;
+}
+
+// Validate the number is -1
+function isMinusOne(num) {
+ return num === -1;
+}
+
+// Validate the category value is within the list
+function isValidCategory(category) {
+ return ["logo-interactions", "onboarding-interactions",
+ "overlay-interactions", "notification-interactions"]
+ .includes(category);
+}
+
+// Validate the page value is within the list
+function isValidPage(page) {
+ return ["about:newtab", "about:home", "about:welcome"].includes(page);
+}
+
+// Validate the tour_type value is within the list
+function isValidTourType(type) {
+ return ["new", "update"].includes(type);
+}
+
+// Validate the bubble state value is within the list
+function isValidBubbleState(str) {
+ return ["bubble", "dot", "hide"].includes(str);
+}
+
+// Validate the logo state value is within the list
+function isValidLogoState(str) {
+ return ["logo", "watermark"].includes(str);
+}
+
+// Validate the notification state value is within the list
+function isValidNotificationState(str) {
+ return ["show", "hide", "finished"].includes(str);
+}
+
+// Validate the column must be defined per ping
+function definePerPing(column) {
+ return function() {
+ throw new Error(`Must define the '${column}' validator per ping because it is not the same for all pings`);
+ };
+}
+
+// Basic validators for session pings
+// client_id, locale are added by PingCentre, IP is added by server
+// so no need check these column here
+const BASIC_SESSION_SCHEMA = {
+ addon_version: hasString,
+ category: isValidCategory,
+ page: isValidPage,
+ parent_session_id: hasString,
+ root_session_id: hasString,
+ session_begin: isInteger,
+ session_end: isInteger,
+ session_id: hasString,
+ tour_type: isValidTourType,
+ type: hasString,
+};
+
+// Basic validators for event pings
+// client_id, locale are added by PingCentre, IP is added by server
+// so no need check these column here
+const BASIC_EVENT_SCHEMA = {
+ addon_version: hasString,
+ bubble_state: definePerPing("bubble_state"),
+ category: isValidCategory,
+ current_tour_id: definePerPing("current_tour_id"),
+ logo_state: definePerPing("logo_state"),
+ notification_impression: definePerPing("notification_impression"),
+ notification_state: definePerPing("notification_state"),
+ page: isValidPage,
+ parent_session_id: hasString,
+ root_session_id: hasString,
+ target_tour_id: definePerPing("target_tour_id"),
+ timestamp: isInteger,
+ tour_type: isValidTourType,
+ type: hasString,
+ width: isPositiveInteger,
+};
+
+/**
+ * We send 2 kinds (firefox-onboarding-event2, firefox-onboarding-session2) of pings to ping centre
+ * server (they call it `topic`). The `internal` state in `topic` field means this event is used internaly to
+ * track states and will not send out any message.
+ *
+ * To save server space and make query easier, we track session begin and end but only send pings
+ * when session end. Therefore the server will get single "onboarding/overlay/notification-session"
+ * event which includes both `session_begin` and `session_end` timestamp.
+ *
+ * We send `session_begin` and `session_end` timestamps instead of `session_duration` diff because
+ * of analytics engineer's request.
+ */
+const EVENT_WHITELIST = {
+ // track when a notification appears.
+ "notification-appear": {
+ topic: "firefox-onboarding-event2",
+ category: "notification-interactions",
+ parent: "notification-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isValidBubbleState,
+ current_tour_id: hasString,
+ logo_state: isValidLogoState,
+ notification_impression: isPositiveInteger,
+ notification_state: isValidNotificationState,
+ target_tour_id: isEmptyString,
+ }),
+ },
+ // track when a user clicks close notification button
+ "notification-close-button-click": {
+ topic: "firefox-onboarding-event2",
+ category: "notification-interactions",
+ parent: "notification-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isValidBubbleState,
+ current_tour_id: hasString,
+ logo_state: isValidLogoState,
+ notification_impression: isPositiveInteger,
+ notification_state: isValidNotificationState,
+ target_tour_id: hasString,
+ }),
+ },
+ // track when a user clicks notification's Call-To-Action button
+ "notification-cta-click": {
+ topic: "firefox-onboarding-event2",
+ category: "notification-interactions",
+ parent: "notification-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isValidBubbleState,
+ current_tour_id: hasString,
+ logo_state: isValidLogoState,
+ notification_impression: isPositiveInteger,
+ notification_state: isValidNotificationState,
+ target_tour_id: hasString,
+ }),
+ },
+ // track the start and end time of the notification session
+ "notification-session": {
+ topic: "firefox-onboarding-session2",
+ category: "notification-interactions",
+ parent: "onboarding-session",
+ validators: BASIC_SESSION_SCHEMA,
+ },
+ // track the start of a notification
+ "notification-session-begin": {topic: "internal"},
+ // track the end of a notification
+ "notification-session-end": {topic: "internal"},
+ // track when a user clicks the Firefox logo
+ "onboarding-logo-click": {
+ topic: "firefox-onboarding-event2",
+ category: "logo-interactions",
+ parent: "onboarding-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isValidBubbleState,
+ current_tour_id: isEmptyString,
+ logo_state: isValidLogoState,
+ notification_impression: isMinusOne,
+ notification_state: isValidNotificationState,
+ target_tour_id: isEmptyString,
+ }),
+ },
+ // track when the onboarding is not visisble due to small screen in the 1st load
+ "onboarding-noshow-smallscreen": {
+ topic: "firefox-onboarding-event2",
+ category: "onboarding-interactions",
+ parent: "onboarding-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isEmptyString,
+ current_tour_id: isEmptyString,
+ logo_state: isEmptyString,
+ notification_impression: isMinusOne,
+ notification_state: isEmptyString,
+ target_tour_id: isEmptyString,
+ }),
+ },
+ // init onboarding session with session_key, page url, and tour_type
+ "onboarding-register-session": {topic: "internal"},
+ // track the start and end time of the onboarding session
+ "onboarding-session": {
+ topic: "firefox-onboarding-session2",
+ category: "onboarding-interactions",
+ parent: "onboarding-session",
+ validators: BASIC_SESSION_SCHEMA,
+ },
+ // track onboarding start time (when user loads about:home or about:newtab)
+ "onboarding-session-begin": {topic: "internal"},
+ // track onboarding end time (when user unloads about:home or about:newtab)
+ "onboarding-session-end": {topic: "internal"},
+ // track when a user clicks the close overlay button
+ "overlay-close-button-click": {
+ topic: "firefox-onboarding-event2",
+ category: "overlay-interactions",
+ parent: "overlay-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isEmptyString,
+ current_tour_id: hasString,
+ logo_state: isEmptyString,
+ notification_impression: isMinusOne,
+ notification_state: isEmptyString,
+ target_tour_id: hasString,
+ }),
+ },
+ // track when a user clicks outside the overlay area to end the tour
+ "overlay-close-outside-click": {
+ topic: "firefox-onboarding-event2",
+ category: "overlay-interactions",
+ parent: "overlay-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isEmptyString,
+ current_tour_id: hasString,
+ logo_state: isEmptyString,
+ notification_impression: isMinusOne,
+ notification_state: isEmptyString,
+ target_tour_id: hasString,
+ }),
+ },
+ // track when a user clicks overlay's Call-To-Action button
+ "overlay-cta-click": {
+ topic: "firefox-onboarding-event2",
+ category: "overlay-interactions",
+ parent: "overlay-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isEmptyString,
+ current_tour_id: hasString,
+ logo_state: isEmptyString,
+ notification_impression: isMinusOne,
+ notification_state: isEmptyString,
+ target_tour_id: hasString,
+ }),
+ },
+ // track when a tour is shown in the overlay
+ "overlay-current-tour": {
+ topic: "firefox-onboarding-event2",
+ category: "overlay-interactions",
+ parent: "overlay-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isEmptyString,
+ current_tour_id: hasString,
+ logo_state: isEmptyString,
+ notification_impression: isMinusOne,
+ notification_state: isEmptyString,
+ target_tour_id: isEmptyString,
+ }),
+ },
+ // track when an overlay is opened and disappeared because the window is resized too small
+ "overlay-disapear-resize": {
+ topic: "firefox-onboarding-event2",
+ category: "overlay-interactions",
+ parent: "overlay-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isEmptyString,
+ current_tour_id: isEmptyString,
+ logo_state: isEmptyString,
+ notification_impression: isMinusOne,
+ notification_state: isEmptyString,
+ target_tour_id: isEmptyString,
+ }),
+ },
+ // track when a user clicks a navigation button in the overlay
+ "overlay-nav-click": {
+ topic: "firefox-onboarding-event2",
+ category: "overlay-interactions",
+ parent: "overlay-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isEmptyString,
+ current_tour_id: hasString,
+ logo_state: isEmptyString,
+ notification_impression: isMinusOne,
+ notification_state: isEmptyString,
+ target_tour_id: hasString,
+ }),
+ },
+ // track the start and end time of the overlay session
+ "overlay-session": {
+ topic: "firefox-onboarding-session2",
+ category: "overlay-interactions",
+ parent: "onboarding-session",
+ validators: BASIC_SESSION_SCHEMA,
+ },
+ // track the start of an overlay session
+ "overlay-session-begin": {topic: "internal"},
+ // track the end of an overlay session
+ "overlay-session-end": {topic: "internal"},
+ // track when a user clicks 'Skip Tour' button in the overlay
+ "overlay-skip-tour": {
+ topic: "firefox-onboarding-event2",
+ category: "overlay-interactions",
+ parent: "overlay-session",
+ validators: Object.assign({}, BASIC_EVENT_SCHEMA, {
+ bubble_state: isEmptyString,
+ current_tour_id: hasString,
+ logo_state: isEmptyString,
+ notification_impression: isMinusOne,
+ notification_state: isEmptyString,
+ target_tour_id: isEmptyString,
+ }),
+ },
+};
+
+const ONBOARDING_ID = "onboarding";
+
+let OnboardingTelemetry = {
+ sessionProbe: null,
+ eventProbe: null,
+ state: {
+ sessions: {},
+ },
+
+ init(startupData) {
+ this.sessionProbe = new PingCentre({topic: "firefox-onboarding-session2"});
+ this.eventProbe = new PingCentre({topic: "firefox-onboarding-event2"});
+ this.state.addon_version = startupData.version;
+ },
+
+ // register per tab session data
+ registerNewOnboardingSession(data) {
+ let { page, session_key, tour_type } = data;
+ if (this.state.sessions[session_key]) {
+ return;
+ }
+ // session_key and page url are must have
+ if (!session_key || !page || !tour_type) {
+ throw new Error("session_key, page url, and tour_type are required for onboarding-register-session");
+ }
+ let onboarding_session_id = gUUIDGenerator.generateUUID().toString();
+ this.state.sessions[session_key] = {
+ onboarding_session_id,
+ overlay_session_id: "",
+ notification_session_id: "",
+ page,
+ tour_type,
+ };
+ },
+
+ process(data) {
+ let { type, session_key } = data;
+ if (type === "onboarding-register-session") {
+ this.registerNewOnboardingSession(data);
+ return;
+ }
+
+ if (!this.state.sessions[session_key]) {
+ throw new Error(`${type} should pass valid session_key`);
+ }
+
+ switch (type) {
+ case "onboarding-session-begin":
+ if (!this.state.sessions[session_key].onboarding_session_id) {
+ throw new Error(`should fire onboarding-register-session event before ${type}`);
+ }
+ this.state.sessions[session_key].onboarding_session_begin = Date.now();
+ return;
+ case "onboarding-session-end":
+ data = Object.assign({}, data, {
+ type: "onboarding-session",
+ });
+ this.state.sessions[session_key].onboarding_session_end = Date.now();
+ break;
+ case "overlay-session-begin":
+ this.state.sessions[session_key].overlay_session_id = gUUIDGenerator.generateUUID().toString();
+ this.state.sessions[session_key].overlay_session_begin = Date.now();
+ return;
+ case "overlay-session-end":
+ data = Object.assign({}, data, {
+ type: "overlay-session",
+ });
+ this.state.sessions[session_key].overlay_session_end = Date.now();
+ break;
+ case "notification-session-begin":
+ this.state.sessions[session_key].notification_session_id = gUUIDGenerator.generateUUID().toString();
+ this.state.sessions[session_key].notification_session_begin = Date.now();
+ return;
+ case "notification-session-end":
+ data = Object.assign({}, data, {
+ type: "notification-session",
+ });
+ this.state.sessions[session_key].notification_session_end = Date.now();
+ break;
+ }
+ let topic = EVENT_WHITELIST[data.type] && EVENT_WHITELIST[data.type].topic;
+ if (!topic) {
+ throw new Error(`ping-centre doesn't know ${type} after processPings, only knows ${Object.keys(EVENT_WHITELIST)}`);
+ }
+ this._sendPing(topic, data);
+ },
+
+ // send out pings by topic
+ _sendPing(topic, data) {
+ if (topic === "internal") {
+ throw new Error(`internal ping ${data.type} should be processed within processPings`);
+ }
+
+ let {
+ addon_version,
+ } = this.state;
+ let {
+ bubble_state = "",
+ current_tour_id = "",
+ logo_state = "",
+ notification_impression = -1,
+ notification_state = "",
+ session_key,
+ target_tour_id = "",
+ type,
+ width,
+ } = data;
+ let {
+ notification_session_begin,
+ notification_session_end,
+ notification_session_id,
+ onboarding_session_begin,
+ onboarding_session_end,
+ onboarding_session_id,
+ overlay_session_begin,
+ overlay_session_end,
+ overlay_session_id,
+ page,
+ tour_type,
+ } = this.state.sessions[session_key];
+ let {
+ category,
+ parent,
+ } = EVENT_WHITELIST[type];
+ let parent_session_id;
+ let payload;
+ let session_begin;
+ let session_end;
+ let session_id;
+ let root_session_id = onboarding_session_id;
+
+ // assign parent_session_id
+ switch (parent) {
+ case "onboarding-session":
+ parent_session_id = onboarding_session_id;
+ break;
+ case "overlay-session":
+ parent_session_id = overlay_session_id;
+ break;
+ case "notification-session":
+ parent_session_id = notification_session_id;
+ break;
+ }
+ if (!parent_session_id) {
+ throw new Error(`Unable to find the ${parent} parent session for the event ${type}`);
+ }
+
+ switch (topic) {
+ case "firefox-onboarding-session2":
+ switch (type) {
+ case "onboarding-session":
+ session_id = onboarding_session_id;
+ session_begin = onboarding_session_begin;
+ session_end = onboarding_session_end;
+ delete this.state.sessions[session_key];
+ break;
+ case "overlay-session":
+ session_id = overlay_session_id;
+ session_begin = overlay_session_begin;
+ session_end = overlay_session_end;
+ break;
+ case "notification-session":
+ session_id = notification_session_id;
+ session_begin = notification_session_begin;
+ session_end = notification_session_end;
+ break;
+ }
+ if (!session_id || !session_begin || !session_end) {
+ throw new Error(`should fire ${type}-begin and ${type}-end event before ${type}`);
+ }
+
+ payload = {
+ addon_version,
+ category,
+ page,
+ parent_session_id,
+ root_session_id,
+ session_begin,
+ session_end,
+ session_id,
+ tour_type,
+ type,
+ };
+ this._validatePayload(payload);
+ this.sessionProbe && this.sessionProbe.sendPing(payload,
+ {filter: ONBOARDING_ID});
+ break;
+ case "firefox-onboarding-event2":
+ let timestamp = Date.now();
+ payload = {
+ addon_version,
+ bubble_state,
+ category,
+ current_tour_id,
+ logo_state,
+ notification_impression,
+ notification_state,
+ page,
+ parent_session_id,
+ root_session_id,
+ target_tour_id,
+ timestamp,
+ tour_type,
+ type,
+ width,
+ };
+ this._validatePayload(payload);
+ this.eventProbe && this.eventProbe.sendPing(payload,
+ {filter: ONBOARDING_ID});
+ break;
+ }
+ },
+
+ // validate data sanitation and make sure correct ping params are sent
+ _validatePayload(payload) {
+ let type = payload.type;
+ let { validators } = EVENT_WHITELIST[type];
+ if (!validators) {
+ throw new Error(`Event ${type} without validators should not be sent.`);
+ }
+ let validatorKeys = Object.keys(validators);
+ // Not send with undefined column
+ if (Object.keys(payload).length > validatorKeys.length) {
+ throw new Error(`Event ${type} want to send more columns than expect, should not be sent.`);
+ }
+ let results = {};
+ let failed = false;
+ // Per column validation
+ for (let key of validatorKeys) {
+ if (payload[key] !== undefined) {
+ results[key] = validators[key](payload[key]);
+ if (!results[key]) {
+ failed = true;
+ }
+ } else {
+ results[key] = false;
+ failed = true;
+ }
+ }
+ if (failed) {
+ throw new Error(`Event ${type} contains incorrect data: ${JSON.stringify(results)}, should not be sent.`);
+ }
+ },
+};
diff --git a/browser/extensions/onboarding/OnboardingTourType.jsm b/browser/extensions/onboarding/OnboardingTourType.jsm
new file mode 100644
index 000000000000..d984fc42f390
--- /dev/null
+++ b/browser/extensions/onboarding/OnboardingTourType.jsm
@@ -0,0 +1,40 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+var EXPORTED_SYMBOLS = ["OnboardingTourType"];
+
+ChromeUtils.defineModuleGetter(this, "Services",
+ "resource://gre/modules/Services.jsm");
+
+var OnboardingTourType = {
+ /**
+ * Determine the current tour type (new user tour or update user tour).
+ * The function checks 2 criterias
+ * - TOURSET_VERSION: current onboarding tourset version
+ * - PREF_SEEN_TOURSET_VERSION: the user seen tourset version
+ * As the result the function will set the right current tour type in the tour type pref (PREF_TOUR_TYPE) for later use.
+ */
+ check() {
+ const PREF_TOUR_TYPE = "browser.onboarding.tour-type";
+ const PREF_SEEN_TOURSET_VERSION = "browser.onboarding.seen-tourset-version";
+ const TOURSET_VERSION = Services.prefs.getIntPref("browser.onboarding.tourset-version");
+
+ if (!Services.prefs.prefHasUserValue(PREF_SEEN_TOURSET_VERSION)) {
+ // User has never seen an onboarding tour, present the user with the new user tour.
+ Services.prefs.setStringPref(PREF_TOUR_TYPE, "new");
+ } else if (Services.prefs.getIntPref(PREF_SEEN_TOURSET_VERSION) < TOURSET_VERSION) {
+ // show the update user tour when tour set version is larger than the seen tourset version
+ Services.prefs.setStringPref(PREF_TOUR_TYPE, "update");
+ // Reset all the notification-related prefs because tours update.
+ Services.prefs.setBoolPref("browser.onboarding.notification.finished", false);
+ Services.prefs.clearUserPref("browser.onboarding.notification.prompt-count");
+ Services.prefs.clearUserPref("browser.onboarding.notification.last-time-of-changing-tour-sec");
+ Services.prefs.clearUserPref("browser.onboarding.notification.tour-ids-queue");
+ Services.prefs.clearUserPref("browser.onboarding.state");
+ }
+ Services.prefs.setIntPref(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+ },
+};
diff --git a/browser/extensions/onboarding/README.md b/browser/extensions/onboarding/README.md
new file mode 100644
index 000000000000..c63be42b7181
--- /dev/null
+++ b/browser/extensions/onboarding/README.md
@@ -0,0 +1,87 @@
+# Onboarding
+
+System addon to provide the onboarding overlay for user-friendly tours.
+
+## How to show the onboarding tour
+
+Open `about:config` page and filter with `onboarding` keyword. Then set following preferences:
+
+```
+browser.onboarding.disabled = false
+browser.onboarding.tour-set = "new" // for new user tour, or "update" for update user tour
+```
+And make sure the value of `browser.onboarding.tourset-verion` and `browser.onboarding.seen-tourset-verion` are the same.
+
+## How to show the onboarding notification
+
+Besides above settings, notification will wait 5 minutes before showing the first notification on a new profile or the updated user profile (to not put too much information to the user at once).
+
+To manually remove the mute duration, set pref `browser.onboarding.notification.mute-duration-on-first-session-ms` to `0` and notification will be shown at the next time you open `about:home`, `about:newtab`, or `about:welcome`.
+
+## How to show the snippets
+
+Snippets (the remote notification that handled by activity stream) will only be shown after onboarding notifications are all done. You can set preference `browser.onboarding.notification.finished` to `true` to disable onboarding notification and accept snippets right away.
+
+## Architecture
+
+
+
+During booting from `bootstrap.js`, `OnboardingTourType.jsm` will check the onboarding tour type (`new` and `update` are supported types) and set required initial states into preferences.
+
+Everytime `about:home`, `about:newtab`, or `about:welcome` page is opened, `onboarding.js` is injected into that page via [frame scripts](https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox/M….
+
+Then in `onboarding.js`, all tours are defined inside of `onboardingTourset` dictionary. `getTourIDList` function will load tours from proper preferences. (Check `How to change the order of tours` section for more detail).
+
+When user clicks the action button in each tour, We use [UITour](http://bedrock.readthedocs.io/en/latest/uitour.html) to highlight the correspondent browser UI element. The UITour client is bundled in onboarding addon via `jar.mn`.
+
+## Landing rules
+
+We would apply some rules:
+
+* To avoid conflict with the origin page, all styles and ids should be formatted as `onboarding-*`.
+* For consistency and easier filtering, all strings in `locales` should be formatted as `onboarding.*`.
+* For consistency, all related preferences should be formatted as `browser.onboarding.*`.
+* For accessibility, images that are for presentation only should have `role="presentation"` attribute.
+
+## How to change the order of tours
+
+Edit `browser/app/profile/firefox.js` and modify `browser.onboarding.newtour` for the new user tour or `browser.onboarding.updatetour` for the update user tour. You can change the tour list and the order by concate `tourIds` with `,` sign. You can find available `tourId` from `onboardingTourset` in `onboarding.js`.
+
+## How to pump tour set version after update tours
+
+We only update the tourset version when we have different **update** tourset. Update the new tourset **does not** require update the tourset version.
+
+The tourset version is used to track the last major tourset change version. The `tourset-version` pref store the major tourset version (ex: `1`) but not the current browser version. When browser update to the next version (ex: 58, 59) the tourset pref is still `1` if we didn't do any major tourset update.
+
+Once the tour set version is updated (ex: `2`), onboarding overlay should show the update tour to the updated user (ex: update from v56 -> v57), even when user has watched the previous tours or preferred to hide the previous tours.
+
+Edit `browser/app/profile/firefox.js` and set `browser.onboarding.tourset-version` as `[tourset version]` (in integer format).
+
+For example, if we update the tourset in v60 and decide to show all update users the tour, we set `browser.onboarding.tourset-version` as `3`.
+
+## Icon states
+
+Onboarding module has two states for its overlay icon: `default` and `watermark`.
+By default, it shows `default` state.
+When either tours or notifications are all completed, the icon changes to the `watermark` state.
+The icon state is stored in `browser.onboarding.state`.
+When `tourset-version` is updated, or when we detect the `tour-type` is changed to `update`, icon state will be changed back to the `default` state.
+
+## Customizable preferences
+
+Here are current support preferences that allow to customize the Onboarding's behavior.
+
+| PREF | DESCRIPTION | DEFAULT |
+|-----|-------------|:-----:|
+| `browser.onboarding.enabled` | disable onboarding experience entirely | true
+| `browser.onboarding.notification.finished` | Decide if we want to hide the notification permanently. | false
+| `browser.onboarding.notification.mute-duration-on-first-session-ms` |Notification mute duration. It also effect when the speech bubble is hidden and turned into the blue dot | 300000 (5 Min)
+| `browser.onboarding.notification.max-life-time-all-tours-ms` | Notification tours will all hide after this period | 1209600000 (10 Days)
+| `browser.onboarding.notification.max-life-time-per-tours-ms` | Per Notification tours will hide and show the next tour after this period | 432000000 (5 Days)
+| `browser.onboarding.notification.max-prompt-count-per-tour` | Each tour can only show the specific times in notification bar if user didn't interact with the tour notification. | 8
+| `browser.onboarding.newtour` | The tourset of new user tour. | performance,private,screenshots,addons,customize,default
+| `browser.onboarding.newtour.tooltip` | The string id which is shown in the new user tour's speech bubble. The preffered length is 2 lines. Should use `%S` to denote Firefox (brand short name) in string, or use `%1$S` if the name shows more than 1 time. | `onboarding.overlay-icon-tooltip2`
+| `browser.onboarding.updatetour` | The tourset of new user tour. | performance,library,screenshots,singlesearch,customize,sync
+| `browser.onboarding.updatetour.tooltip` | The string id which is shown in the update user tour's speech bubble. The preffered length is 2 lines. Should use `%S` to denote Firefox (brand short name) in string, or use `%1$S` if the name shows shows more than 1 time. | `onboarding.overlay-icon-tooltip-updated2`
+| `browser.onboarding.default-icon-src` | The default icon url. Should be svg or at least 64x64 | `chrome://branding/content/icon64.png`
+| `browser.onboarding.watermark-icon-src` | The watermark icon url. Should be svg or at least 64x64 | `resource://onboarding/img/watermark.svg`
diff --git a/browser/extensions/onboarding/api.js b/browser/extensions/onboarding/api.js
new file mode 100644
index 000000000000..c40800577976
--- /dev/null
+++ b/browser/extensions/onboarding/api.js
@@ -0,0 +1,238 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+/* globals APP_STARTUP, ADDON_INSTALL */
+"use strict";
+
+ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+XPCOMUtils.defineLazyModuleGetters(this, {
+ OnboardingTourType: "resource://onboarding/modules/OnboardingTourType.jsm",
+ OnboardingTelemetry: "resource://onboarding/modules/OnboardingTelemetry.jsm",
+ Services: "resource://gre/modules/Services.jsm",
+ UIState: "resource://services-sync/UIState.jsm",
+});
+
+XPCOMUtils.defineLazyServiceGetter(this, "resProto",
+ "@mozilla.org/network/protocol;1?name=resource",
+ "nsISubstitutingProtocolHandler");
+
+const RESOURCE_HOST = "onboarding";
+
+const {PREF_STRING, PREF_BOOL, PREF_INT} = Ci.nsIPrefBranch;
+
+const BROWSER_READY_NOTIFICATION = "browser-delayed-startup-finished";
+const BROWSER_SESSION_STORE_NOTIFICATION = "sessionstore-windows-restored";
+const PREF_WHITELIST = [
+ ["browser.onboarding.enabled", PREF_BOOL],
+ ["browser.onboarding.state", PREF_STRING],
+ ["browser.onboarding.notification.finished", PREF_BOOL],
+ ["browser.onboarding.notification.prompt-count", PREF_INT],
+ ["browser.onboarding.notification.last-time-of-changing-tour-sec", PREF_INT],
+ ["browser.onboarding.notification.tour-ids-queue", PREF_STRING],
+];
+
+[
+ "onboarding-tour-addons",
+ "onboarding-tour-customize",
+ "onboarding-tour-default-browser",
+ "onboarding-tour-library",
+ "onboarding-tour-performance",
+ "onboarding-tour-private-browsing",
+ "onboarding-tour-screenshots",
+ "onboarding-tour-singlesearch",
+ "onboarding-tour-sync",
+].forEach(tourId => PREF_WHITELIST.push([`browser.onboarding.tour.${tourId}.completed`, PREF_BOOL]));
+
+let waitingForBrowserReady = true;
+let startupData;
+
+/**
+ * Set pref. Why no `getPrefs` function is due to the privilege level.
+ * We cannot set prefs inside a framescript but can read.
+ * For simplicity and efficiency, we still read prefs inside the framescript.
+ *
+ * @param {Array} prefs the array of prefs to set.
+ * The array element carries info to set pref, should contain
+ * - {String} name the pref name, such as `browser.onboarding.state`
+ * - {*} value the value to set
+ **/
+function setPrefs(prefs) {
+ prefs.forEach(pref => {
+ let prefObj = PREF_WHITELIST.find(([name ]) => name == pref.name);
+ if (!prefObj) {
+ return;
+ }
+
+ let [name, type] = prefObj;
+
+ switch (type) {
+ case PREF_BOOL:
+ Services.prefs.setBoolPref(name, pref.value);
+ break;
+ case PREF_INT:
+ Services.prefs.setIntPref(name, pref.value);
+ break;
+ case PREF_STRING:
+ Services.prefs.setStringPref(name, pref.value);
+ break;
+ default:
+ throw new TypeError(`Unexpected type (${type}) for preference ${name}.`);
+ }
+ });
+}
+
+/**
+ * syncTourChecker listens to and maintains the login status inside, and can be
+ * queried at any time once initialized.
+ */
+let syncTourChecker = {
+ _registered: false,
+ _loggedIn: false,
+
+ isLoggedIn() {
+ return this._loggedIn;
+ },
+
+ observe(subject, topic) {
+ const state = UIState.get();
+ if (state.status == UIState.STATUS_NOT_CONFIGURED) {
+ this._loggedIn = false;
+ } else {
+ this.setComplete();
+ }
+ },
+
+ init() {
+ if (!Services.prefs.getBoolPref("identity.fxaccounts.enabled")) {
+ return;
+ }
+ // Check if we've already logged in at startup.
+ const state = UIState.get();
+ if (state.status != UIState.STATUS_NOT_CONFIGURED) {
+ this.setComplete();
+ }
+ this.register();
+ },
+
+ register() {
+ if (this._registered) {
+ return;
+ }
+ Services.obs.addObserver(this, "sync-ui-state:update");
+ this._registered = true;
+ },
+
+ setComplete() {
+ this._loggedIn = true;
+ Services.prefs.setBoolPref("browser.onboarding.tour.onboarding-tour-sync.completed", true);
+ },
+
+ unregister() {
+ if (!this._registered) {
+ return;
+ }
+ Services.obs.removeObserver(this, "sync-ui-state:update");
+ this._registered = false;
+ },
+
+ uninit() {
+ this.unregister();
+ },
+};
+
+/**
+ * Listen and process events from content.
+ */
+function initContentMessageListener() {
+ Services.mm.addMessageListener("Onboarding:OnContentMessage", msg => {
+ switch (msg.data.action) {
+ case "set-prefs":
+ setPrefs(msg.data.params);
+ break;
+ case "get-login-status":
+ msg.target.messageManager.sendAsyncMessage("Onboarding:ResponseLoginStatus", {
+ isLoggedIn: syncTourChecker.isLoggedIn(),
+ });
+ break;
+ case "ping-centre":
+ try {
+ OnboardingTelemetry.process(msg.data.params.data);
+ } catch (e) {
+ Cu.reportError(e);
+ }
+ break;
+ }
+ });
+}
+
+/**
+ * onBrowserReady - Continues startup of the add-on after browser is ready.
+ */
+function onBrowserReady() {
+ waitingForBrowserReady = false;
+
+ OnboardingTourType.check();
+ OnboardingTelemetry.init(startupData);
+ Services.mm.loadFrameScript("resource://onboarding/onboarding.js", true, true);
+ initContentMessageListener();
+}
+
+/**
+ * observe - nsIObserver callback to handle various browser notifications.
+ */
+function observe(subject, topic, data) {
+ switch (topic) {
+ case BROWSER_READY_NOTIFICATION:
+ Services.obs.removeObserver(observe, BROWSER_READY_NOTIFICATION);
+ onBrowserReady();
+ break;
+ case BROWSER_SESSION_STORE_NOTIFICATION:
+ Services.obs.removeObserver(observe, BROWSER_SESSION_STORE_NOTIFICATION);
+ // Postpone Firefox account checking until "before handling user events"
+ // phase to meet performance criteria. The reason we don't postpone the
+ // whole onBrowserReady here is because in that way we will miss onload
+ // events for onboarding.js.
+ Services.tm.idleDispatchToMainThread(() => syncTourChecker.init());
+ break;
+ }
+}
+
+this.onboarding = class extends ExtensionAPI {
+ onStartup() {
+ resProto.setSubstitutionWithFlags(RESOURCE_HOST,
+ Services.io.newURI("chrome/content/", null, this.extension.rootURI),
+ resProto.ALLOW_CONTENT_ACCESS);
+
+ if (this.extension.rootURI instanceof Ci.nsIJARURI) {
+ this.manifest = this.extension.rootURI.JARFile.QueryInterface(Ci.nsIFileURL).file;
+ } else if (this.extension.rootURI instanceof Ci.nsIFileURL) {
+ this.manifest = this.extension.rootURI.file;
+ }
+
+ if (this.manifest) {
+ Components.manager.addBootstrappedManifestLocation(this.manifest);
+ } else {
+ Cu.reportError("Cannot find onboarding chrome.manifest for registring translated strings");
+ }
+
+ // Only start Onboarding when the browser UI is ready
+ if (Services.startup.startingUp) {
+ Services.obs.addObserver(observe, BROWSER_READY_NOTIFICATION);
+ Services.obs.addObserver(observe, BROWSER_SESSION_STORE_NOTIFICATION);
+ } else {
+ onBrowserReady();
+ syncTourChecker.init();
+ }
+ }
+
+ onShutdown() {
+ resProto.setSubstitution(RESOURCE_HOST, null);
+
+ // Stop waiting for browser to be ready
+ if (waitingForBrowserReady) {
+ Services.obs.removeObserver(observe, BROWSER_READY_NOTIFICATION);
+ }
+ syncTourChecker.uninit();
+ }
+};
diff --git a/browser/extensions/onboarding/background.js b/browser/extensions/onboarding/background.js
new file mode 100644
index 000000000000..efe296ff2278
--- /dev/null
+++ b/browser/extensions/onboarding/background.js
@@ -0,0 +1,8 @@
+/* eslint-env webextensions */
+
+"use strict";
+
+browser.runtime.onUpdateAvailable.addListener(details => {
+ // By listening to but ignoring this event, any updates will
+ // be delayed until the next browser restart.
+});
diff --git a/browser/extensions/onboarding/content/Onboarding.jsm b/browser/extensions/onboarding/content/Onboarding.jsm
new file mode 100644
index 000000000000..de95a66632ab
--- /dev/null
+++ b/browser/extensions/onboarding/content/Onboarding.jsm
@@ -0,0 +1,1581 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* eslint-env mozilla/frame-script */
+
+"use strict";
+
+var EXPORTED_SYMBOLS = ["Onboarding"];
+
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+
+const ONBOARDING_CSS_URL = "resource://onboarding/onboarding.css";
+const BUNDLE_URI = "chrome://onboarding/locale/onboarding.properties";
+const UITOUR_JS_URI = "resource://onboarding/lib/UITour-lib.js";
+const TOUR_AGENT_JS_URI = "resource://onboarding/onboarding-tour-agent.js";
+const BRAND_SHORT_NAME = Services.strings
+ .createBundle("chrome://branding/locale/brand.properties")
+ .GetStringFromName("brandShortName");
+const PROMPT_COUNT_PREF = "browser.onboarding.notification.prompt-count";
+const NOTIFICATION_FINISHED_PREF = "browser.onboarding.notification.finished";
+const ONBOARDING_DIALOG_ID = "onboarding-overlay-dialog";
+const ONBOARDING_MIN_WIDTH_PX = 960;
+const SPEECH_BUBBLE_MIN_WIDTH_PX = 1365;
+const SPEECH_BUBBLE_NEWTOUR_STRING_ID = "onboarding.overlay-icon-tooltip2";
+const SPEECH_BUBBLE_UPDATETOUR_STRING_ID = "onboarding.overlay-icon-tooltip-updated2";
+const ICON_STATE_WATERMARK = "watermark";
+const ICON_STATE_DEFAULT = "default";
+
+/**
+ * Helper function to create the tour description UI element.
+ */
+function createOnboardingTourDescription(div, title, description) {
+ let doc = div.ownerDocument;
+ let section = doc.createElement("section");
+ section.className = "onboarding-tour-description";
+
+ let h1 = doc.createElement("h1");
+ h1.setAttribute("data-l10n-id", title);
+ section.appendChild(h1);
+
+ let p = doc.createElement("p");
+ p.setAttribute("data-l10n-id", description);
+ section.appendChild(p);
+
+ div.appendChild(section);
+ return section;
+}
+
+/**
+ * Helper function to create the tour content UI element.
+ */
+function createOnboardingTourContent(div, imageSrc) {
+ let doc = div.ownerDocument;
+ let section = doc.createElement("section");
+ section.className = "onboarding-tour-content";
+
+ let img = doc.createElement("img");
+ img.setAttribute("src", imageSrc);
+ img.setAttribute("role", "presentation");
+ section.appendChild(img);
+
+ div.appendChild(section);
+ return section;
+}
+
+/**
+ * Helper function to create the tour button UI element.
+ */
+function createOnboardingTourButton(div, buttonId, l10nId, buttonElementTagName = "button") {
+ let doc = div.ownerDocument;
+ let aside = doc.createElement("aside");
+ aside.className = "onboarding-tour-button-container";
+
+ let button = doc.createElement(buttonElementTagName);
+ button.id = buttonId;
+ button.className = "onboarding-tour-action-button";
+ button.setAttribute("data-l10n-id", l10nId);
+ aside.appendChild(button);
+
+ div.appendChild(aside);
+ return aside;
+}
+
+/**
+ * Add any number of tours, key is the tourId, value should follow the format below
+ * "tourId": { // The short tour id which could be saved in pref
+ * // The unique tour id
+ * id: "onboarding-tour-addons",
+ * // (optional) mark tour as complete instantly when the user enters the tour
+ * instantComplete: false,
+ * // The string id of tour name which would be displayed on the navigation bar
+ * tourNameId: "onboarding.tour-addon",
+ * // The method returing strings used on tour notification
+ * getNotificationStrings(bundle):
+ * - title: // The string of tour notification title
+ * - message: // The string of tour notification message
+ * - button: // The string of tour notification action button title
+ * // Return a div appended with elements for this tours.
+ * // Each tour should contain the following 3 sections in the div:
+ * // .onboarding-tour-description, .onboarding-tour-content, .onboarding-tour-button-container.
+ * // If there was a .onboarding-tour-action-button present and was clicked, tour would be marked as completed.
+ * getPage() {},
+ * },
+ **/
+var onboardingTourset = {
+ "private": {
+ id: "onboarding-tour-private-browsing",
+ tourNameId: "onboarding.tour-private-browsing",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-private-browsing.title"),
+ message: bundle.GetStringFromName("onboarding.notification.onboarding-tour-private-browsing.message2"),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-private-browsing.title2", "onboarding.tour-private-browsing.description3");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_private.svg");
+ createOnboardingTourButton(div,
+ "onboarding-tour-private-browsing-button", "onboarding.tour-private-browsing.button");
+
+ return div;
+ },
+ },
+ "addons": {
+ id: "onboarding-tour-addons",
+ tourNameId: "onboarding.tour-addons",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-addons.title"),
+ message: bundle.formatStringFromName("onboarding.notification.onboarding-tour-addons.message", [BRAND_SHORT_NAME], 1),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-addons.title2", "onboarding.tour-addons.description2");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_addons.svg");
+ createOnboardingTourButton(div,
+ "onboarding-tour-addons-button", "onboarding.tour-addons.button");
+
+ return div;
+ },
+ },
+ "customize": {
+ id: "onboarding-tour-customize",
+ tourNameId: "onboarding.tour-customize",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-customize.title"),
+ message: bundle.formatStringFromName("onboarding.notification.onboarding-tour-customize.message", [BRAND_SHORT_NAME], 1),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-customize.title2", "onboarding.tour-customize.description2");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_customize.svg");
+ createOnboardingTourButton(div,
+ "onboarding-tour-customize-button", "onboarding.tour-customize.button");
+
+ return div;
+ },
+ },
+ "default": {
+ id: "onboarding-tour-default-browser",
+ instantComplete: true,
+ tourNameId: "onboarding.tour-default-browser",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.formatStringFromName("onboarding.notification.onboarding-tour-default-browser.title", [BRAND_SHORT_NAME], 1),
+ message: bundle.formatStringFromName("onboarding.notification.onboarding-tour-default-browser.message", [BRAND_SHORT_NAME], 1),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win, bundle) {
+ let div = win.document.createElement("div");
+ let setFromBackGround = bundle.formatStringFromName("onboarding.tour-default-browser.win7.button", [BRAND_SHORT_NAME], 1);
+ let setFromPanel = bundle.GetStringFromName("onboarding.tour-default-browser.button");
+ let isDefaultMessage = bundle.GetStringFromName("onboarding.tour-default-browser.is-default.message");
+ let isDefault2ndMessage = bundle.formatStringFromName("onboarding.tour-default-browser.is-default.2nd-message", [BRAND_SHORT_NAME], 1);
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-default-browser.title2", "onboarding.tour-default-browser.description2");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_default.svg");
+
+ let aside = win.document.createElement("aside");
+ aside.className = "onboarding-tour-button-container";
+ div.appendChild(aside);
+
+ let button = win.document.createElement("button");
+ button.id = "onboarding-tour-default-browser-button";
+ button.className = "onboarding-tour-action-button";
+ button.setAttribute("data-bg", setFromBackGround);
+ button.setAttribute("data-panel", setFromPanel);
+ aside.appendChild(button);
+
+ let isDefaultBrowserMsg = win.document.createElement("div");
+ isDefaultBrowserMsg.id = "onboarding-tour-is-default-browser-msg";
+ isDefaultBrowserMsg.className = "onboarding-hidden";
+ aside.appendChild(isDefaultBrowserMsg);
+ isDefaultBrowserMsg.append(isDefaultMessage);
+
+ let br = win.document.createElement("br");
+ isDefaultBrowserMsg.appendChild(br);
+ isDefaultBrowserMsg.append(isDefault2ndMessage);
+
+ div.addEventListener("beforeshow", () => {
+ win.document.dispatchEvent(new Event("Agent:CanSetDefaultBrowserInBackground"));
+ });
+ return div;
+ },
+ },
+ "sync": {
+ id: "onboarding-tour-sync",
+ instantComplete: true,
+ tourNameId: "onboarding.tour-sync2",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-sync.title"),
+ message: bundle.GetStringFromName("onboarding.notification.onboarding-tour-sync.message"),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win, bundle) {
+ const STATE_LOGOUT = "logged-out";
+ const STATE_LOGIN = "logged-in";
+ let div = win.document.createElement("div");
+ div.dataset.loginState = STATE_LOGOUT;
+ // The email validation pattern used in the form comes from IETF rfc5321,
+ // which is identical to server-side checker of Firefox Account. See
+ // discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1378770#c6
+ // for detail.
+ let emailRegex = "^[\\w.!#$%&’*+\\/=?^`{|}~-]{1,64}@[a-z\\d](?:[a-z\\d-]{0,253}[a-z\\d])?(?:\\.[a-z\\d](?:[a-z\\d-]{0,253}[a-z\\d])?)+$";
+
+ let description = createOnboardingTourDescription(div,
+ "onboarding.tour-sync.title2", "onboarding.tour-sync.description2");
+
+ description.querySelector("h1").className = "show-on-logged-out";
+ description.querySelector("p").className = "show-on-logged-out";
+
+ let h1LoggedIn = win.document.createElement("h1");
+ h1LoggedIn.setAttribute("data-l10n-id", "onboarding.tour-sync.logged-in.title");
+ h1LoggedIn.className = "show-on-logged-in";
+ description.appendChild(h1LoggedIn);
+
+ let pLoggedIn = win.document.createElement("p");
+ pLoggedIn.setAttribute("data-l10n-id", "onboarding.tour-sync.logged-in.description");
+ pLoggedIn.className = "show-on-logged-in";
+ description.appendChild(pLoggedIn);
+
+ let content = win.document.createElement("section");
+ content.className = "onboarding-tour-content";
+ div.appendChild(content);
+
+ let form = win.document.createElement("form");
+ form.className = "show-on-logged-out";
+ content.appendChild(form);
+
+ let h3 = win.document.createElement("h3");
+ h3.setAttribute("data-l10n-id", "onboarding.tour-sync.form.title");
+ form.appendChild(h3);
+
+ let p = win.document.createElement("p");
+ p.setAttribute("data-l10n-id", "onboarding.tour-sync.form.description");
+ form.appendChild(p);
+
+ let input = win.document.createElement("input");
+ input.id = "onboarding-tour-sync-email-input";
+ input.setAttribute("required", "true");
+ input.setAttribute("type", "email");
+ input.placeholder =
+ bundle.GetStringFromName("onboarding.tour-sync.email-input.placeholder");
+ input.pattern = emailRegex;
+ form.appendChild(input);
+
+ let br = win.document.createElement("br");
+ form.appendChild(br);
+
+ let button = win.document.createElement("button");
+ button.id = "onboarding-tour-sync-button";
+ button.className = "onboarding-tour-action-button";
+ button.setAttribute("data-l10n-id", "onboarding.tour-sync.button");
+ form.appendChild(button);
+
+ let img = win.document.createElement("img");
+ img.setAttribute("src", "resource://onboarding/img/figure_sync.svg");
+ img.setAttribute("role", "presentation");
+ content.appendChild(img);
+
+ let aside = win.document.createElement("aside");
+ aside.className = "onboarding-tour-button-container show-on-logged-in";
+ div.appendChild(aside);
+
+ let connectDeviceButton = win.document.createElement("button");
+ connectDeviceButton.id = "onboarding-tour-sync-connect-device-button";
+ connectDeviceButton.className = "onboarding-tour-action-button";
+ connectDeviceButton.setAttribute("data-l10n-id", "onboarding.tour-sync.connect-device.button");
+ aside.appendChild(connectDeviceButton);
+
+ div.addEventListener("beforeshow", () => {
+ function loginStatusListener(msg) {
+ removeMessageListener("Onboarding:ResponseLoginStatus", loginStatusListener);
+ div.dataset.loginState = msg.data.isLoggedIn ? STATE_LOGIN : STATE_LOGOUT;
+ }
+ this.sendMessageToChrome("get-login-status");
+ this.mm.addMessageListener("Onboarding:ResponseLoginStatus", loginStatusListener);
+ });
+
+ return div;
+ },
+ },
+ "library": {
+ id: "onboarding-tour-library",
+ tourNameId: "onboarding.tour-library",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-library.title"),
+ message: bundle.formatStringFromName("onboarding.notification.onboarding-tour-library.message", [BRAND_SHORT_NAME], 1),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-library.title", "onboarding.tour-library.description2");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_library.svg");
+ createOnboardingTourButton(div,
+ "onboarding-tour-library-button", "onboarding.tour-library.button2");
+
+ return div;
+ },
+ },
+ "singlesearch": {
+ id: "onboarding-tour-singlesearch",
+ tourNameId: "onboarding.tour-singlesearch",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-singlesearch.title"),
+ message: bundle.GetStringFromName("onboarding.notification.onboarding-tour-singlesearch.message"),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win, bundle) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-singlesearch.title", "onboarding.tour-singlesearch.description");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_singlesearch.svg");
+ createOnboardingTourButton(div,
+ "onboarding-tour-singlesearch-button", "onboarding.tour-singlesearch.button");
+
+ return div;
+ },
+ },
+ "performance": {
+ id: "onboarding-tour-performance",
+ instantComplete: true,
+ tourNameId: "onboarding.tour-performance",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-performance.title"),
+ message: bundle.formatStringFromName("onboarding.notification.onboarding-tour-performance.message", [BRAND_SHORT_NAME], 1),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win, bundle) {
+ let div = win.document.createElement("div");
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-performance.title", "onboarding.tour-performance.description");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_performance.svg");
+
+ return div;
+ },
+ },
+ "screenshots": {
+ id: "onboarding-tour-screenshots",
+ tourNameId: "onboarding.tour-screenshots",
+ getNotificationStrings(bundle) {
+ return {
+ title: bundle.GetStringFromName("onboarding.notification.onboarding-tour-screenshots.title"),
+ message: bundle.formatStringFromName("onboarding.notification.onboarding-tour-screenshots.message", [BRAND_SHORT_NAME], 1),
+ button: bundle.GetStringFromName("onboarding.button.learnMore"),
+ };
+ },
+ getPage(win, bundle) {
+ let div = win.document.createElement("div");
+ // Screenshot tour opens the screenshot page directly, see below a#onboarding-tour-screenshots-button.
+ // The screenshots page should be responsible for highlighting the Screenshots button
+
+ createOnboardingTourDescription(div,
+ "onboarding.tour-screenshots.title", "onboarding.tour-screenshots.description");
+ createOnboardingTourContent(div, "resource://onboarding/img/figure_screenshots.svg");
+
+ let aside = createOnboardingTourButton(div,
+ "onboarding-tour-screenshots-button",
+ "onboarding.tour-screenshots.button",
+ "a");
+
+ let button = aside.querySelector("a");
+ button.setAttribute("href", "https://screenshots.firefox.com/#tour");
+ button.setAttribute("target", "_blank");
+
+ return div;
+ },
+ },
+};
+
+/**
+ * The script won't be initialized if we turned off onboarding by
+ * setting "browser.onboarding.enabled" to false.
+ */
+class Onboarding {
+ constructor(mm, contentWindow) {
+ this.mm = mm;
+ this.init(contentWindow);
+ }
+
+
+ /**
+ * @param {String} action the action to ask the chrome to do
+ * @param {Array | Object} params the parameters for the action
+ */
+ sendMessageToChrome(action, params) {
+ this.mm.sendAsyncMessage("Onboarding:OnContentMessage", {
+ action, params,
+ });
+ }
+
+ /**
+ * Template code for talking to `PingCentre`
+ * @param {Object} data the payload for the telemetry
+ */
+ telemetry(data) {
+ this.sendMessageToChrome("ping-centre", {data});
+ }
+
+ registerNewTelemetrySession(data) {
+ this.telemetry(Object.assign(data, {
+ type: "onboarding-register-session",
+ }));
+ }
+
+ async init(contentWindow) {
+ this._window = contentWindow;
+ // session_key is used for telemetry to track the current tab.
+ // The number will renew after reloading the page.
+ this._session_key = Date.now();
+ this._tours = [];
+ this._tourType = Services.prefs.getStringPref("browser.onboarding.tour-type", "update");
+
+ let tourIds = this._getTourIDList();
+ tourIds.forEach(tourId => {
+ if (onboardingTourset[tourId]) {
+ this._tours.push(onboardingTourset[tourId]);
+ }
+ });
+
+ if (this._tours.length === 0) {
+ return;
+ }
+
+ // We want to create and append elements after CSS is loaded so
+ // no flash of style changes and no additional reflow.
+ await this._loadCSS();
+ this._bundle = Services.strings.createBundle(BUNDLE_URI);
+
+ this._loadJS(UITOUR_JS_URI);
+
+ this.uiInitialized = false;
+ let doc = this._window.document;
+ if (doc.hidden) {
+ // When the preloaded-browser feature is on,
+ // it would preload a hidden about:newtab in the background.
+ // We don't want to show onboarding experience in that hidden state.
+ let onVisible = () => {
+ if (!doc.hidden) {
+ doc.removeEventListener("visibilitychange", onVisible);
+ this._startUI();
+ }
+ };
+ doc.addEventListener("visibilitychange", onVisible);
+ } else {
+ this._startUI();
+ }
+ }
+
+ _startUI() {
+ this.registerNewTelemetrySession({
+ page: this._window.location.href,
+ session_key: this._session_key,
+ tour_type: this._tourType,
+ });
+
+ this._window.addEventListener("beforeunload", this);
+ this._window.addEventListener("unload", this);
+ this._window.addEventListener("resize", this);
+ this._resizeTimerId =
+ this._window.requestIdleCallback(() => this._resizeUI());
+ // start log the onboarding-session when the tab is visible
+ this.telemetry({
+ type: "onboarding-session-begin",
+ session_key: this._session_key,
+ });
+ }
+
+ _resizeUI() {
+ this._windowWidth = this._window.document.body.getBoundingClientRect().width;
+ if (this._windowWidth < ONBOARDING_MIN_WIDTH_PX) {
+ // Don't show the overlay UI before we get to a better, responsive design.
+ this.destroy();
+ return;
+ }
+
+ this._initUI();
+ if (this._isFirstSession && this._windowWidth >= SPEECH_BUBBLE_MIN_WIDTH_PX) {
+ this._overlayIcon.classList.add("onboarding-speech-bubble");
+ } else {
+ this._overlayIcon.classList.remove("onboarding-speech-bubble");
+ }
+ }
+
+ _initUI() {
+ if (this.uiInitialized) {
+ return;
+ }
+ this.uiInitialized = true;
+ this._tourItems = [];
+ this._tourPages = [];
+
+ let { body } = this._window.document;
+ this._overlayIcon = this._renderOverlayButton();
+ this._overlayIcon.addEventListener("click", this);
+ this._overlayIcon.addEventListener("keypress", this);
+ body.insertBefore(this._overlayIcon, body.firstChild);
+
+ this._overlay = this._renderOverlay();
+ this._overlay.addEventListener("click", this);
+ this._overlay.addEventListener("keydown", this);
+ this._overlay.addEventListener("keypress", this);
+ body.appendChild(this._overlay);
+
+ this._loadJS(TOUR_AGENT_JS_URI);
+
+ this._initPrefObserver();
+ this._onIconStateChange(Services.prefs.getStringPref("browser.onboarding.state", ICON_STATE_DEFAULT));
+
+ // Doing tour notification takes some effort. Let's do it on idle.
+ this._window.requestIdleCallback(() => this.showNotification());
+ }
+
+ _getTourIDList() {
+ let tours = Services.prefs.getStringPref(`browser.onboarding.${this._tourType}tour`, "");
+ return tours.split(",").filter(tourId => {
+ if (tourId === "sync" && !Services.prefs.getBoolPref("identity.fxaccounts.enabled")) {
+ return false;
+ }
+ return tourId !== "";
+ }).map(tourId => tourId.trim());
+ }
+
+ _initPrefObserver() {
+ if (this._prefsObserved) {
+ return;
+ }
+
+ this._prefsObserved = new Map();
+ this._prefsObserved.set("browser.onboarding.state", () => {
+ this._onIconStateChange(Services.prefs.getStringPref("browser.onboarding.state", ICON_STATE_DEFAULT));
+ });
+ this._tours.forEach(tour => {
+ let tourId = tour.id;
+ this._prefsObserved.set(`browser.onboarding.tour.${tourId}.completed`, () => {
+ this.markTourCompletionState(tourId);
+ this._checkWatermarkByTours();
+ });
+ });
+ for (let [name, callback] of this._prefsObserved) {
+ Services.prefs.addObserver(name, callback);
+ }
+ }
+
+ _checkWatermarkByTours() {
+ let tourDone = this._tours.every(tour => this.isTourCompleted(tour.id));
+ if (tourDone) {
+ this.sendMessageToChrome("set-prefs", [{
+ name: "browser.onboarding.state",
+ value: ICON_STATE_WATERMARK,
+ }]);
+ }
+ }
+
+ _clearPrefObserver() {
+ if (this._prefsObserved) {
+ for (let [name, callback] of this._prefsObserved) {
+ Services.prefs.removeObserver(name, callback);
+ }
+ this._prefsObserved = null;
+ }
+ }
+
+ /**
+ * Find a tour that should be selected. It is either a first tour that was not
+ * yet complete or the first one in the tab list.
+ */
+ get _firstUncompleteTour() {
+ return this._tours.find(tour => !this.isTourCompleted(tour.id)) ||
+ this._tours[0];
+ }
+
+ /*
+ * Return currently showing tour navigation item
+ */
+ get _activeTourId() {
+ // We are doing lazy load so there might be no items.
+ if (!this._tourItems) {
+ return "";
+ }
+
+ let tourItem = this._tourItems.find(item => item.classList.contains("onboarding-active"));
+ return tourItem ? tourItem.id : "";
+ }
+
+ /**
+ * Return current logo state as "logo" or "watermark".
+ */
+ get _logoState() {
+ return this._overlayIcon.classList.contains("onboarding-watermark") ?
+ "watermark" : "logo";
+ }
+
+ /**
+ * Return current speech bubble state as "bubble", "dot" or "hide".
+ */
+ get _bubbleState() {
+ let state;
+ if (this._overlayIcon.classList.contains("onboarding-watermark")) {
+ state = "hide";
+ } else if (this._overlayIcon.classList.contains("onboarding-speech-bubble")) {
+ state = "bubble";
+ } else {
+ state = "dot";
+ }
+ return state;
+ }
+
+ /**
+ * Return current notification state as "show", "hide" or "finished".
+ */
+ get _notificationState() {
+ if (this._notificationCachedState === "finished") {
+ return this._notificationCachedState;
+ }
+
+ if (Services.prefs.getBoolPref(NOTIFICATION_FINISHED_PREF, false)) {
+ this._notificationCachedState = "finished";
+ } else if (this._notification) {
+ this._notificationCachedState = "show";
+ } else {
+ // we know it is in the hidden state if there's no notification bar
+ this._notificationCachedState = "hide";
+ }
+
+ return this._notificationCachedState;
+ }
+
+ /**
+ * Return current notification prompt count.
+ */
+ get _notificationPromptCount() {
+ return Services.prefs.getIntPref(PROMPT_COUNT_PREF, 0);
+ }
+
+ /**
+ * Return current screen width and round it up to the nearest 50 pixels.
+ * Collecting rounded values reduces the risk that this could be used to
+ * derive a unique user identifier
+ */
+ get _windowWidthRounded() {
+ return Math.round(this._windowWidth / 50) * 50;
+ }
+
+ handleClick(target) {
+ let { id, classList } = target;
+ // Only containers receive pointer events in onboarding tour tab list,
+ // actual semantic tab is their first child.
+ if (classList.contains("onboarding-tour-item-container")) {
+ ({ id, classList } = target.firstChild);
+ }
+
+ switch (id) {
+ case "onboarding-overlay-button-icon":
+ case "onboarding-overlay-button":
+ this.telemetry({
+ type: "onboarding-logo-click",
+ bubble_state: this._bubbleState,
+ logo_state: this._logoState,
+ notification_state: this._notificationState,
+ session_key: this._session_key,
+ width: this._windowWidthRounded,
+ });
+ this.showOverlay();
+ this.gotoPage(this._firstUncompleteTour.id);
+ break;
+ case "onboarding-skip-tour-button":
+ this.hideNotification();
+ this.hideOverlay();
+ this.skipTour();
+ break;
+ case "onboarding-overlay-close-btn":
+ // If the clicking target is directly on the outer-most overlay,
+ // that means clicking outside the tour content area.
+ // Let's toggle the overlay.
+ case "onboarding-overlay":
+ let eventName = id === "onboarding-overlay-close-btn" ?
+ "overlay-close-button-click" : "overlay-close-outside-click";
+ this.telemetry({
+ type: eventName,
+ current_tour_id: this._activeTourId,
+ session_key: this._session_key,
+ target_tour_id: this._activeTourId,
+ width: this._windowWidthRounded,
+ });
+ this.hideOverlay();
+ break;
+ case "onboarding-notification-close-btn":
+ let currentTourId = this._notificationBar.dataset.targetTourId;
+ // should trigger before notification-session event is sent
+ this.telemetry({
+ type: "notification-close-button-click",
+ bubble_state: this._bubbleState,
+ current_tour_id: currentTourId,
+ logo_state: this._logoState,
+ notification_impression: this._notificationPromptCount,
+ notification_state: this._notificationState,
+ session_key: this._session_key,
+ target_tour_id: currentTourId,
+ width: this._windowWidthRounded,
+ });
+ this.hideNotification();
+ this._removeTourFromNotificationQueue(currentTourId);
+ break;
+ case "onboarding-notification-action-btn":
+ let tourId = this._notificationBar.dataset.targetTourId;
+ this.telemetry({
+ type: "notification-cta-click",
+ bubble_state: this._bubbleState,
+ current_tour_id: tourId,
+ logo_state: this._logoState,
+ notification_impression: this._notificationPromptCount,
+ notification_state: this._notificationState,
+ session_key: this._session_key,
+ target_tour_id: tourId,
+ width: this._windowWidthRounded,
+ });
+ this.showOverlay();
+ this.gotoPage(tourId);
+ this._removeTourFromNotificationQueue(tourId);
+ break;
+ }
+ if (classList.contains("onboarding-tour-item")) {
+ this.telemetry({
+ type: "overlay-nav-click",
+ current_tour_id: this._activeTourId,
+ session_key: this._session_key,
+ target_tour_id: id,
+ width: this._windowWidthRounded,
+ });
+ this.gotoPage(id);
+ // Keep focus (not visible) on current item for potential keyboard
+ // navigation.
+ target.focus();
+ } else if (classList.contains("onboarding-tour-action-button")) {
+ let activeTourId = this._activeTourId;
+ this.setToursCompleted([ activeTourId ]);
+ this.telemetry({
+ type: "overlay-cta-click",
+ current_tour_id: activeTourId,
+ session_key: this._session_key,
+ target_tour_id: activeTourId,
+ width: this._windowWidthRounded,
+ });
+ }
+ }
+
+ /**
+ * Wrap keyboard focus within the dialog.
+ * When moving forward, focus on the first element when the current focused
+ * element is the last one.
+ * When moving backward, focus on the last element when the current focused
+ * element is the first one.
+ * Do nothing if focus is moving in the middle of the list of dialog's focusable
+ * elements.
+ *
+ * @param {DOMNode} current currently focused element
+ * @param {Boolean} back direction
+ * @return {DOMNode} newly focused element if any
+ */
+ wrapMoveFocus(current, back) {
+ let elms = [...this._dialog.querySelectorAll(
+ `button, input[type="checkbox"], input[type="email"], [tabindex="0"]`)];
+ let next;
+ if (back) {
+ if (elms.indexOf(current) === 0) {
+ next = elms[elms.length - 1];
+ next.focus();
+ }
+ } else if (elms.indexOf(current) === elms.length - 1) {
+ next = elms[0];
+ next.focus();
+ }
+ return next;
+ }
+
+ handleKeydown(event) {
+ let { target, key, shiftKey } = event;
+
+ // Currently focused item could be tab container if previous navigation was done
+ // via mouse.
+ if (target.classList.contains("onboarding-tour-item-container")) {
+ target = target.firstChild;
+ }
+ let targetIndex;
+ switch (key) {
+ case "ArrowUp":
+ // Go to and focus on the previous tab if it's available.
+ targetIndex = this._tourItems.indexOf(target);
+ if (targetIndex > 0) {
+ let previous = this._tourItems[targetIndex - 1];
+ this.handleClick(previous);
+ previous.focus();
+ }
+ event.preventDefault();
+ break;
+ case "ArrowDown":
+ // Go to and focus on the next tab if it's available.
+ targetIndex = this._tourItems.indexOf(target);
+ if (targetIndex > -1 && targetIndex < this._tourItems.length - 1) {
+ let next = this._tourItems[targetIndex + 1];
+ this.handleClick(next);
+ next.focus();
+ }
+ event.preventDefault();
+ break;
+ case "Escape":
+ this.hideOverlay();
+ break;
+ case "Tab":
+ let next = this.wrapMoveFocus(target, shiftKey);
+ // If focus was wrapped, prevent Tab key default action.
+ if (next) {
+ event.preventDefault();
+ }
+ break;
+ default:
+ break;
+ }
+ event.stopPropagation();
+ }
+
+ handleKeypress(event) {
+ let { target, key } = event;
+
+ if (target === this._overlayIcon) {
+ if ([" ", "Enter"].includes(key)) {
+ // Remember that the dialog was opened with a keyboard.
+ this._overlayIcon.dataset.keyboardFocus = true;
+ this.handleClick(target);
+ event.preventDefault();
+ }
+ return;
+ }
+
+ // Currently focused item could be tab container if previous navigation was done
+ // via mouse.
+ if (target.classList.contains("onboarding-tour-item-container")) {
+ target = target.firstChild;
+ }
+ switch (key) {
+ case " ":
+ case "Enter":
+ // Assume that the handle function should be identical for keyboard
+ // activation if there is a click handler for the target.
+ if (target.classList.contains("onboarding-tour-item")) {
+ this.handleClick(target);
+ target.focus();
+ }
+ break;
+ default:
+ break;
+ }
+ event.stopPropagation();
+ }
+
+ handleEvent(evt) {
+ switch (evt.type) {
+ case "beforeunload":
+ // To make sure the telemetry pings are sent,
+ // we send "onboarding-session-end" ping as well as
+ // "overlay-session-end" and "notification-session-end" ping
+ // (by hiding the overlay and notificaiton) on beforeunload.
+ this.hideOverlay();
+ this.hideNotification();
+ this.telemetry({
+ type: "onboarding-session-end",
+ session_key: this._session_key,
+ });
+ break;
+ case "unload":
+ // Notice: Cannot do `destroy` on beforeunload, must do on unload.
+ // Otherwise, we would hit the docShell leak in the test.
+ // See Bug 1413830#c190 and Bug 1429652 for details.
+ this.destroy();
+ break;
+ case "resize":
+ this._window.cancelIdleCallback(this._resizeTimerId);
+ this._resizeTimerId =
+ this._window.requestIdleCallback(() => this._resizeUI());
+ break;
+ case "keydown":
+ this.handleKeydown(evt);
+ break;
+ case "keypress":
+ this.handleKeypress(evt);
+ break;
+ case "click":
+ this.handleClick(evt.target);
+ break;
+ default:
+ break;
+ }
+ }
+
+ destroy() {
+ if (!this.uiInitialized) {
+ return;
+ }
+ this.uiInitialized = false;
+
+ this._overlayIcon.dispatchEvent(new this._window.CustomEvent("Agent:Destroy"));
+
+ this._clearPrefObserver();
+ this._overlayIcon.remove();
+ if (this._overlay) {
+ // send overlay-session telemetry
+ this.hideOverlay();
+ this._overlay.remove();
+ }
+ if (this._notificationBar) {
+ // send notification-session telemetry
+ this.hideNotification();
+ this._notificationBar.remove();
+ }
+ this._tourItems = this._tourPages =
+ this._overlayIcon = this._overlay = this._notificationBar = null;
+ }
+
+ _onIconStateChange(state) {
+ switch (state) {
+ case ICON_STATE_DEFAULT:
+ this._overlayIcon.classList.remove("onboarding-watermark");
+ break;
+ case ICON_STATE_WATERMARK:
+ this._overlayIcon.classList.add("onboarding-watermark");
+ break;
+ }
+ return true;
+ }
+
+ showOverlay() {
+ if (this._tourItems.length == 0) {
+ // Lazy loading until first toggle.
+ this._loadTours(this._tours);
+ }
+
+ if (this._overlay && !this._overlay.classList.contains("onboarding-opened")) {
+ this.hideNotification();
+ this._overlay.classList.add("onboarding-opened");
+ this.toggleModal(true);
+ this.telemetry({
+ type: "overlay-session-begin",
+ session_key: this._session_key,
+ });
+ }
+ }
+
+ hideOverlay() {
+ if (this._overlay && this._overlay.classList.contains("onboarding-opened")) {
+ this._overlay.classList.remove("onboarding-opened");
+ this.toggleModal(false);
+ this.telemetry({
+ type: "overlay-session-end",
+ session_key: this._session_key,
+ });
+ }
+ }
+
+ /**
+ * Set modal dialog state and properties for accessibility purposes.
+ * @param {Boolean} opened whether the dialog is opened or closed.
+ */
+ toggleModal(opened) {
+ let { document: doc } = this._window;
+ if (opened) {
+ // Set aria-hidden to true for the rest of the document.
+ [...doc.body.children].forEach(
+ child => child.id !== "onboarding-overlay" &&
+ child.setAttribute("aria-hidden", true));
+ // When dialog is opened with the keyboard, focus on the first
+ // uncomplete tour because it will be the selected tour.
+ if (this._overlayIcon.dataset.keyboardFocus) {
+ doc.getElementById(this._firstUncompleteTour.id).focus();
+ } else {
+ // When the dialog is opened with the mouse, focus on the dialog
+ // itself to avoid visible keyboard focus styling.
+ this._dialog.focus();
+ }
+ } else {
+ // Remove all set aria-hidden attributes.
+ [...doc.body.children].forEach(
+ child => child.removeAttribute("aria-hidden"));
+ // If dialog was opened with a keyboard, set the focus back to the overlay
+ // button.
+ if (this._overlayIcon.dataset.keyboardFocus) {
+ delete this._overlayIcon.dataset.keyboardFocus;
+ this._overlayIcon.focus();
+ } else {
+ this._window.document.activeElement.blur();
+ }
+ }
+ }
+
+ /**
+ * Switch to proper tour.
+ * @param {String} tourId specify which tour should be switched.
+ */
+ gotoPage(tourId) {
+ let targetPageId = `${tourId}-page`;
+ for (let page of this._tourPages) {
+ if (page.id === targetPageId) {
+ page.style.display = "";
+ page.dispatchEvent(new this._window.CustomEvent("beforeshow"));
+ } else {
+ page.style.display = "none";
+ }
+ }
+ for (let tab of this._tourItems) {
+ if (tab.id == tourId) {
+ tab.classList.add("onboarding-active");
+ tab.setAttribute("aria-selected", true);
+ this.telemetry({
+ type: "overlay-current-tour",
+ current_tour_id: tourId,
+ session_key: this._session_key,
+ width: this._windowWidthRounded,
+ });
+
+ // Some tours should complete instantly upon showing.
+ if (tab.getAttribute("data-instant-complete")) {
+ this.setToursCompleted([tourId]);
+ }
+ } else {
+ tab.classList.remove("onboarding-active");
+ tab.setAttribute("aria-selected", false);
+ }
+ }
+ }
+
+ isTourCompleted(tourId) {
+ return Services.prefs.getBoolPref(`browser.onboarding.tour.${tourId}.completed`, false);
+ }
+
+ setToursCompleted(tourIds) {
+ let params = [];
+ tourIds.forEach(id => {
+ if (!this.isTourCompleted(id)) {
+ params.push({
+ name: `browser.onboarding.tour.${id}.completed`,
+ value: true,
+ });
+ }
+ });
+ if (params.length > 0) {
+ this.sendMessageToChrome("set-prefs", params);
+ }
+ }
+
+ markTourCompletionState(tourId) {
+ // We are doing lazy load so there might be no items.
+ if (!this._tourItems || this._tourItems.length === 0) {
+ return;
+ }
+
+ let completed = this.isTourCompleted(tourId);
+ let targetItem = this._tourItems.find(item => item.id == tourId);
+ let completedTextId = `onboarding-complete-${tourId}-text`;
+ // Accessibility: Text version of the auxiliary information about the tour
+ // item completion is provided via an invisible node with an aria-label that
+ // the tab is pointing to via aria-described by.
+ let completedText = targetItem.querySelector(`#${completedTextId}`);
+ if (completed) {
+ targetItem.classList.add("onboarding-complete");
+ if (!completedText) {
+ completedText = this._window.document.createElement("span");
+ completedText.id = completedTextId;
+ completedText.setAttribute("aria-label",
+ this._bundle.GetStringFromName("onboarding.complete"));
+ targetItem.appendChild(completedText);
+ targetItem.setAttribute("aria-describedby", completedTextId);
+ }
+ } else {
+ targetItem.classList.remove("onboarding-complete");
+ targetItem.removeAttribute("aria-describedby");
+ if (completedText) {
+ completedText.remove();
+ }
+ }
+ }
+
+ get _isFirstSession() {
+ // Should only directly return on the "false" case. Consider:
+ // 1. On the 1st session, `_firstSession` is true
+ // 2. During the 1st session, user resizes window so that the UI is destroyed
+ // 3. After the 1st mute session, user resizes window so that the UI is re-init
+ if (this._firstSession === false) {
+ return false;
+ }
+ this._firstSession = true;
+
+ // There is a queue, which means we had prompted tour notifications before. Therefore this is not the 1st session.
+ if (Services.prefs.prefHasUserValue("browser.onboarding.notification.tour-ids-queue")) {
+ this._firstSession = false;
+ }
+
+ // When this is set to 0 on purpose, always judge as not the 1st session
+ if (Services.prefs.getIntPref("browser.onboarding.notification.mute-duration-on-first-session-ms") === 0) {
+ this._firstSession = false;
+ }
+
+ return this._firstSession;
+ }
+
+ _getLastTourChangeTime() {
+ return 1000 * Services.prefs.getIntPref("browser.onboarding.notification.last-time-of-changing-tour-sec", 0);
+ }
+
+ _muteNotificationOnFirstSession(lastTourChangeTime) {
+ if (!this._isFirstSession) {
+ return false;
+ }
+
+ if (lastTourChangeTime <= 0) {
+ this.sendMessageToChrome("set-prefs", [{
+ name: "browser.onboarding.notification.last-time-of-changing-tour-sec",
+ value: Math.floor(Date.now() / 1000),
+ }]);
+ return true;
+ }
+ let muteDuration = Services.prefs.getIntPref("browser.onboarding.notification.mute-duration-on-first-session-ms");
+ return Date.now() - lastTourChangeTime <= muteDuration;
+ }
+
+ _isTimeForNextTourNotification(lastTourChangeTime) {
+ let maxCount = Services.prefs.getIntPref("browser.onboarding.notification.max-prompt-count-per-tour");
+ if (this._notificationPromptCount >= maxCount) {
+ return true;
+ }
+
+ let maxTime = Services.prefs.getIntPref("browser.onboarding.notification.max-life-time-per-tour-ms");
+ if (lastTourChangeTime && Date.now() - lastTourChangeTime >= maxTime) {
+ return true;
+ }
+
+ return false;
+ }
+
+ _removeTourFromNotificationQueue(tourId) {
+ let params = [];
+ let queue = this._getNotificationQueue();
+ params.push({
+ name: "browser.onboarding.notification.tour-ids-queue",
+ value: queue.filter(id => id != tourId).join(","),
+ });
+ params.push({
+ name: "browser.onboarding.notification.last-time-of-changing-tour-sec",
+ value: 0,
+ });
+ params.push({
+ name: "browser.onboarding.notification.prompt-count",
+ value: 0,
+ });
+ this.sendMessageToChrome("set-prefs", params);
+ }
+
+ _getNotificationQueue() {
+ let queue = "";
+ if (Services.prefs.prefHasUserValue("browser.onboarding.notification.tour-ids-queue")) {
+ queue = Services.prefs.getStringPref("browser.onboarding.notification.tour-ids-queue");
+ } else {
+ // For each tour, it only gets 2 chances to prompt with notification
+ // (each chance includes 8 impressions or 5-days max life time)
+ // if user never interact with it.
+ // Assume there are tour #0 ~ #5. Here would form the queue as
+ // "#0,#1,#2,#3,#4,#5,#0,#1,#2,#3,#4,#5".
+ // Then we would loop through this queue and remove prompted tour from the queue
+ // until the queue is empty.
+ let ids = this._tours.map(tour => tour.id).join(",");
+ queue = `${ids},${ids}`;
+ this.sendMessageToChrome("set-prefs", [{
+ name: "browser.onboarding.notification.tour-ids-queue",
+ value: queue,
+ }]);
+ }
+ return queue ? queue.split(",") : [];
+ }
+
+ showNotification() {
+ if (this._notificationState === "finished") {
+ return;
+ }
+
+ let lastTime = this._getLastTourChangeTime();
+ if (this._muteNotificationOnFirstSession(lastTime)) {
+ return;
+ }
+
+ // After the notification mute on the 1st session,
+ // we don't want to show the speech bubble by default
+ this._overlayIcon.classList.remove("onboarding-speech-bubble");
+
+ let queue = this._getNotificationQueue();
+ let totalMaxTime = Services.prefs.getIntPref("browser.onboarding.notification.max-life-time-all-tours-ms");
+ if (lastTime && Date.now() - lastTime >= totalMaxTime) {
+ // Reach total max life time for all tour notifications.
+ // Clear the queue so that we would finish tour notifications below
+ queue = [];
+ }
+
+ let startQueueLength = queue.length;
+ // See if need to move on to the next tour
+ if (queue.length > 0 && this._isTimeForNextTourNotification(lastTime)) {
+ queue.shift();
+ }
+ // We don't want to prompt the completed tour.
+ while (queue.length > 0 && this.isTourCompleted(queue[0])) {
+ queue.shift();
+ }
+
+ if (queue.length == 0) {
+ this.sendMessageToChrome("set-prefs", [
+ {
+ name: NOTIFICATION_FINISHED_PREF,
+ value: true,
+ },
+ {
+ name: "browser.onboarding.notification.tour-ids-queue",
+ value: "",
+ },
+ {
+ name: "browser.onboarding.state",
+ value: ICON_STATE_WATERMARK,
+ },
+ ]);
+ return;
+ }
+ let targetTourId = queue[0];
+ let targetTour = this._tours.find(tour => tour.id == targetTourId);
+
+ // Show the target tour notification
+ this._notificationBar = this._renderNotificationBar();
+ this._notificationBar.addEventListener("click", this);
+ this._notificationBar.dataset.targetTourId = targetTour.id;
+ let notificationStrings = targetTour.getNotificationStrings(this._bundle);
+ let actionBtn = this._notificationBar.querySelector("#onboarding-notification-action-btn");
+ actionBtn.textContent = notificationStrings.button;
+ let tourTitle = this._notificationBar.querySelector("#onboarding-notification-tour-title");
+ tourTitle.textContent = notificationStrings.title;
+ let tourMessage = this._notificationBar.querySelector("#onboarding-notification-tour-message");
+ tourMessage.textContent = notificationStrings.message;
+ this._notificationBar.classList.add("onboarding-opened");
+ this._window.document.body.appendChild(this._notificationBar);
+
+ let params = [];
+ let promptCount = 1;
+ if (startQueueLength != queue.length) {
+ // We just change tour so update the time, the count and the queue
+ params.push({
+ name: "browser.onboarding.notification.last-time-of-changing-tour-sec",
+ value: Math.floor(Date.now() / 1000),
+ });
+ params.push({
+ name: PROMPT_COUNT_PREF,
+ value: promptCount,
+ });
+ params.push({
+ name: "browser.onboarding.notification.tour-ids-queue",
+ value: queue.join(","),
+ });
+ } else {
+ promptCount = this._notificationPromptCount + 1;
+ params.push({
+ name: PROMPT_COUNT_PREF,
+ value: promptCount,
+ });
+ }
+ this.sendMessageToChrome("set-prefs", params);
+ this.telemetry({
+ type: "notification-session-begin",
+ session_key: this._session_key,
+ });
+ // since set-perfs is async, pass promptCount directly to avoid gathering the wrong
+ // notification_impression.
+ this.telemetry({
+ type: "notification-appear",
+ bubble_state: this._bubbleState,
+ current_tour_id: targetTourId,
+ logo_state: this._logoState,
+ notification_impression: promptCount,
+ notification_state: this._notificationState,
+ session_key: this._session_key,
+ width: this._windowWidthRounded,
+ });
+ }
+
+ hideNotification() {
+ if (this._notificationBar) {
+ if (this._notificationBar.classList.contains("onboarding-opened")) {
+ this._notificationBar.classList.remove("onboarding-opened");
+ this.telemetry({
+ type: "notification-session-end",
+ session_key: this._session_key,
+ });
+ }
+ }
+ }
+
+ _renderNotificationBar() {
+ let footer = this._window.document.createElement("footer");
+ footer.id = "onboarding-notification-bar";
+ footer.setAttribute("aria-live", "polite");
+ footer.setAttribute("aria-labelledby", "onboarding-notification-tour-title");
+
+ let section = this._window.document.createElement("section");
+ section.id = "onboarding-notification-message-section";
+ section.setAttribute("role", "presentation");
+ footer.appendChild(section);
+
+ let icon = this._window.document.createElement("div");
+ icon.id = "onboarding-notification-tour-icon";
+ icon.setAttribute("role", "presentation");
+ section.appendChild(icon);
+
+ let onboardingNotificationBody = this._window.document.createElement("div");
+ onboardingNotificationBody.id = "onboarding-notification-body";
+ onboardingNotificationBody.setAttribute("role", "presentation");
+ section.appendChild(onboardingNotificationBody);
+
+ let title = this._window.document.createElement("h1");
+ title.id = "onboarding-notification-tour-title";
+ onboardingNotificationBody.appendChild(title);
+
+ let message = this._window.document.createElement("p");
+ message.id = "onboarding-notification-tour-message";
+ onboardingNotificationBody.appendChild(message);
+
+ let actionButton = this._window.document.createElement("button");
+ actionButton.id = "onboarding-notification-action-btn";
+ actionButton.className = "onboarding-action-button";
+ section.appendChild(actionButton);
+
+ let closeButton = this._window.document.createElement("button");
+ closeButton.id = "onboarding-notification-close-btn";
+ closeButton.className = "onboarding-close-btn";
+ footer.appendChild(closeButton);
+
+ closeButton.setAttribute("title",
+ this._bundle.GetStringFromName("onboarding.notification-close-button-tooltip"));
+
+ return footer;
+ }
+
+ skipTour() {
+ this.setToursCompleted(this._tours.map(tour => tour.id));
+ this.sendMessageToChrome("set-prefs", [
+ {
+ name: NOTIFICATION_FINISHED_PREF,
+ value: true,
+ },
+ {
+ name: "browser.onboarding.state",
+ value: ICON_STATE_WATERMARK,
+ },
+ ]);
+ this.telemetry({
+ type: "overlay-skip-tour",
+ current_tour_id: this._activeTourId,
+ session_key: this._session_key,
+ width: this._windowWidthRounded,
+ });
+ }
+
+ _renderOverlay() {
+ let div = this._window.document.createElement("div");
+ div.id = "onboarding-overlay";
+
+ this._dialog = this._window.document.createElement("div");
+ this._dialog.setAttribute("role", "dialog");
+ this._dialog.setAttribute("tabindex", "-1");
+ this._dialog.setAttribute("aria-labelledby", "onboarding-header");
+ this._dialog.id = ONBOARDING_DIALOG_ID;
+ div.appendChild(this._dialog);
+
+ let header = this._window.document.createElement("header");
+ header.id = "onboarding-header";
+ header.textContent = this._bundle.GetStringFromName("onboarding.overlay-title2");
+ this._dialog.appendChild(header);
+
+ let nav = this._window.document.createElement("nav");
+ this._dialog.appendChild(nav);
+
+ let tourList = this._window.document.createElement("ul");
+ tourList.id = "onboarding-tour-list";
+ tourList.setAttribute("role", "tablist");
+ nav.appendChild(tourList);
+
+ let footer = this._window.document.createElement("footer");
+ footer.id = "onboarding-footer";
+ this._dialog.appendChild(footer);
+
+ let button = this._window.document.createElement("button");
+ button.id = "onboarding-overlay-close-btn";
+ button.className = "onboarding-close-btn";
+ button.setAttribute("title",
+ this._bundle.GetStringFromName("onboarding.overlay-close-button-tooltip"));
+ this._dialog.appendChild(button);
+
+ // support show/hide skip tour button via pref
+ if (!Services.prefs.getBoolPref("browser.onboarding.skip-tour-button.hide", false)) {
+ let skipButton = this._window.document.createElement("button");
+ skipButton.id = "onboarding-skip-tour-button";
+ skipButton.classList.add("onboarding-action-button");
+ skipButton.textContent = this._bundle.GetStringFromName("onboarding.skip-tour-button-label");
+ footer.appendChild(skipButton);
+ }
+
+ return div;
+ }
+
+ _renderOverlayButton() {
+ let button = this._window.document.createElement("button");
+ // support customize speech bubble string via pref
+ let tooltipStringPrefId = "";
+ let defaultTourStringId = "";
+ if (this._tourType === "new") {
+ tooltipStringPrefId = "browser.onboarding.newtour.tooltip";
+ defaultTourStringId = SPEECH_BUBBLE_NEWTOUR_STRING_ID;
+ } else {
+ tooltipStringPrefId = "browser.onboarding.updatetour.tooltip";
+ defaultTourStringId = SPEECH_BUBBLE_UPDATETOUR_STRING_ID;
+ }
+ let tooltip = "";
+ try {
+ let tooltipStringId = Services.prefs.getStringPref(tooltipStringPrefId, defaultTourStringId);
+ tooltip = this._bundle.formatStringFromName(tooltipStringId, [BRAND_SHORT_NAME], 1);
+ } catch (e) {
+ Cu.reportError(e);
+ // fallback to defaultTourStringId to proceed
+ tooltip = this._bundle.formatStringFromName(defaultTourStringId, [BRAND_SHORT_NAME], 1);
+ }
+ button.setAttribute("aria-label", tooltip);
+ button.id = "onboarding-overlay-button";
+ button.setAttribute("aria-haspopup", true);
+ button.setAttribute("aria-controls", `${ONBOARDING_DIALOG_ID}`);
+ let defaultImg = this._window.document.createElement("img");
+ defaultImg.id = "onboarding-overlay-button-icon";
+ defaultImg.setAttribute("role", "presentation");
+ defaultImg.src = Services.prefs.getStringPref("browser.onboarding.default-icon-src",
+ "chrome://branding/content/icon64.png");
+ button.appendChild(defaultImg);
+ let watermarkImg = this._window.document.createElement("img");
+ watermarkImg.id = "onboarding-overlay-button-watermark-icon";
+ watermarkImg.setAttribute("role", "presentation");
+ watermarkImg.src = Services.prefs.getStringPref("browser.onboarding.watermark-icon-src",
+ "resource://onboarding/img/watermark.svg");
+ button.appendChild(watermarkImg);
+ return button;
+ }
+
+ _loadTours(tours) {
+ let itemsFrag = this._window.document.createDocumentFragment();
+ let pagesFrag = this._window.document.createDocumentFragment();
+ for (let tour of tours) {
+ // Create tour navigation items dynamically
+ let li = this._window.document.createElement("li");
+ // List item should have no semantics. It is just a container for an
+ // actual tab.
+ li.setAttribute("role", "presentation");
+ li.className = "onboarding-tour-item-container";
+ // Focusable but not tabbable.
+ li.tabIndex = -1;
+
+ let tab = this._window.document.createElement("span");
+ tab.id = tour.id;
+ tab.textContent = this._bundle.GetStringFromName(tour.tourNameId);
+ tab.className = "onboarding-tour-item";
+ if (tour.instantComplete) {
+ tab.dataset.instantComplete = true;
+ }
+ tab.tabIndex = 0;
+ tab.setAttribute("role", "tab");
+
+ let tourPanelId = `${tour.id}-page`;
+ tab.setAttribute("aria-controls", tourPanelId);
+
+ li.appendChild(tab);
+ itemsFrag.appendChild(li);
+ // Dynamically create tour pages
+ let div = tour.getPage.call(this, this._window, this._bundle);
+
+ // Do a traverse for elements in the page that need to be localized.
+ let l10nElements = div.querySelectorAll("[data-l10n-id]");
+ for (let i = 0; i < l10nElements.length; i++) {
+ let element = l10nElements[i];
+ // We always put brand short name as the first argument for it's the
+ // only and frequently used arguments in our l10n case. Rewrite it if
+ // other arguments appear.
+ element.textContent = this._bundle.formatStringFromName(
+ element.dataset.l10nId, [BRAND_SHORT_NAME], 1);
+ }
+
+ div.id = tourPanelId;
+ div.classList.add("onboarding-tour-page");
+ div.setAttribute("role", "tabpanel");
+ div.setAttribute("aria-labelledby", tour.id);
+ div.style.display = "none";
+ pagesFrag.appendChild(div);
+ // Cache elements in arrays for later use to avoid cost of querying elements
+ this._tourItems.push(tab);
+ this._tourPages.push(div);
+
+ this.markTourCompletionState(tour.id);
+ }
+
+ let ul = this._window.document.getElementById("onboarding-tour-list");
+ ul.appendChild(itemsFrag);
+ let footer = this._window.document.getElementById("onboarding-footer");
+ this._dialog.insertBefore(pagesFrag, footer);
+ }
+
+ _loadCSS() {
+ // Returning a Promise so we can inform caller of loading complete
+ // by resolving it.
+ return new Promise(resolve => {
+ let doc = this._window.document;
+ let link = doc.createElement("link");
+ link.rel = "stylesheet";
+ link.type = "text/css";
+ link.href = ONBOARDING_CSS_URL;
+ link.addEventListener("load", resolve);
+ doc.head.appendChild(link);
+ });
+ }
+
+ _loadJS(uri) {
+ let doc = this._window.document;
+ let script = doc.createElement("script");
+ script.type = "text/javascript";
+ script.src = uri;
+ doc.head.appendChild(script);
+ }
+}
diff --git a/browser/extensions/onboarding/content/img/figure_addons.svg b/browser/extensions/onboarding/content/img/figure_addons.svg
new file mode 100644
index 000000000000..b5f056737f11
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_addons.svg
@@ -0,0 +1 @@
+<svg width="295" height="199" viewBox="0 0 295 199" xmlns="http://www.w3.org/2000/svg"><title>addons</title><defs><linearGradient x1="-3335.765%" y1="-2236.632%" x2="5558.543%" y2="3780.103%" id="a"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-251.09%" y1="-799.657%" x2="413.095%" y2="1054.368%" id="b"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-573.525%" y1="-521.071%" x2="763.527%" y2="703.894%" id="c"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-2190.515%" y1="-1349.885%" x2="1528.924%" y2="974.764%" id="d"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1533.42%" y1="-541.311%" x2="2119.6%" y2="822.483%" id="e"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="1
00%"/></linearGradient><linearGradient x1="-16561.05%" y1="-16565.77%" x2="3895.86%" y2="3891.14%" id="f"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-204.8%" y1="-96.752%" x2="205.158%" y2="122.743%" id="g"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-112.715%" y1="-148.497%" x2="122.964%" y2="186.313%" id="h"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-817.408%" y1="-862.654%" x2="1335.951%" y2="1471.194%" id="i"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-923.374%" y1="-755.994%" x2="781.368%" y2="664.624%" id="j"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-57.385%" y1="-74.839%" x2="205.558%" y2="247.317%" i
d="k"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-136.437%" y1="-251.542%" x2="257.723%" y2="370.248%" id="l"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-3134.668%" y1="-1436.328%" x2="4644.893%" y2="2194.132%" id="m"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-3763.993%" y1="-1729.31%" x2="4015.564%" y2="1901.152%" id="n"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-967.977%" y1="-2316.493%" x2="1244.002%" y2="2869.881%" id="o"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-828.528%" y1="-1974.736%" x2="1398.399%" y2="3211.636%" id="p"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100
%"/></linearGradient><linearGradient x1="-341.455%" y1="-545.157%" x2="204.062%" y2="280.185%" id="q"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-6989.704%" y1="-10987.987%" x2="1723.404%" y2="2626.238%" id="r"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-346.468%" y1="-491.716%" x2="205.755%" y2="249.195%" id="s"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-163.142%" y1="-212.577%" x2="367.782%" y2="441.559%" id="t"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-431.069%" y1="-1508.892%" x2="196.676%" y2="489.527%" id="u"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-46.826%" y1="-91.711%" x2="115.212%" y2="164.256%
" id="v"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-469.407%" y1="-1536.217%" x2="369.344%" y2="1016.816%" id="w"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1395.389%" y1="-1859.067%" x2="1629.996%" y2="2107.556%" id="x"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2132.529%" y1="-2452.139%" x2="1054.189%" y2="1199.521%" id="y"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1425.341%" y1="-2206.746%" x2="1446.3%" y2="2189.629%" id="z"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1606.851%" y1="-1906.042%" x2="1515.309%" y2="1780.906%" id="A"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offse
t="100%"/></linearGradient><linearGradient x1="-2952.119%" y1="-1785.48%" x2="1577.955%" y2="986.112%" id="B"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1774.73%" y1="-1132.379%" x2="2586.424%" y2="1691.85%" id="C"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2922.831%" y1="-2221.905%" x2="1969.085%" y2="1525.629%" id="D"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2790%" y1="-1744.265%" x2="1698.406%" y2="1091.887%" id="E"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2160.459%" y1="-2153.729%" x2="1208.199%" y2="1206.393%" id="F"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2197.557%" y1="-2601.613%" x2="936.46
2%" y2="1097.31%" id="G"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2154.892%" y1="-3309.827%" x2="719.541%" y2="1068.777%" id="H"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-548.887%" y1="-964.209%" x2="654.188%" y2="1081.481%" id="I"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-318.202%" y1="-291.169%" x2="636.625%" y2="583.64%" id="J"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-455.827%" y1="-310.105%" x2="637.3%" y2="482.798%" id="K"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-5771.947%" y1="-7842.936%" x2="4994.847%" y2="6769.143%" id="L"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF"
offset="100%"/></linearGradient><linearGradient x1="-4086.052%" y1="-5400.884%" x2="4096.712%" y2="5365.911%" id="M"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1126.574%" y1="-1260.202%" x2="1146.414%" y2="1265.342%" id="N"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1150.53%" y1="-1333.596%" x2="1122.46%" y2="1289.085%" id="O"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-3947.183%" y1="-5480.943%" x2="3106.924%" y2="4260.443%" id="P"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-3712.853%" y1="-2757.137%" x2="2679.931%" y2="2000.284%" id="Q"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1265.89%" y1="-1395.587%"
x2="1007.1%" y2="1099.159%" id="R"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-2822.135%" y1="-2883.724%" x2="1935.286%" y2="1986.969%" id="S"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1548.018%" y1="-2218.877%" x2="1374.022%" y2="1940.124%" id="T"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1369.976%" y1="-1928.433%" x2="1334.398%" y2="1827.217%" id="U"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-2000.906%" y1="-2495.611%" x2="1322.352%" y2="1633.822%" id="V"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1470.604%" y1="-2072.202%" x2="1136.662%" y2="1558.26%" id="W"><stop stop-color="#00C8D7" offset="0%"/><st
op stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1194.36%" y1="-1336.72%" x2="901.341%" y2="996.106%" id="X"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-3044.038%" y1="-2935.975%" x2="2075.73%" y2="2014.652%" id="Y"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1070.957%" y1="-1207.499%" x2="1021.673%" y2="1139.289%" id="Z"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-668.331%" y1="-735.951%" x2="792.876%" y2="862.245%" id="aa"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-757.712%" y1="-833.503%" x2="703.496%" y2="764.693%" id="ab"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-27.011%" y1
="-65.863%" x2="141.75%" y2="151.803%" id="ac"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1321.337%" y1="-997.486%" x2="1168.46%" y2="905.137%" id="ad"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-1178.308%" y1="-888.422%" x2="1311.49%" y2="1014.201%" id="ae"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-546.976%" y1="-767.016%" x2="189.173%" y2="248.435%" id="af"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-93.493%" y1="-91.832%" x2="384.41%" y2="447.193%" id="ag"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-258.202%" y1="-134.734%" x2="952.458%" y2="591.721%" id="ah"><stop stop-color="#00C8D7" offset="0%"/><stop
stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-764.248%" y1="-327.902%" x2="2650.413%" y2="1243.88%" id="ai"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-341.63%" y1="-267.69%" x2="726.152%" y2="596.706%" id="aj"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-517.979%" y1="-536.225%" x2="166.434%" y2="167.425%" id="ak"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-792.149%" y1="-462.294%" x2="98.549%" y2="87.052%" id="al"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-964.554%" y1="-879.35%" x2="1659.876%" y2="1524.226%" id="am"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-797.538%" y1="-665.
814%" x2="581.403%" y2="509.871%" id="an"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1165.123%" y1="-1561.869%" x2="356.021%" y2="461.04%" id="ao"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-505.775%" y1="-623.411%" x2="1092.421%" y2="1325.92%" id="ap"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-365.189%" y1="-194.484%" x2="727.939%" y2="447.534%" id="aq"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-2359.875%" y1="-1563.43%" x2="1606.616%" y2="1099.129%" id="ar"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-31-68h352v303H-31z"/><g fill-rule="nonzero"><g fill="#D7D7DB"><path d="M23
8.3 15.6c-5.5 0-8.3-1.5-11-3-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3s-8.3-1.5-11-3c-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1 4.9 0 7.4-1.3 9.9-2.7 2.7-1.5 5.5-3 11-3s8.3 1.5 11 3c2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3s8.3 1.5 11 3c2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3 .6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1-4.9 0-7.4 1.3-9.9 2.7-2.7 1.5-5.5 3-11 3zM196.2 7.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 1.2 0 2.2-.1 3.2-.3.3-.1.6.2.6.5.1.3-.2.6-.5.6-1 .3-2.1.4-3.3.4zm7.6-1.6c-.2 0-.4-.1-.5-.3-.1-.3 0-.6.3-.7.3-.2.7-.3 1-.5.3-.1.6 0 .7.2.1.3 0 .6-.2.7-.3.2-.7.3-1 .5-.2.1-.2.1-.3.1zm-16.3-.1c-.1 0-.2 0-.2-.1-.8-.4-1.5-.7-2.2-1.1-2.6-1.4-5.1-2.8-10.2-2.8-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 5.4 0 8.1 1.5 10.7 2.9.7.4 1.4.7 2.1 1.1.3.1.4.5.3.7-.1.4-.3.5-.5.5zm26.6-3.8c-.3 0-.5-.2-.6-.5 0-.3.2-.6.5-.6.8-.1 1.7-.1 2.7-.1.3 0 .6.2.6.6 0 .3-.2.6-.6.6-.9-.2-1.7-.1-2.6 0 .1 0 0 0 0 0zM238.5 23.1c-.3
0-.6-.2-.6-.6 0-.3.2-.6.6-.6 1.2 0 2.2-.1 3.2-.3.3-.1.6.2.6.5.1.3-.2.6-.5.6-1 .3-2.1.4-3.3.4zm7.6-1.5c-.2 0-.4-.1-.5-.3-.1-.3 0-.6.3-.7.3-.2.7-.3 1-.5.3-.1.6 0 .7.2.1.3 0 .6-.2.7-.3.2-.7.3-1 .5-.2 0-.3.1-.3.1zm-16.3-.2c-.1 0-.2 0-.2-.1-.8-.4-1.5-.7-2.2-1.1-2.6-1.4-5.1-2.8-10.2-2.8-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 5.4 0 8.1 1.5 10.7 2.9.7.4 1.4.7 2.1 1.1.3.1.4.5.3.7-.1.4-.3.5-.5.5zm26.6-3.8c-.3 0-.5-.2-.6-.5 0-.3.2-.6.5-.6.8-.1 1.7-.1 2.6-.1.3 0 .6.2.6.6 0 .3-.2.6-.6.6-.8-.1-1.6-.1-2.5 0z"/></g><path d="M6.2 133.5c-2.8 0-5.1-2.2-5.1-4.8V10.2c0-3 2.4-5.4 5.4-5.4h127.2c3 0 5.4 2.4 5.4 5.4v118.5c0 2.6-2.3 4.8-5 4.8H6.2z" fill="#FFF"/><path d="M133.7 6c2.3 0 4.2 1.9 4.2 4.2v118.5c0 2-1.8 3.7-3.9 3.7H6.2c-2.2 0-3.9-1.7-3.9-3.7V10.2C2.3 7.9 4.2 6 6.5 6h127.2zm0-2.2H6.6C3 3.8.1 6.7.1 10.3v118.4c0 3.3 2.8 5.9 6.2 5.9H134c3.4 0 6.2-2.7 6.2-5.9V10.2c0-3.5-2.9-6.4-6.5-6.4z" fill="#D7D7DB"/><path d="M132.6 27.1v98.2c0 1-.1 1.2-.1 1.2s-.2.1-1.2.1H9.1c-1 0-1.2-.1-1.2-.1s-.1-.2-.1-1.2V27.1h124.8zm1.
1-1.1H6.6v99.3c0 2 .4 2.5 2.5 2.5h122.2c2 0 2.5-.4 2.5-2.5V26h-.1z" fill="#D7D7DB"/><g fill="#D7D7DB"><circle cx="3.4" cy="2.9" r="2.9" transform="translate(10 13)"/><circle cx="3.7" cy="2.9" r="2.9" transform="translate(19 13)"/><path d="M102.1 19.2H38.2c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1h63.9c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1z"/><g><circle cx="3.6" cy="2.9" r="2.9" transform="translate(114 13)"/><circle cx="2.9" cy="2.9" r="2.9" transform="translate(124 13)"/></g></g><ellipse fill="#EDEDF0" cx="177.8" cy="191.1" rx="78.4" ry="7.4"/><g fill="#D7D7DB"><path d="M241.5 164.9c-5.5 0-8.3-1.5-11-3-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3s-8.3-1.5-11-3c-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3s-8.3-1.5-11-3c-2.6-1.4-5-2.7-9.9-2.7s-7.4 1.3-9.9 2.7c-2.7 1.5-5.5 3-11 3s-8.3-1.5-11-3c-2.6-1.4-5-2.7-9.9-2.7-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1 5.5 0 8.3 1.5 11 3 2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3s8.3 1.5 11
3c2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3s8.3 1.5 11 3c2.6 1.4 5 2.7 9.9 2.7s7.4-1.3 9.9-2.7c2.7-1.5 5.5-3 11-3s8.3 1.5 11 3c2.6 1.4 5 2.7 9.9 2.7.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1zM200.5 155.8c-.8 0-1.5 0-2.3-.1-.3 0-.5-.3-.5-.6s.3-.5.6-.5c.7.1 1.4.1 2.2.1h1.1c.3 0 .6.2.6.5s-.2.6-.5.6h-1.2zm-41.4 0c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 1.2 0 2.2-.1 3.2-.3.3-.1.6.2.6.5.1.3-.2.6-.5.6-1 .3-2.1.4-3.3.4zm46.9-.7c-.2 0-.5-.2-.5-.4-.1-.3.1-.6.4-.7.4-.1.7-.2 1-.3.3-.1.6.1.7.3.1.3-.1.6-.3.7-.4.1-.7.2-1.1.3-.1.1-.2.1-.2.1zm-39.3-.9c-.2 0-.4-.1-.5-.3-.1-.3 0-.6.3-.7.3-.2.7-.3 1-.5.3-.1.6 0 .7.2.1.3 0 .6-.2.7-.3.2-.7.3-1 .5-.2.1-.3.1-.3.1zm-16.3-.1c-.1 0-.2 0-.2-.1-.8-.4-1.5-.7-2.2-1.1-2.6-1.4-5.1-2.8-10.2-2.8-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6 5.4 0 8.1 1.5 10.7 2.9.7.4 1.4.7 2.1 1.1.3.1.4.5.3.7-.1.3-.3.5-.5.5zm39.5-1.2c-.1 0-.2 0-.3-.1-2.4-1.3-4.9-2.7-10-2.7-.9 0-1.7 0-2.5.1-.3 0-.6-.2-.6-.5s.2-.6.5-.6c.8-.1 1.7-.1 2.7-.1 5.4 0 8.1 1.5 10.5 2.8.3.1.4.5.2.8-.1.1-.3.3-.5.3zm26.3-2
.2c-.2 0-.5-.2-.5-.4-.1-.3.1-.6.4-.7 1.6-.4 3.3-.6 5.3-.6.3 0 .6.2.6.6 0 .3-.2.6-.6.6-1.9 0-3.5.2-5 .6-.1-.1-.2-.1-.2-.1z"/></g><g fill="#D7D7DB"><path d="M76.9 101c-.8 0-2.2-.1-3.6-.7-1.8-.8-2.7-2.2-2.7-4.1 0-1.6.9-2.6 1.8-3.5 1-1 1.9-2 1.9-3.8 0-1.5-2.1-3.7-5.8-3.7-3.8 0-5.5 2.2-5.5 3.7 0 1.8.9 2.8 1.9 3.8.9.9 1.9 1.9 1.9 3.5 0 3.5-3.2 4.8-6.2 4.8H47.8c-2.4 0-4.3-2-4.3-4.4V84.9c0-.1-.2-3 1.5-4.8.8-.9 1.9-1.3 3.3-1.3 1.6 0 2.5 1 3.4 1.9.9 1 1.8 2 3.6 2 1.6 0 3.3-1.9 3.3-5.4 0-3.6-1.7-5.2-3.3-5.2-1.8 0-2.7 1-3.6 2-.9 1-1.7 2-3.4 2-1.4 0-2.5-.4-3.3-1.3-1.7-1.8-1.5-4.9-1.5-5v-7.4c0-.9.3-1.8.8-2.6.8-1.1 2.1-1.8 3.5-1.8h9.3s2.7-.5 2.7-2.3c0-.7-.4-1.2-1.1-1.9-1-1-2.2-2.2-2.2-4.9 0-2.3 1.1-6.2 8.2-6.2 7.6 0 8.5 4.3 8.5 6.2 0 2.7-1.3 4-2.4 5-.8.7-1.2 1.2-1.2 1.9 0 1.8 2.8 2.3 2.8 2.3h9.9c2.4 0 4.3 2 4.3 4.4v5.6s.4 3 2.1 3c.7 0 1.1-.4 1.7-1.1.8-1 2-2.4 4.7-2.4 2.4 0 6.5 1 6.5 8.1 0 7.8-4.9 8.4-6.5 8.4-2.8 0-3.9-1.4-4.7-2.5-.6-.8-1-1.2-1.7-1.2-1.8 0-2.1 3-2.2 3v13.5c0 2.4-1.9 4.4-4.3 4.4h-5c
0-.3-.1-.3-.3-.3z"/></g></g><path d="M258.9 143.4c-.2.6-.7 1.1-1.2 1.5 0 1-.2 1.9-.6 2.8.9-.3 1.8-.8 2.6-1.6.7-.8 1.1-1.6 1.5-2.3.8-2 .4-4.2-1.1-5.5-.4-.4-1-.6-1.5-.8-.7-.2-1.5-.2-2.3 0 2.2 1.4 3.6 3.4 2.6 5.9zM129.7 89.8l-.2-.1c-.2 0-.3-.1-.5-.1h-.1-.1-.1H128.1c-.1 0-.1 0-.1.1 0 0-.1 0-.2.1-.1 0-.2.1-.3.2-.3.2-.7.6-1.1 1.1l-.7.7c.1.1.2.3.1.5-.2 1.1-.5 1.9-.8 2.7.2.6.4 1.1.6 1.6.4.8.9 1.6 1.5 2.4.6.8 1.3 1.5 2.2 2.2.5.4.9.7 1.3.9h.1c.4.3.9.5 1.5.7 1 .4 2.1.7 3.2.8.3 0 .7.1 1.1.1h2.1c.6-.1 1.1-.3 1.5-.4.6-.2 1-.4 1.3-.6.3-.2.5-.3.8-.5.5-3.3.9-7 1.1-11.2-1.3-.6-2.6-1.3-3.7-2.1-1 1-2 1.6-2.9 1.6-.3 0-.5 0-.8-.1l-3-1.2c-1.2.6-2.3.9-3.2.6z"/><path d="M141.1 57.4c0 .7 0 1.4.1 2.1-.3.3-.7.6-1 .9.3-.3.6-.6 1-.9-.1-.7-.1-1.4-.1-2.1zM180.3 24.8c-2-.4-4-.6-6-.6-.7 0-1.4 0-2.1.1.7 0 1.4-.1 2.1-.1 2 .1 4 .2 6 .6zM122.9 136.4c.6-.6 1.2-1.3 1.8-2-.6.6-1.2 1.3-1.8 2-1 1-2 2-3 2.9 1-.9 2-1.9 3-2.9zM134.2 123.6c.3-.4.7-.7 1.1-1.1l-1.1 1.1c-1.3 1.4-2.6 2.8-3.9 4.3-.6.7-1.2 1.5-1.9 2.2.6-.7 1.2-1.5 1.9
-2.2 1.2-1.4 2.5-2.9 3.9-4.3zM129.1 119.1l1.8.9c.6.3 1.3.5 1.9.7-.7-.2-1.3-.5-1.9-.7l-1.8-.9zM241.7 82.7v-.3M244.7 142.3h-.4.4zM145.9 40.2c.6-.9 1.2-1.8 1.8-2.6-.7.8-1.3 1.7-1.8 2.6zM211 186.6h.2-.5.3zM137.4 186.6h.3-.5.2zM177.3 142.7c-.3-.8-.6-1.5-.9-2.2.3.7.6 1.4.9 2.2zM109.4 153.9c1 .2 2.1.3 3.2.3h1.4-1.4c-1.1 0-2.2-.1-3.2-.3zM144.3 43c.5-1 1-1.9 1.5-2.8-.5.9-1 1.9-1.5 2.8z" fill="#FFF" fill-rule="nonzero"/><path d="M142 102c-.3.2-.5.3-.8.5-.3.2-.8.4-1.3.6-.4.1-.9.3-1.5.4h-1-1.1c-.4 0-.8 0-1.1-.1-1.1-.1-2.2-.4-3.2-.8-.6-.2-1-.5-1.5-.7h-.1c-.4-.2-.8-.5-1.3-.9-.8-.7-1.6-1.5-2.2-2.2-.6-.8-1.1-1.6-1.5-2.4-.2-.5-.5-1-.6-1.6-.5.9-1 1.6-1.8 2.1h-.1c.1.2.1.3.2.5.5 1 1 1.9 1.7 2.8.7.9 1.6 1.8 2.6 2.6.6.5 1.1.8 1.6 1.1.5.3 1.1.6 1.8.9 1.2.5 2.5.9 3.8 1 .4 0 .8.1 1.3.1h2.5c.7-.2 1.3-.3 1.8-.5.7-.3 1.2-.5 1.6-.7.6-.3 1.2-.8 1.8-1.2.7-4 1.2-8.6 1.4-13.9-1.6-.6-3.1-1.3-4.4-2.3-.4.6-.8 1.2-1.3 1.6 1.1.8 2.4 1.6 3.7 2.1-.1 4-.4 7.7-1 11z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M140.8 174.9
c.5-.5 1-1 1.4-1.5-.4.5-.9 1-1.4 1.5zM198.7 183.3c1.1.6 2.1 1.1 3.1 1.5.5.2 1 .4 1.5.5-.5-.2-1-.3-1.5-.5-1-.4-2-.9-3.1-1.5zM203.8 136.1c.6.1 1.2.2 1.9.4.3.1.6.2.9.2-.3-.1-.6-.2-.9-.2-.7-.2-1.3-.3-1.9-.4zM182.4 161.8c.2.7.5 1.4.7 2.1.5 1.4 1.1 2.8 1.8 4.1-.7-1.3-1.2-2.7-1.8-4.1-.2-.7-.4-1.4-.7-2.1zM180.3 153v.1-.1zM255 146.2c-.1.6-.4 1.1-.7 1.6.1 0 .1.1.2.1.8.2 1.7.2 2.6-.1.4-.9.6-1.8.6-2.8-.7.5-1.6.9-2.7 1.2z" fill="#FFF" fill-rule="nonzero"/><path d="M249.9 67.3c-.6.7-1.1 1.3-1.6 1.9-.5.7-1.1 1.4-1.5 2.2-.5.8-.9 1.6-1.3 2.3-.3.7-.7 1.5-1 2.4-.5 1.6-.7 3.4-.7 5.4V83.2l.1 1.2v.4c0 .4.1.7.1 1 .1 2 .1 4.1 0 6.1-.3 4.7-1.3 9.1-2.9 13.1-1 2.4-2.1 4.6-3.5 6.6-1.2 1.8-2.7 3.4-4.4 4.9-.3.4-.8.8-1.2 1.2-.3.2-.5.4-.8.5-1.8 1.3-3.7 2.5-5.8 3.4-1 .4-1.9.7-2.8 1 2.1 1.6 4.8 4.3 7.8 8.7 4.8 7.1 10.4 8.7 14.7 9 .4-.9.8-1.7 1.2-2.2-4.1-.1-9.3-1.3-13.8-8-1.9-2.8-3.7-5-5.4-6.6 2.5-1.1 4.8-2.6 6.9-4.3 2.2-1.8 4.2-3.9 5.8-6.2 1.5-2.1 2.8-4.5 3.8-7 1.7-4.2 2.7-8.8 3.1-13.8.1-2.1.1-4.2 0-6.3 0-.4 0-.7-.1
-1.1v-.4l-.1-1.1V82.4v-.5-.2c0-1.7.2-3.3.6-4.7.2-.6.5-1.3.9-2.2.3-.7.7-1.4 1.1-2 .4-.7.9-1.3 1.4-2 .4-.5.8-1 1.3-1.6-.8-.6-1.5-1.2-1.9-1.9zM138.8 58.5v-1.1c0-19.5 15.9-35.4 35.4-35.4s35.4 15.9 35.4 35.4v1.1c3.8 3.5 5.9 8.3 5.9 13.5 0 7.9-4.9 14.7-12.2 17.3 0 .8.1 1.5.1 2.3 0 0 .1.1.1.2.2.3.3.6.5.9l.3.6v.1c.1.3.3.5.4.8v.1c.1.2.2.3.2.5 0 .1.1.1.1.2l.1.2v.1l.1.2.1.2.3.6c.1.1.1.2.2.4.1.1.2.3.2.4.4.6.7 1.1 1 1.5.4.5.9 1 1.3 1.4.9.8 2 1.4 3.2 1.7h.1c.5.2 1.1.2 1.8.2h.2c.4 0 .8-.1 1.3-.1h.1c1.2-.2 2.2-.7 3.1-1.3.7-.5 1.2-1 1.6-1.5.5-.6 1-1.3 1.4-2.1 1-1.9 1.7-4.1 2-6.4.2-1.5.4-2.7.4-3.8v-.1-.5-1-2.3c0-.4.1-.9.1-1.3.4-4 1.7-8 3.5-11.5 1.6-3 3.6-5.7 6.1-8.2 1.8-1.8 3.8-3.3 6.3-4.9 1.9-1.3 3.6-2.1 5.1-2.9l.2-.1-.3-1-3.2 1.1c-.3.1-.7.2-1.1.2h-.2l-1.5.9c-2.6 1.6-4.7 3.3-6.6 5.2-2.7 2.6-4.9 5.6-6.5 8.7-2 3.7-3.3 8-3.7 12.3 0 .4-.1.9-.1 1.3v.4l-.1.7v2.9c-.1 1-.2 2.2-.4 3.6-.3 2.1-1 4.1-1.8 5.7-.3.6-.7 1.2-1.1 1.7-.3.4-.7.7-1.2 1.1-.7.5-1.4.8-2.2 1-.4.1-.8.1-1 .1h-.1c-.3 0-.9-.1-1.2-.1h-.1c-.8-.2-
1.6-.6-2.3-1.2-.4-.3-.7-.7-1-1.1-.2-.3-.5-.7-.8-1.2-.1-.1-.1-.3-.2-.4 0-.1-.1-.1-.1-.2-.1-.2-.2-.5-.3-.7l-.1-.1-.1-.2s0-.1-.1-.1l-.1-.2v-.1c-.1-.2-.2-.3-.3-.5v-.1c-.1-.2-.3-.5-.4-.7 0-.1-.1-.1-.1-.2-.1-.2-.2-.4-.3-.5-.1-.2-.2-.4-.4-.7v-.1c7.3-3.3 12.1-10.5 12.1-18.8 0-5.4-2.1-10.6-5.9-14.4V58c0-20.8-16.9-37.6-37.6-37.6-20.7 0-37.6 16.9-37.6 37.6v.2c-3.2 3.2-5.1 7.3-5.7 11.8l1.9.8c.5-5.1 2.5-9.2 5.8-12.3z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M238.7 153.9h-1.6.4c.5.1.9.1 1.2 0zM223.8 148.2c-.4-.3-.9-.7-1.3-1-.7-.5-1.3-1.1-2-1.6.6.5 1.3 1.1 2 1.6.4.3.9.6 1.3 1z" fill="#FFF" fill-rule="nonzero"/><path d="M251.4 150.6c-.1.1-.2.2-.4.3-.9.7-1.9 1.4-3.2 2.2-1.3.8-3 1.7-5.2 2.3-1.1.3-2.3.6-3.7.7-.4 0-.9.1-1.4.1-.9 0-1.9-.1-2.8-.2-3.2-.5-6-1.9-7.8-3-2.2-1.3-4.1-2.8-5.8-4.1-.8-.6-1.5-1.3-2.3-1.9-.7-.6-1.4-1.1-2.1-1.7-.2-.1-.5-.3-.7-.5-.4-.3-.7-.6-1-.9-1-.8-2-1.5-2.9-2.1-.6-.4-1.2-.7-1.9-1.2-.7-.4-1.3-.7-1.9-.9-1.1-.5-2.1-.9-3.3-1.2-.9-.2-1.9-.4-2.8-.5v7c.1 1.4.1 2.8.1 4.2v1.5c.4 16.7
4.3 19.4 9.8 23.1 6.3 4.2 8.2 5.5 7.7 9-.1 3.1-2.7 5.7-5.8 5.7h-.1c-.5.1-1.5.2-3 .2-.5 0-1.1 0-1.6-.1-1.8-.1-3.6-.4-5.3-.9-1.1-.3-2.2-.6-3.2-1.1-1.3-.5-2.4-1-3.4-1.6-1.2-.7-2.3-1.4-3.4-2.2-1.1-.9-2.2-1.8-3.3-2.8-1-1-2-2.1-3-3.4-1-1.2-1.9-2.5-2.7-3.8-1.6-2.6-3-5.5-4.1-8.4-.5-1.4-1-2.9-1.4-4.4-.2-.6-.3-1.2-.5-1.8v-.2l-.1-.4c-.1-.6-.3-1.2-.4-1.9l-.4-2v-.2V153.2l-.1-.4-.2-.8c-.3-1-.5-2.1-.8-3.2-.5-2-1.1-3.8-1.7-5.2-.4-.9-.6-1.5-.9-2.1-.1-.1-.1-.2-.2-.3 0 .1-.1.2-.1.3-.3.6-.5 1.2-.9 2.1-.6 1.5-1.2 3.2-1.7 5.3-.3 1-.6 2.1-.8 3.2l-.2.8-.1.4v.5l-.4 2c-.1.7-.3 1.3-.4 1.9l-.1.4-.1.5c-.1.6-.3 1.2-.5 1.7-.4 1.5-.9 3-1.4 4.4-1.1 3-2.5 5.8-4.1 8.4-.8 1.3-1.7 2.6-2.7 3.8-1.1 1.3-2 2.4-3 3.4s-2.2 2-3.3 2.8c-1.1.8-2.2 1.5-3.4 2.2-1 .6-2.1 1.1-3.4 1.6-1 .4-2.1.8-3.2 1.1-1.7.5-3.5.8-5.3.9h-1.6c-1.5 0-2.5-.1-3-.2h-.1c-3.2 0-5.8-2.7-5.8-5.9 0-3 2.3-5.6 5.3-5.9l.2-.1c.4-.2 1-.4 1.7-.8.8-.4 1.6-1 2.4-1.6.4-.4.9-.7 1.3-1.1.4-.3.8-.8 1.3-1.3.4-.5.8-1 1.2-1.6.4-.6.7-1.2 1.1-1.8.3-.6.6-1.3.9-2.1.3-.7.5-1.5.8-
2.3.2-.7.4-1.6.6-2.6.2-.8.3-1.7.4-2.7.1-.9.2-1.9.3-3 0-.4 0-.8.1-1.2v-.3V151.3v-.1-1.9c0-1.5 0-2.9.1-4.3l.3-3.9c-.9.5-1.8 1.2-3 2-.8.5-1.6 1.1-2.4 1.7-2.4 1.6-5 3.5-7.9 5.2-2.2 1.4-4.3 2.4-6.2 3.3-2.4 1.1-4.7 1.9-7 2.5-1.1.3-2.3.5-3.7.6-1 .1-1.9.1-2.8.1h-.9c-1.8-.1-3.5-.3-5.3-.8.4.8.7 1.6.9 2.4 1.5.3 3 .5 4.6.6h1c.9 0 1.9 0 3-.2h.1c1.5-.2 2.8-.4 4-.7 2.4-.6 4.9-1.4 7.4-2.6 2-.9 4.1-2 6.4-3.4 2.9-1.8 5.6-3.6 8-5.3.5-.4 1-.7 1.5-1.1-.1 1.3-.1 2.5-.1 3.9v5.2c0 .4 0 .8-.1 1.2v.1c-.1 1-.2 2-.3 2.8-.1 1-.3 1.8-.4 2.5-.2.9-.4 1.7-.6 2.4-.2.8-.5 1.5-.7 2.2-.3.7-.6 1.3-.9 1.9l-.9 1.5c-.4.5-.7 1-1 1.4-.4.5-.8.9-1.1 1.2-.4.3-.8.7-1.2 1-.8.6-1.6 1.1-2.1 1.4-.6.3-1.1.6-1.5.7-3.9.6-6.9 4-6.9 8 0 4.4 3.5 8 7.9 8.1.5.1 1.7.2 3.3.2.6 0 1.1 0 1.7-.1 2-.1 3.9-.4 5.7-.9 1.2-.3 2.3-.7 3.4-1.1 1.3-.5 2.5-1.1 3.6-1.7 1.3-.7 2.5-1.5 3.6-2.3 1.2-.9 2.4-1.9 3.5-3 1.1-1 2.1-2.2 3.2-3.6 1-1.3 2-2.6 2.8-4 1.7-2.8 3.2-5.7 4.3-8.8.5-1.5 1-3 1.5-4.6.2-.6.3-1.2.5-1.8l.1-.4v-.1l.1-.4c.1-.6.3-1.3.4-2l.4-2v-.2-.2l.1-.
5.2-.8c.2-1 .5-2.1.8-3.1l.6-2.1c.2.7.4 1.3.6 2.1.3 1 .5 2.1.8 3.1l.2.8.1.4v.4l.4 2c.1.7.3 1.3.4 2l.1.4v.1l.1.4c.1.6.3 1.2.5 1.9.4 1.6.9 3.1 1.5 4.6 1.1 3.1 2.6 6 4.3 8.8.9 1.4 1.8 2.8 2.8 4 1.1 1.4 2.2 2.6 3.2 3.6 1.1 1.1 2.3 2.1 3.5 3 1.2.9 2.4 1.6 3.7 2.4 1.1.6 2.3 1.2 3.6 1.7 1.1.4 2.3.8 3.4 1.1 1.8.5 3.8.8 5.7.9.6 0 1.2.1 1.7.1 1.6 0 2.7-.1 3.3-.2 4.2-.1 7.7-3.5 7.9-7.7.6-4.8-2.3-6.8-8.7-11.1-5.1-3.4-8.5-5.7-8.9-21.2v-1.5c0-1.4 0-2.9-.1-4.3v-3.9-.4c1.1.3 2 .6 2.9 1h.1c.5.2 1 .5 1.6.8.7.4 1.3.7 1.8 1.1 1.2.8 2.5 1.7 4 3 .8.6 1.6 1.3 2.4 2 .7.6 1.5 1.3 2.3 1.9 1.8 1.4 3.7 2.9 6.1 4.3 2 1.2 5 2.7 8.6 3.3 1.1.2 2.1.3 3.2.3.5 0 1.1 0 1.6-.1 1.5-.1 2.8-.4 4.1-.8 2.4-.7 4.3-1.7 5.7-2.5 1.4-.9 2.5-1.7 3.4-2.4l.1-.1c.5-.4.9-.7 1.2-1-.1 0-.3 0-.4-.1-.2-.2-1-.5-1.6-1z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M258.3 51.2c-.2-.3-.5-.5-.8-.7l.3.9c.1-.1.3-.1.5-.2z" fill="#FFF" fill-rule="nonzero"/><path d="M100.3 137.6c.1-.1.1-.1.2-.1.3-.1.6.1.7.4 0 .1.1.3.1.4.7.2 1.4.4 2.3.7 2.3.8 5.5 1.
8 8.4 1.8 1 0 1.9-.1 2.6-.4 1-.6 2.1-1.4 3.2-2.3 1.1-.9 2.2-2 3.5-3.4 1.8-1.9 3.5-3.9 5.4-6.1.6-.8 1.3-1.5 1.9-2.3 1.3-1.5 2.4-2.7 3.4-3.8-.7-.2-1.3-.5-1.9-.7-2.7-1.1-5.1-2.6-7.3-4.4-1.1-.9-2.1-1.8-2.9-2.7-.8-.8-1.6-1.8-2.4-2.9-1.4-1.9-2.4-3.9-3.2-5.9-.3-.7-.5-1.4-.7-2-.5-.4-.9-1-1-1.7v-.3-.1-.2-.8-1.2c0-.2 0-.4.1-.6-.1-.9-.2-1.8-.2-2.7v-.8V94.7v-.2c-1-1.1-1.4-2.3-1.6-3.3-.1.4-.2.8-.2 1.2l-.1.8c0 .4-.1.9-.1 1.3v1.7c0 1.6.2 3.1.4 4.6.3 2 .9 3.9 1.6 5.8.9 2.2 2 4.3 3.5 6.4.9 1.2 1.7 2.2 2.6 3.2.9 1 2 2 3.1 2.9 2.1 1.7 4.3 3.1 6.8 4.2-.4.4-.8.9-1.2 1.4-.7.8-1.3 1.5-2 2.3-1.8 2.1-3.5 4.2-5.3 6-1.2 1.3-2.3 2.3-3.3 3.2-.9.8-1.8 1.4-2.6 1.9-.5.1-1.1.2-1.8.2-2.5 0-5.4-.9-7.6-1.7-1.5-.5-2.6-.9-3.7-1-.4-.1-.7-.1-1.1-.1-.3 0-.6 0-.8.1l.1.6c.3.5.8.9 1.1 1.4z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M146.2 166.2c-.1.4-.2.7-.4 1.1.2-.3.3-.7.4-1.1z" fill="#FFF" fill-rule="nonzero"/><path d="M37.1 92.1c.1 0 .2-.1.3-.1-.6-.9-1.2-1.8-1.7-2.7-.2.1-.4.2-.6.2.1.2.2.5.2.7.3.8.7 1.6 1.1 2.5.2-.3.4-.5
.7-.6z" fill="url(#a)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M65.2 105.7s2.7-.5 6.3-2.1c.1-.3.1-.5.2-.8-3.1 1.1-6.7 1.7-10.9 1.7h-1.1c-8.8-.2-15.1-4.7-18.7-8.2.2 1 .1 1.8-.1 2.5.7.7 1.5 1.5 2.3 2.1 1.5 1.2 3.1 2.3 4.9 3.2l1.8.9c.6.3 1.3.5 1.9.7.7.2 1.3.4 2 .6l1 .2c.1 0 .2 0 .3.1l-.1.1c3.6.6 6.8.7 9.2.6 0-.1-.1-.2-.1-.2.1-.7.5-1.3 1.1-1.4z" fill="url(#b)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M38.9 124.2c2.9-2.4 6.1-6.1 10-10.6 1.6-1.8 3.4-3.9 5.3-6.1l-1.1 1.1c-1.3 1.4-2.6 2.8-3.9 4.3-.6.7-1.2 1.5-1.9 2.2-.6.7-1.2 1.4-1.8 2.2l-1.8 2.1c-.6.7-1.2 1.4-1.8 2-1 1-2 2-3 2.8z" fill="url(#c)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M65.2 151.2c-.1.4-.2.7-.4 1.1-.3.8-.7 1.5-1 2.3-.4.7-.8 1.4-1.2 2-.4.6-.9 1.2-1.3 1.8-.5.5-.9 1.1-1.4 1.5-.1.1-.1.1-.2.1 2.5-1.8 4.4-4.6 5.5-8.8z" fill="url(#d)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M70.5 73.8c-.1 0-.1 0 0 0-.2 0-.8.1-1.8.1-.7 0-1.5 0-2.3-.1-.2 5.8-.7 10.7-1.5 15 .6
-.7 1-1.3 1.4-1.9 1.9-3.4 3.4-9.4 4.2-13.1z" fill="url(#e)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M171.4 131.5s.1 0 0 0c.1 0 .1 0 0 0 .1 0 .1 0 0 0z" fill="url(#f)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M162.9 131.2c-7.1 3-14.2-.7-19.1-5.2-4.9-4.5-16.4-17.9-16.4-17.9l9.3-.7s.5.1 1.5.6c-.3-.3-.7-.5-1-.8h-1.3c-2.6 0-4.7-.4-4.8-.4-.3-.1-.5-.3-.5-.6.1-.3.3-.5.6-.5 0 0 4 .7 7.7.2.4-.1.7-.1 1.1-.2 1.2-.3 2.4-.7 3.5-1.2 1-.4 1.9-.9 2.9-1.4-.4-1 .4-2.7 2.1-3.9 1.5-1.1 3.1-1.5 4-1 .9-.9 1.6-1.9 2.3-2.9 1-1.5 1.9-3 2.6-4.6.2-.5.5-1 .7-1.6.6-1.4 1-2.8 1.4-4.3-.3.1-.5.1-.8.1-1.2-.3-1.6-2.3-1.1-4.4.6-2.1 2-3.6 3.1-3.3v-.4c.1-2 .1-3.9 0-5.8 0-.5-.1-.9-.1-1.4 0-.4-.1-.8-.1-1.2v-.8-.2-.7c0-1.6.1-3.2.4-4.6.1-.5.2-1 .4-1.4.3-.9.7-1.8 1.1-2.7.4-.9.9-1.7 1.4-2.6l1.5-2.1c-.4 0-.7-.2-.9-.4-.8-.9-.2-2.8 1.4-4.3.4-.4.9-.7 1.3-1l-.6-1.7c-1.8 1.2-3.6 2.7-4.8 4.8-3.6 6.1-4.4 8.7-4.4 13.9v1.3c0 6.1.1 17.4-4.2 23.9-5.6 8.4-14 12.5-25.6 12.5H126c2.9.5 6 .7 9.4.2.6-.1 1.2
.3 1.3.9.1.6-.3 1.2-.9 1.3-1.5.2-3 .4-4.5.4-5.3 0-9.9-1.4-13.2-2.9.7 4 1.1 8.1 1.2 12.3.3 0 .5.2.5.5 0 0 .2 2.3.2 6.2.4 0 .8 0 1.2.1.4 0 .9.1 1.4.2.6.1 1.2.2 1.9.4.3.1.6.2.9.2.6.2 1.2.4 1.9.6.3.1.6.3 1 .4.7.3 1.3.6 2 1s1.4.8 2.1 1.3c.3.2.5.4.8.6.8-.8 2.7-.5 4.4.7 1.8 1.3 2.7 3.2 2 4.1.6.5 1.3 1.1 2 1.6.4.3.8.7 1.3 1 .4.3.9.7 1.3 1l1.8 1.2c0-.1 0-.3.1-.4.4-1.1 2.5-1.3 4.5-.5 2.1.8 3.4 2.4 2.9 3.5-.1.2-.2.4-.4.5.3.1.7.2 1 .2.6.1 1.1.1 1.7.2h2c1.2-.1 2.2-.3 3.2-.6.2-.1.4-.1.6-.2l-.3-.3c-.6-1 .5-2.8 2.4-3.9 1.4-.8 3.1-1.1 4.3-.8l-.6-1.2c-1-.4-1.8-1-2.4-1.6-.7.1-1.4.4-2.1.7z" fill="url(#g)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M134.8 169.1c-3.6 0-10.7-2.3-15.5-4.8-7.7-4.1-13.4-16.9-14.8-26.9-1.7-12.1-5.1-22.4-8.1-25.1-1.3-1.1-2.5-1.7-3.5-1.9-2.6.9-4.7 2.6-6.1 5.1-2 3.5-2.8 10.4-3.7 17.7-1 8.3-2.1 16.9-4.9 21.5-5.7 9.4-11.9 13.8-20.6 14.8-1.1.1-2.1.2-2.9.2-2.8 0-4.2-.6-4.9-1.1.4 1.6 1.8 2.8 3.5 2.8h4.5c1.4-.1 3-.3 4.8-.8.5-.1.9-.3 1.4-.4.5-.2 1-.3 1.5-.5s1-.4 1.5-.7c
.5-.2 1-.5 1.6-.8 1.1-.6 2.1-1.3 3.2-2 .2-.2.5-.4.7-.6-.1 0-.1-.1-.2-.1-.9-.8-.3-2.8 1.3-4.4 1.6-1.6 3.5-2.2 4.4-1.3 0 0 .1.1.1.2.8-1 1.5-2 2.2-3.1.4-.6.8-1.3 1.1-1.9.7-1.3 1.4-2.7 2-4 .3-.7.6-1.4.8-2.1.4-1.1.8-2.2 1.1-3.3h-.7c-1.1-.4-1.4-2.4-.7-4.5.7-1.9 2-3.2 3.1-3.1l.1-.2.1-.4.2-.9c.3-1.1.5-2.2.8-3.2.3-1 .6-2 .9-2.9.3-.9.6-1.8.9-2.6.3-.8.6-1.5.9-2.2.2-.3.3-.6.5-.9.1-.3.3-.6.4-.9.5-.8.9-1.5 1.3-2.2.4.6.8 1.4 1.3 2.2.1.3.3.6.4.9.1.3.3.6.5.9.3.7.6 1.4.9 2.2.6 1.6 1.2 3.4 1.8 5.5.3 1 .6 2.1.8 3.2l.2.9.1.4.1.2V138.3l.4 2c.1.8.3 1.5.5 2.2l.6 2.1.6 2.1c.2.7.5 1.4.7 2.1.5 1.4 1.1 2.8 1.8 4.1.7 1.3 1.4 2.7 2.2 3.9.8 1.3 1.6 2.5 2.5 3.6.9 1.1 1.8 2.2 2.9 3.2.5.5 1 .9 1.5 1.4.5.4 1 .9 1.6 1.2.5.4 1.1.8 1.6 1.1.5.3 1.1.7 1.6 1 1.1.6 2.1 1.1 3.1 1.5.5.2 1 .4 1.5.5.5.2 1 .3 1.4.4 1.9.5 3.5.7 4.8.8h4.6c1.7 0 3.1-1.1 3.5-2.7h-.1c-.4.2-1 .3-1.7.3z" fill="url(#h)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M62.2 64.1c0 1.5-.3 3.3-1.1 5.3-.1.2-.2.5-.3.7 1.6 1.2 3.5 2.1 5.6 2.6 1.9.3
3.7.1 3.9.1-.7-1-1.4-2-2.1-3.1-2.4-1.4-4.5-3.3-6-5.6z" fill="url(#i)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M129.4 88.3c-1.2-.4-2.3-1.1-3.3-1.9-.6-.5-1.1-1.1-1.6-1.7-.2-.3-.5-.6-.7-.9l-.6-.9c-.2-.3-.4-.6-.5-.9-.1-.2-.2-.3-.2-.5-.1-.2-.1-.3-.2-.5-.1-.1-.2-.3-.2-.4-.1-.1-.1-.3-.2-.4-.1-.3-.3-.6-.4-.8-.1-.3-.3-.5-.4-.8-.1-.2-.2-.5-.4-.7-.1-.2-.2-.4-.3-.5-.1-1.1-.2-2.3-.2-3.5-1.2.2-2.3.3-2.8.3.1 2.1.3 4.3.9 5.8.7 1.7 3.6 7.6 11.1 8.3z" fill="url(#j)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M64.6 42.9c-.1-1.1-.2-2.1-.2-3.2C64.4 23.8 77.3 11 93.1 11c15.9 0 28.7 12.9 28.7 28.7v1.5c4.1 3.1 6.7 7.9 6.7 13.4 0 6.4-3.6 12-8.8 14.8-.7 1.2-1.5 2.4-2.3 3.5.6 0 1.7-.1 3-.3.7-.2 1.4-.4 2.1-.7.8-.4 1.6-.8 2.3-1.3 4.4-2.9 7.4-7.9 7.4-13.5 0-2.5-.6-4.9-1.6-7-1-2.1-2.5-4-4.3-5.5 0-.7.1-1.4.1-2.1 0-2.8-.3-5.4-1-8-.1-.2-.1-.4-.2-.6-1.5-5.7-4.5-10.8-8.6-14.8-1-1-2.1-2-3.2-2.8-1.1-.9-2.3-1.7-3.6-2.4-2.5-1.4-5.2-2.6-8-3.3-.2-.1-.4-.1-.6-.2-.6-.2-1.3-.3-1.9-.4-2-.4-4-
.6-6-.6-.7 0-1.4 0-2.1.1-2.1.1-4.2.5-6.2 1-6.9 1.8-12.9 5.7-17.3 11-.3.4-.7.8-1 1.3-.6.9-1.2 1.7-1.8 2.6-.6.9-1.1 1.9-1.5 2.8-.7 1.5-1.3 3-1.8 4.5-.3 1-.6 2.1-.8 3.2-.4 2.2-.7 4.4-.7 6.7 0 .7 0 1.4.1 2.1-.3.3-.7.6-1 .9-.6.6-1.2 1.3-1.7 2-.3.4-.5.7-.7 1.1-.6 1-1.1 2.1-1.5 3.2-.5 1.4-.8 2.9-.9 4.4l1.8.7c.9.4 1.4 1.4 1.6 2.8l3 1.2c-.7-1.8-1.1-3.8-1.1-5.9-.2-4.9 1.8-9.1 4.9-12.2z" fill="url(#k)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M70.7 106.4c-.2.1-.5.2-.7.3.2.1.3.2.4.4.1.3-.1.6-.4.7-.2 0-2.9.7-7.2.7-1 0-2.1 0-3.3-.1l1.9.7c.1 0 .2.1.3.2.2.4 1.1 2.5-4.2 7.8l-1.3 1.3c-5.2 5.2-13 13.1-21.1 13.8-.7.1-1.4.1-2 .1-5.2 0-10.7-1.5-14.3-2.7l.6 5.5c.3.1.5.2.8.3v-.1c.6-1 2.7-1 4.6.2 1.6.9 2.5 2.3 2.5 3.3.4.1.7.2 1.1.2 1 .2 2.1.3 3.2.3H33.4c.5 0 1-.1 1.5-.1h.2c-.1-.1-.2-.2-.2-.3-.4-1.1.9-2.7 2.9-3.5 2.1-.8 4.1-.6 4.5.5.2.5 0 1.1-.4 1.7l3-1.2c1.5-.7 2.9-1.4 4.2-2.2-.2-.1-.3-.2-.4-.4-.7-1 .2-2.8 2-4.1 1.8-1.3 3.8-1.6 4.5-.6.2.3.3.7.2 1.2 1.2-.8 2.3-1.6 3.4-2.3.8-.6 1.6-1.1 2.3-1
.6 1.5-1 2.9-2 4.2-2.7.6-.4 1.2-.7 1.8-1 .8-4.4 1-7.1 1-7.2 0-.3.3-.5.5-.5.1-.3.1-.6.2-.9.4-2.2 1.1-4.8 1.9-7.7z" fill="url(#l)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M153.8 118c.1 0 .2-.1.3-.1.9-.4 1.9-1.2 2.7-1.9-.9.5-1.8 1-2.8 1.4-.1.2-.1.4-.2.6z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M131.2 182.5c.3.3 1.9 1.5 7.2.9 8.3-1 14.3-5.3 19.8-14.3 2.7-4.4 3.7-12.9 4.8-21.1.9-7.4 1.8-14.4 3.8-18.2 1.1-2 2.6-3.5 4.2-4.5-.5.2-.8.3-.8.3l-1.1.7 4-22.6c-.5-.6-1-1.2-1.4-1.8-2.8-4.2.3-9.3 4.1-13.4v-.3h.2c3.5-3.7 7.5-6.4 7.8-6.6l.2-.1 14.6 1.2-.1.6s-.2 2-.2 4.4h.2c.9-1.1 1.6-2.3 2.3-3.5 5.3-2.8 8.8-8.4 8.8-14.8 0-5.5-2.7-10.4-6.7-13.4v-1.5c0-15.9-12.9-28.7-28.7-28.7-15.9 0-28.7 12.9-28.7 28.7 0 1.1.1 2.2.2 3.2-3.1 3.1-5.1 7.3-5.1 12 0 2.1.4 4 1.1 5.9 1 .4 1.6 1.6 1.6 3.2 1.5 2.3 3.5 4.2 6 5.6.6 1.1 1.3 2.1 2.1 3.1.1 0 .3 0 .4.1.3-1.4.4-2.3.5-2.3l.1-.3.3-.1c.5-.2 13.4-5.6 18.2-1.2 2 1.8 2.3 5 .9 9.4-2.5 8-5.5 14.5-10 19 .1 0 .2.1.3.2.5.4.5 1.1.1 1.6-.1.2-3.7 4.2-6.9 5.
8-.7.4-1.4.7-2.1 1-.9 3.3-1.6 6.1-2 8.3-1.8 10-1.9 13.6-2.1 21 0 1.7-.1 3.7-.2 6-.4 12-3.6 18.7-9.9 21.2-.5.2-1.1.4-1.6.6-.6.2-1.1.4-1.6.6-.3.1-.5.2-.7.3-.4.2-.6.3-.5.3h-.2c-1.9.9-3.1 1.9-3.2 3.5zm63.3-112.3c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4V67c0-.8.6-1.4 1.4-1.4.8 0 1.4.6 1.4 1.4v3.2zm-6.2-15c.1-.1 1.6-2.5 4.8-2.5 3.1 0 4.7 2.4 4.8 2.5.3.5.2 1.2-.3 1.5-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5 0-.1-1-1.5-2.9-1.5s-2.9 1.4-2.9 1.5c-.3.5-1 .7-1.5.3-.7-.3-.8-1-.5-1.5zm-29 15c0 .8-.6 1.4-1.4 1.4-.8 0-1.4-.6-1.4-1.4V67c0-.8.6-1.4 1.4-1.4.8 0 1.4.6 1.4 1.4v3.2zm3-7c-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5 0-.1-1-1.5-2.9-1.5s-2.9 1.4-2.9 1.5c-.3.5-1 .7-1.5.3-.5-.3-.7-1-.3-1.5.1-.1 1.6-2.5 4.8-2.5 3.2 0 4.7 2.4 4.8 2.5.2.5 0 1.2-.5 1.5z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M138.7 177.3c6.3-2.5 9.5-9.2 9.9-21.2.1-2.3.1-4.2.2-6 .2-7.3.3-11 2.1-21 .4-2.2 1.1-5 2-8.3-.5.2-.9.4-1.3.5-.8 2.9-1.4 5.6-1.8 7.6-.1.3-.1.6-.2.9h.1c.3 0 .5.3.5.6 0 0-.2 3.5-1.3 8.9-.1.6-.2 1.1-.3 1.7-.2 1.4-.3 2.7-.4 4.1 0
.7-.1 1.4-.1 2.1v7.2c0 .5 0 1.1-.1 1.6-.1 1-.2 2.1-.3 3.1-.1.5-.1 1-.2 1.5s-.2 1-.3 1.4c-.2.9-.4 1.9-.7 2.7-.2.5-.3 1-.5 1.4-1.1 4.1-3 7-5.5 8.8-.4.4-.9.8-1.3 1.1-1 .7-1.9 1.3-2.7 1.8l-1.2.6c.5-.2 1.1-.4 1.6-.6.8-.1 1.3-.3 1.8-.5z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M76.9 50.6c-.8 0-1.4.6-1.4 1.4v3.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4V52c0-.8-.6-1.4-1.4-1.4z" fill="url(#m)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M112.1 50.6c-.8 0-1.4.6-1.4 1.4v3.2c0 .8.6 1.4 1.4 1.4.8 0 1.4-.6 1.4-1.4V52c0-.8-.7-1.4-1.4-1.4z" fill="url(#n)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M107.6 41.7c.5.3 1.2.2 1.5-.3 0 0 1-1.5 2.9-1.5s2.8 1.4 2.9 1.5c.2.3.6.5.9.5.2 0 .4-.1.6-.2.5-.3.7-1 .3-1.5-.1-.1-1.6-2.5-4.8-2.5-3.1 0-4.7 2.4-4.8 2.5-.1.5 0 1.2.5 1.5z" fill="url(#o)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M76.9 44.2c-3.1 0-4.7 2.4-4.8 2.5-.3.5-.2 1.2.3 1.5.5.3 1.2.2 1.5-.3 0 0 1-1.5 2.9-1.5s2.8 1.4 2.9 1.5c.2.3.6.5.9.5.2 0 .4-.1.6-.2
.5-.3.7-1 .3-1.5.1-.1-1.5-2.5-4.6-2.5z" fill="url(#p)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M140.7 118.4c15.7.3 23.7-6.5 29.7-25.4 1.3-4 1.1-6.7-.6-8.2-3.9-3.6-14.8.6-16.7 1.3-.3 1.9-2.2 11.5-4.9 16.3-2.3 4.1-7.5 7.6-13.9 6.2-6.5-1.5-12.3-5.7-14.1-10.1 0 0 0 .1-.1.1-.2.6-.4 1.1-.6 1.7-.2.6-.5 1.1-.7 1.5-.3.5-.5.9-.8 1.2-.2.3-.4.5-.5.6 1 1.7 2.2 3.5 3.7 5.3 3.1 3.4 9.6 9.3 19.5 9.5z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M120.3 98.4c1.9 4.4 7.6 8.7 14.1 10.1 6.4 1.4 11.6-2.1 13.9-6.2 2.7-4.8 4.5-14.4 4.9-16.3 1.9-.8 12.8-4.9 16.7-1.3 1.6 1.5 1.8 4.3.6 8.2-6 18.9-14 25.8-29.7 25.4-9.9-.2-16.4-6.1-19.4-9.5-1.5-1.7-2.7-3.5-3.7-5.3l-.1.1-.2.2-.1.1c-.2.1-.4.3-.6.4.5.9 1.1 1.8 1.7 2.7 1.1-.1 2.5 1.1 3.2 3 .2.4.3.9.4 1.3 3.6 3.5 9.8 8 18.7 8.2h1.1c4.2 0 7.8-.6 10.9-1.7-.1.3-.2.5-.2.8.4-.2.9-.4 1.3-.6.1-.2.1-.4.2-.6 1-.4 1.9-.9 2.8-1.4 1.9-1.6 3.4-3.4 3.5-3.4.3-.4.8-.5 1.3-.3 4.5-4.5 7.4-11 10-19 1.4-4.4 1.1-7.6-.9-9.4-4.8-4.4-17.7 1-18.2 1.2l-.3.1-.1.3s-.2.9-.5
2.3c.1.1.2.2.2.4 0 .3-.2.5-.4.6-.8 3.7-2.3 9.7-4.1 13-.3.6-.8 1.3-1.4 1.9 0 .2-.1.4-.1.6-.8.8-1.7 1.4-2.8 2-.3.2-.6.3-.9.5-.3.1-.6.3-1 .4-.3.1-.7.2-1 .3-.4.1-.7.2-1.1.3h.2H136.1c-.5 0-1.1 0-1.6-.1-1.1-.1-2.3-.4-3.4-.8-.4-.1-.7-.3-1.1-.4-.4-.2-.7-.3-1-.5-.3-.2-.7-.4-1-.6-.3-.2-.6-.4-1-.6-.3-.2-.6-.4-.9-.7-1.2-.9-2.2-2-3-3-.6-.8-1.1-1.6-1.5-2.4-.1-.3-.3-.5-.4-.8-.1-.3-.2-.5-.3-.8h-.2c0 .1-.1.1-.1.2-.1.7-.2.9-.3 1.1z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M174 104.9l-3.4 19.5c.5-.2 1.2-.3 2-.3 1.5 0 3.4.5 5.5 2.3 3.8 3.4 7 15.4 8.5 25.8 1.6 11.5 7.8 22.7 14.2 26.1 6.5 3.4 14.5 5.4 16.3 4.5.1 0 .1-.1.2-.1.3-1.7-.2-2.2-6.5-6.4-5.7-3.9-10.7-7.2-11.1-25.4-.1-3.3-.1-6.6-.1-9.8 0-8.9 0-17.1-1.5-24.9-.4-.2-.8-.4-1.1-.6-9.5-1.9-18.1-5.9-23-10.7z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M198 116.2c1.5 7.8 1.5 15.9 1.5 24.9 0 3.2 0 6.4.1 9.8.4 18.2 5.3 21.5 11.1 25.4 6.3 4.2 6.8 4.7 6.5 6.4 0 0-.1.1-.2.1-1.7.9-9.7-1.1-16.3-4.5-6.5-3.4-12.6-14.6-14.2-26.1-1.5-10.4-4.7-22.4-8.5-25.8-2-
1.8-4-2.3-5.5-2.3-.8 0-1.5.1-2 .3l3.4-19.5c4.9 4.9 13.5 8.9 22.9 10.8-1.8-.9-2.9-1.7-3-1.8 0 0 0-.1-.1-.1-9.5-2.5-17.7-7.1-21.2-12.4-4.6-6.9 10-17.4 11.7-18.6l13.1 1.1c-.1 1.9-.5 8 .8 11.3.9 2.4 4.9 10.1 15.3 9.2 9.7-.8 12.1-9.5 13.2-17.9.1-1.2.3-2.2.4-3.2.8-6.3 1-8.4 3.6-14.2l.3-.6c-.4.7-.9 1.4-1.3 2.2-1.6 3.1-2.8 6.8-3.2 10.7-.1.5-.1 1-.1 1.6v3.5c-.1 1.4-.3 2.7-.5 4.1-.4 2.6-1.2 5.1-2.3 7.1-.5 1-1.1 1.9-1.7 2.6-.6.7-1.3 1.3-1.9 1.8-.7.5-1.3.8-2 1.1-.7.3-1.4.5-2.1.6-.6.1-1.2.2-1.8.2h-.4c-.7 0-1.5-.1-2.2-.3-.3-.1-.5-.2-.8-.3-7.4-.7-10.4-6.5-11.2-8.5-.6-1.5-.8-3.7-.9-5.8h-.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h.3c0-2.4.2-4.4.2-4.4l.1-.6-14.6-1.2-.2.1c-.3.2-4.3 2.9-7.8 6.6h-.2v.3c-3.8 4-6.9 9.1-4.1 13.4.4.6.9 1.2 1.4 1.8l-4 22.6 1.1-.7s.3-.2.8-.3c-1.6 1-3.1 2.4-4.2 4.5-2.1 3.7-2.9 10.7-3.8 18.2-1 8.2-2 16.6-4.8 21.1-5.5 9.1-11.4 13.3-19.8 14.3-5.2.6-6.8-.5-7.2-.9.1-1.7 1.3-2.7 2.9-3.5-1.9.1-3.5 1.7-3.5 3.7 0 .3 0 .6.1.9.7.5 2.1 1.1 4.9 1.1.8 0 1.8-.1 2.9-.2 8.7-1 14.9-5.5 20.6-14.8 2.8-4
.7 3.9-13.2 4.9-21.5.9-7.3 1.7-14.2 3.7-17.7 1.4-2.5 3.4-4.2 6.1-5.1 1 .2 2.2.8 3.5 1.9 3 2.7 6.4 13 8.1 25.1 1.4 10 7.1 22.9 14.8 26.9 4.8 2.5 11.9 4.8 15.5 4.8.7 0 1.3-.1 1.8-.3h.1c.1-.3.2-.7.2-1 .1-.5.1-1 0-1.4-.3-1.1-1.6-2.1-4.6-4.2-.6-.4-1.3-.9-2.1-1.4-2.5-1.7-4.7-3.3-6.5-5.7-1.1-1.5-2-3.3-2.7-5.7-.4-1.2-.7-2.5-.9-4-.4-2.6-.7-5.7-.8-9.5v-1.5c0-1.3 0-2.7-.1-4.1v-9.4c-.1-3.8-.2-6.1-.2-6.1 0-.3.2-.6.5-.6h.1c-.2-4.2-.5-8.3-1.2-12.3-.7-.5-1.1-.7-1.5-.9z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M227 83.3c-.1 1-.2 2-.4 3.2-1.1 8.4-3.4 17.1-13.2 17.9-10.4.9-14.3-6.8-15.3-9.2-1.3-3.3-1-9.4-.8-11.3l-13.1-1.1c-1.7 1.2-16.3 11.6-11.7 18.6 3.5 5.3 11.7 9.9 21.2 12.4-.4-.4-.5-1-.2-1.5.4-.5 1.1-.6 1.6-.3 0 0 2.6 1.8 6.6 3.3 1.5.2 3 .3 4.5.4 12.5.6 21.4-3.3 27.1-11.9 4.1-6.2 4.1-17.7 4.1-23.3v-1.3c0-5.5.9-8.2 4.6-14.5 1.4-2.3 3.4-4 5.4-5.3l-1.3-3.9c-.3.2-.6.3-1 .5-1.1.6-2.4 1.3-3.8 2.2l-.1.1c-2.3 1.6-4.6 3.5-6.5 5.4-.8.8-1.5 1.6-2.2 2.6-.5.7-1 1.3-1.5 2.1l-.3.6c-2.7 5.8-3 8-3.7 14.3z" fil
l="#FAFAFA" fill-rule="nonzero"/><path d="M241.9 64.8c-3.7 6.3-4.6 9-4.6 14.5v1.3c0 5.5.1 17-4.1 23.3-5.8 8.6-14.6 12.5-27.1 11.9-1.5-.1-3-.2-4.5-.4 1.6.6 3.5 1.2 5.5 1.5h1.5c11.6 0 20-4.1 25.6-12.5 4.3-6.5 4.3-17.8 4.2-23.9v-1.3c0-5.2.8-7.8 4.4-13.9 1.2-2 3-3.6 4.8-4.8l-.4-1.1c-1.9 1.4-3.9 3.1-5.3 5.4zM235.3 63c-.3.2-.5.5-.8.8 1.9-1.9 4.2-3.7 6.5-5.4-1.7 1.2-3.7 2.7-5.7 4.6z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M127.4 108s11.6 13.5 16.4 17.9c4.9 4.5 12 8.2 19.1 5.2.7-.3 1.4-.6 2-.8-.5-.5-.9-1.1-1.1-1.8-.1-.4-.2-.9-.2-1.3h-.4c-.2 0-.4 0-.6-.1-.2 0-.3 0-.5-.1-.2 0-.4-.1-.6-.1-.2 0-.3-.1-.5-.1s-.4-.1-.6-.1c-.2 0-.4-.1-.5-.1-.2-.1-.4-.1-.7-.2-.2-.1-.4-.1-.6-.2-.2-.1-.4-.2-.7-.2-.2-.1-.4-.1-.6-.2-.2-.1-.4-.2-.7-.3l-.6-.3c-.2-.1-.5-.2-.7-.4l-.6-.3c-.2-.1-.5-.3-.7-.4-.2-.1-.4-.2-.6-.4-.2-.2-.5-.3-.7-.5-.2-.1-.4-.3-.6-.4-.2-.2-.5-.4-.7-.6-.2-.2-.4-.3-.5-.5l-.7-.7-.5-.5c-.3-.3-.5-.6-.8-.9-.1-.2-.3-.3-.4-.5-.4-.5-.8-1-1.2-1.6-.4-.5-.7-1-1-1.5-.1-.1-.2-.2-.2-.3-.3-.5-.7-.9-1-1.3v-.1c
-.3-.4-.6-.8-.9-1.1-.1-.1-.1-.2-.2-.2-.3-.3-.6-.7-.9-1l-.1-.1-.8-.8-.2-.2c-.3-.3-.5-.5-.8-.7-.1 0-.1-.1-.2-.1-.2-.2-.4-.3-.6-.5-.1-.1-.2-.1-.2-.2-.2-.2-.4-.3-.6-.4-.1-.1-.2-.1-.3-.2-.1-.1-.2-.1-.3-.2-.1-.1-.2-.1-.3-.2-.3-.2-.5-.3-.7-.4-.9-.5-1.5-.6-1.5-.6l-9.1.6z" fill="url(#q)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M116 146c7.7-.7 15.4-8.4 20.4-13.5l1.3-1.3c3.9-3.9 4.1-5.8 4-6.3l-5.4-2c-2.1 2.3-3.9 4.5-5.6 6.4-6.1 7-10.5 12.1-15.1 13.6-4.4 1.4-9.5-.3-13-1.4-.5-.2-1-.3-1.5-.5-.1.3-.2.7-.4 1-.3.5-.6.9-1 1.3 4 1.4 10.7 3.2 16.3 2.7z" fill="#FAFAFA" fill-rule="nonzero"/><path d="M116.1 147.1c8.1-.7 16-8.6 21.1-13.8l1.3-1.3c5.3-5.3 4.4-7.4 4.2-7.8-.1-.1-.2-.2-.3-.2l-1.9-.7c-1.6-.1-3.4-.3-5.2-.7-1.9 2.2-3.7 4.2-5.3 6.1-3.9 4.5-7.1 8.2-10 10.6-.2.2-.5.4-.7.6-1.2 1-2.5 1.9-3.7 2.6-1.1.4-2.3.5-3.5.5-4 0-8.1-1.7-10.6-2.4 0 .2-.1.4-.1.5.5.1.9.3 1.5.5 3.4 1.1 8.6 2.9 13 1.4 4.6-1.5 9-6.6 15.1-13.6 1.7-1.9 3.6-4.1 5.6-6.4l5.4 2c0 .5-.2 2.4-4 6.3l-1.3 1.3c-5.1 5.1-12.7 12.8-
20.4 13.5-5.6.5-12.3-1.4-16.2-2.6l-.2.2.1 1c3.5 1.2 9.1 2.7 14.3 2.7.4-.2 1.1-.2 1.8-.3z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M171.5 131.5c.1.2.3.4.5.6.4.3.8.5 1.3.7.3-.5.6-1 .7-1.6-.8.2-1.6.3-2.5.3z" fill="url(#r)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M149.4 116.1c-3-4.4-5.7-7.1-7.8-8.7.9-.2 1.8-.6 2.8-1 2.1-.9 4.1-2 5.8-3.4-1.5.9-3.1.9-3.7.1-.1-.1-.1-.2-.1-.3-.9.5-1.9 1-2.9 1.4-1.1.5-2.3.9-3.5 1.2-.3.1-.7.1-1.1.2-3.7.5-7.7-.1-7.7-.2-.3-.1-.6.2-.6.5-.1.3.2.6.5.6.1 0 2.2.4 4.8.4h1.3c.3.3.7.5 1 .8.2.1.5.2.7.4.1.1.2.1.3.2.1.1.2.1.3.2.1.1.2.1.3.2.2.1.4.3.6.4.1.1.2.1.2.2.2.1.4.3.6.5.1 0 .1.1.2.1.2.2.5.5.8.7l.2.2c.3.2.5.5.8.8l.1.1c.3.3.6.6.9 1 .1.1.1.2.2.2.3.4.6.7.9 1.1v.1c.3.4.7.8 1 1.3.1.1.2.2.2.3.3.5.7 1 1 1.5.4.6.8 1.1 1.2 1.6.1.2.3.3.4.5.3.3.5.7.8.9l.5.5c.2.3.5.5.7.7.2.2.4.3.5.5.2.2.5.4.7.6.2.2.4.3.6.4.2.2.5.4.7.5.2.1.4.3.6.4.2.2.5.3.7.4l.6.3c.2.1.5.2.7.4l.6.3c.2.1.4.2.7.3.2.1.4.2.6.2.2.1.4.2.7.2.2.1.4.1.6.2.2.1.4.1.7.2.2 0 .4.1.5.1.2.1.4.1.6.1.2 0 .4.
1.5.1.2 0 .4.1.6.1.2 0 .3.1.5.1s.4 0 .6.1h.4c0 .4 0 .9.2 1.3.2.7.6 1.3 1.1 1.8.6.6 1.4 1.1 2.4 1.6.6.2 1.2.5 1.9.6h.1c.2 0 .5-.2.5-.4.1-.3-.1-.6-.4-.7-.1 0-.2-.1-.3-.1-2.4-.7-3.8-1.8-4.2-3.2-.7-2.5 1.8-5.4 1.9-5.4.1-.1.2-.3.1-.5 0-.1-.1-.2-.2-.3-.2-.2-.6-.2-.8 0 0 0-.3.3-.6.7-.4.5-.9 1.3-1.2 2.2-4.5.3-10.1-1.3-14.9-8.4z" fill="url(#s)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M31.3 79.8v1.6c0 .9.1 1.8.2 2.7 0-.3.1-.6.2-1 .1-.3.1-.6.2-.9.1-.3.2-.7.3-1 .1-.2.1-.4.2-.6.7.5 1.6.9 2.8 1.3 1.3.4 2.7.7 4.1.7H39.9c.1.3.2.5.3.8.1.3.3.5.4.8.4.8.9 1.6 1.5 2.4.8 1.1 1.8 2.1 3 3 .3.2.6.5.9.7.3.2.6.4 1 .6.3.2.7.4 1 .6.3.2.7.3 1 .5.4.2.7.3 1.1.4 1.1.4 2.2.6 3.4.8.5.1 1.1.1 1.6.1h3.1-.2c.4-.1.7-.2 1.1-.3.4-.1.7-.2 1-.3.3-.1.7-.3 1-.4.3-.1.6-.3.9-.5 1-.6 2-1.3 2.8-2 0-.2.1-.4.1-.6.8-4.3 1.3-9.2 1.5-15 .8.1 1.6.1 2.3.1.9 0 1.6-.1 1.7-.1h.1c.3-.1.4-.3.4-.6 0-.2-.1-.3-.2-.4-.1-.1-.3-.1-.4-.1-.1 0-2 .2-3.9-.1-2-.5-3.9-1.4-5.6-2.6.1-.2.2-.5.3-.7.8-1.9 1.1-3.8 1.1-5.3-.1-1.6-.6-2.8-1.6-3
.2l-3-1.2c.1.4.1.8.1 1.2l2.5 1c1.1.5 1.4 3.5-.1 7.1-1.5 3.6-3.7 5.6-4.9 5.1l-2.5-1c-.3.3-.6.6-.9.8l3 1.2c.2.1.5.1.8.1.9 0 1.9-.6 2.9-1.6.4-.5.9-1 1.3-1.6 1.4.9 2.8 1.7 4.4 2.3-.2 5.3-.7 9.9-1.4 13.9-.5.5-1.1.9-1.8 1.2-.4.2-.9.5-1.6.7-.5.2-1.1.3-1.8.5h-.8H55.1c-.5 0-.9 0-1.3-.1-1.3-.1-2.6-.5-3.8-1l-1.8-.9c-.5-.3-1-.7-1.6-1.1-1-.8-1.9-1.7-2.6-2.6-.7-.9-1.2-1.8-1.7-2.8-.1-.2-.1-.3-.2-.5h.1c.8-.5 1.3-1.2 1.8-2.1.4-.7.7-1.6.8-2.7 0-.2 0-.3-.1-.5-.1-.1-.2-.2-.3-.2-.3-.1-.6.2-.6.5 0 .1-.1.3-.1.4-.4 1.8-1 3-2 3.6-1.3.8-3.1.8-6.1-.1-5.7-1.7-4.6-6-4.5-6.2.1-.2 0-.5-.2-.6-.1 0-.1-.1-.2-.1-.3-.1-.6.1-.7.4 0 0-.2.9-.1 2.1.1 1 .5 2.2 1.6 3.3-.2 0-.2.1-.2.1z" fill="url(#t)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M157.7 138.9c-.4 0-.8.1-1.2.1h-.8c-.5 0-1.1-.1-1.7-.2-.3-.1-.7-.1-1-.2-.8.6-2.4.7-4.1 0-1.8-.7-3.1-2.1-3-3.1l-1.8-1.2c-.5-.3-.9-.7-1.3-1-.4-.3-.9-.7-1.3-1-.7-.5-1.3-1.1-2-1.6-.6.8-2.2.7-3.8-.2.7.5 1.4 1.1 2.1 1.7.7.6 1.5 1.2 2.3 1.9 1.7 1.4 3.6 2.8 5.8 4.1 1.8 1.1 4.6 2
.5 7.8 3 1 .1 1.9.2 2.8.2.5 0 .9 0 1.4-.1 1.3-.1 2.5-.3 3.7-.7 2.2-.6 3.8-1.5 5.2-2.3 1.3-.8 2.3-1.6 3.2-2.2.1-.1.3-.2.4-.3-.3-.2-.6-.4-.8-.6-.2-.2-.4-.4-.6-.5-.2 1-1.6 2.3-3.1 3.2-1.7 1-3.5 1.2-4.3.4-.2.1-.4.1-.6.2-1 .1-2.1.3-3.3.4z" fill="url(#u)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M31.5 141.4h.9c.9 0 1.8 0 2.8-.1 1.4-.2 2.6-.4 3.7-.6 2.3-.5 4.6-1.4 7-2.5 1.9-.9 4-2 6.2-3.3 2.9-1.7 5.5-3.6 7.9-5.2.8-.6 1.6-1.1 2.4-1.7 1.1-.8 2.1-1.4 3-2-.2 1.3-.3 2.6-.3 3.9-.1 1.4-.1 2.8-.1 4.3V139.6c0 .4 0 .8-.1 1.2-.1 1.1-.2 2.1-.3 3-.1 1-.3 1.9-.4 2.7-.2 1-.4 1.8-.6 2.6-.2.8-.5 1.6-.8 2.3-.3.8-.7 1.5-.9 2.1-.3.6-.7 1.2-1.1 1.8-.4.6-.8 1.1-1.2 1.6-.5.6-.9 1-1.3 1.3-.4.4-.9.8-1.3 1.1-.8.6-1.6 1.1-2.4 1.6-.7.4-1.3.7-1.7.8l-.2.1c-3 .3-5.3 2.8-5.3 5.9 0 3.2 2.6 5.9 5.8 5.9h.1c.5.1 1.5.2 3 .2h1.6c1.8-.1 3.6-.4 5.3-.9 1.1-.3 2.1-.6 3.2-1.1 1.2-.5 2.4-1 3.4-1.6 1.2-.7 2.3-1.4 3.4-2.2 1.1-.9 2.3-1.8 3.3-2.8 1-1 2-2.1 3-3.4 1-1.2 1.9-2.5 2.7-3.8 1.6-2.6 3-5.5 4.1-8.4.5-1.4 1-2.9 1
.4-4.4.2-.6.3-1.2.5-1.7l.1-.5.1-.4c.1-.6.3-1.2.4-1.9l.4-2v-.2V138.2l.1-.4.2-.8c.2-1 .5-2.1.8-3.2.5-2 1.1-3.8 1.7-5.3.3-.8.6-1.5.9-2.1 0-.1.1-.2.1-.3.1.1.1.2.2.3.2.5.5 1.2.9 2.1.6 1.5 1.2 3.2 1.7 5.2.3 1 .6 2.1.8 3.2l.2.8.1.4v.5l.4 2c.1.7.3 1.3.4 1.9l.1.4.1.5c.1.6.3 1.2.5 1.8.4 1.5.9 3 1.4 4.4 1.1 2.9 2.5 5.8 4.1 8.4.8 1.3 1.7 2.6 2.7 3.8 1 1.3 2 2.4 3 3.4s2.2 2 3.3 2.8c1.1.8 2.2 1.5 3.4 2.2 1 .6 2.1 1.1 3.4 1.6 1 .4 2.1.8 3.2 1.1 1.7.5 3.5.8 5.3.9.5 0 1.1.1 1.6.1 1.5 0 2.5-.1 3-.2h.1c3.1 0 5.7-2.6 5.8-5.7.5-3.5-1.5-4.8-7.7-9-5.5-3.7-9.5-6.4-9.8-23.1v-1.5c0-1.4 0-2.8-.1-4.2v-4-3c.9.1 1.9.3 2.8.5 1.2.3 2.3.7 3.3 1.2.6.3 1.2.6 1.9.9.7.4 1.3.8 1.9 1.2.9.6 1.8 1.3 2.9 2.1-1.1-1.2-1.5-2.5-1-3.2l.1-.1c-.3-.2-.5-.4-.8-.6-.7-.5-1.4-.9-2.1-1.3-.7-.4-1.3-.7-2-1-.3-.2-.6-.3-1-.4-.6-.3-1.3-.5-1.9-.6-.3-.1-.6-.2-.9-.2-.7-.2-1.3-.3-1.9-.4-.5-.1-.9-.1-1.4-.2-.4 0-.8-.1-1.2-.1-.1-3.9-.2-6.2-.2-6.2 0-.3-.2-.5-.5-.5h-.1c-.3 0-.5.3-.5.6 0 0 .2 2.3.2 6.1v9.4c.1 1.4.1 2.8.1 4.1v1.5c.1 3.8.4 6.9.8 9.5.2 1
.5.6 2.8.9 4 .7 2.4 1.6 4.2 2.7 5.7 1.7 2.4 3.9 4 6.5 5.7.8.5 1.5 1 2.1 1.4 3.1 2.1 4.3 3.1 4.6 4.2.1.4.1.9 0 1.4 0 .4-.1.7-.2 1-.4 1.5-1.8 2.7-3.5 2.7h-.1H132h-.5H128.1c-1.4-.1-3-.3-4.8-.8-.5-.1-.9-.3-1.4-.4-.5-.2-1-.3-1.5-.5-1-.4-2.1-.9-3.1-1.5-.5-.3-1.1-.6-1.6-1-.5-.3-1.1-.7-1.6-1.1-.5-.4-1-.8-1.6-1.2-.5-.4-1-.9-1.5-1.4-1-1-1.9-2-2.9-3.2-.9-1.1-1.8-2.3-2.5-3.6-.8-1.3-1.5-2.6-2.2-3.9-.7-1.3-1.2-2.7-1.8-4.1-.3-.7-.5-1.4-.7-2.1l-.6-2.1-.6-2.1c-.2-.7-.3-1.4-.5-2.2l-.4-2v-.2-.1l-.1-.2-.1-.4-.2-.9c-.3-1.1-.5-2.2-.8-3.2-.6-2.1-1.2-3.9-1.8-5.5-.3-.8-.6-1.5-.9-2.2-.2-.3-.3-.6-.5-.9-.1-.3-.3-.6-.4-.9-.5-.8-.9-1.5-1.3-2.2-.4.6-.8 1.4-1.3 2.2-.1.3-.3.6-.4.9-.1.3-.3.6-.5.9-.3.7-.6 1.4-.9 2.2-.3.8-.6 1.6-.9 2.6-.3.9-.6 1.9-.9 2.9-.3 1-.6 2.1-.8 3.2l-.2.9-.1.4-.1.2h.3c1.1.4 1.4 2.4.7 4.5-.6 1.7-1.7 2.9-2.7 3.1-.3 1.1-.7 2.2-1.1 3.3-.3.7-.5 1.4-.8 2.1-.6 1.4-1.2 2.7-2 4-.4.7-.7 1.3-1.1 1.9-.7 1.1-1.4 2.1-2.2 3.1.7.9.1 2.7-1.4 4.2s-3.3 2.1-4.2 1.5c-.2.2-.5.4-.7.6-1.1.8-2.1 1.5-3.2 2-.5.3-1.1.6-1.
6.8-.5.2-1 .5-1.5.7-.5.2-1 .4-1.5.5-.5.2-1 .3-1.4.4-1.9.5-3.5.7-4.8.8H54.1h-1-.2c-1.7 0-3.1-1.2-3.5-2.8-.1-.3-.1-.6-.1-.9 0-2 1.5-3.6 3.5-3.7h.2c-.1 0 .1-.1.5-.3.2-.1.4-.2.7-.3.3-.2.7-.4 1.2-.6.8-.4 1.7-1 2.7-1.8.4-.3.9-.7 1.3-1.1.1-.1.1-.1.2-.1.5-.5 1-1 1.4-1.5.5-.5.9-1.1 1.3-1.8.4-.6.8-1.3 1.2-2 .4-.7.7-1.5 1-2.3.1-.3.2-.7.4-1.1.2-.5.3-.9.5-1.4.3-.9.5-1.8.7-2.7.1-.5.2-.9.3-1.4.1-.5.1-1 .2-1.5.1-1 .2-2 .3-3.1 0-.5.1-1 .1-1.6V136.2v.1-1.8-2.1c0-.7 0-1.4.1-2.1.1-1.3.2-2.7.4-4.1.1-.6.2-1.1.3-1.7 1.1-5.4 1.3-8.9 1.3-8.9 0-.3-.2-.6-.5-.6h-.1c-.3 0-.5.2-.5.5 0 0-.2 2.8-1 7.2-.6.3-1.1.6-1.8 1-1.3.8-2.7 1.7-4.2 2.7-.8.5-1.5 1-2.3 1.6-1.1.7-2.2 1.5-3.4 2.3-.2.9-1 2.1-2.2 2.9-1.5 1.1-3.2 1.5-4.1 1-1.4.8-2.8 1.5-4.2 2.2-1 .4-2 .9-3 1.2-.5.7-1.4 1.4-2.5 1.8-1.8.7-3.6.6-4.3-.2h-.2c-.5 0-1 .1-1.5.1h-1.8c-1.1 0-2.2-.2-3.2-.3-.4-.1-.7-.2-1.1-.2 0 .2 0 .4-.2.6-.2.4-.7.6-1.4.7-1.3-2.1-3.3-3.8-5.6-4.7-.3-.1-.5-.2-.8-.3l-.6-5.5-.1-1 .2-.2c.4-.4.7-.8 1-1.3.2-.3.3-.6.4-1 .1-.2.1-.4.1-.5 2.5.8 6.6 2.4 10
.6 2.4 1.2 0 2.4-.2 3.5-.5 1.2-.7 2.5-1.6 3.7-2.6.2-.2.5-.4.7-.6 1-.9 2-1.8 3-2.9.6-.6 1.2-1.3 1.8-2l1.8-2.1c.6-.7 1.2-1.4 1.8-2.2.6-.7 1.2-1.5 1.9-2.2 1.3-1.5 2.5-2.9 3.9-4.3.3-.4.7-.7 1.1-1.1 1.9.4 3.6.6 5.2.7 1.2.1 2.3.1 3.3.1 4.3 0 7-.7 7.2-.7.3-.1.5-.4.4-.7-.1-.2-.2-.3-.4-.4h-.3s-2 .5-5.3.6c-2.4.1-5.6 0-9.2-.6l.1-.1c-.1 0-.2 0-.3-.1l-1-.2c-.7-.2-1.3-.4-2-.6-.7-.2-1.3-.5-1.9-.7l-1.8-.9c-1.8-.9-3.4-2-4.9-3.2-.8-.7-1.6-1.4-2.3-2.1-.2.4-.4.6-.7.8-1.1.5-2.7-.8-3.5-2.9-.6-1.6-.7-3.1-.1-4-.4-.8-.8-1.7-1.1-2.5-.1-.2-.2-.5-.2-.7-.1 0-.2.1-.3.1-.8.1-1.7-.1-2.3-.6.2.7.4 1.4.7 2 .8 2 1.9 4 3.2 5.9.8 1.1 1.6 2.1 2.4 2.9.8.9 1.8 1.8 2.9 2.7 2.2 1.8 4.6 3.3 7.3 4.4.6.3 1.2.5 1.9.7-1 1.1-2.1 2.3-3.4 3.8-.7.8-1.3 1.5-1.9 2.3-1.8 2.2-3.6 4.2-5.4 6.1-1.3 1.4-2.4 2.5-3.5 3.4-1.1.9-2.1 1.7-3.2 2.3-.8.2-1.7.4-2.6.4-2.9 0-6-1.1-8.4-1.8-.9-.3-1.7-.6-2.3-.7 0-.1 0-.3-.1-.4-.1-.3-.4-.4-.7-.4-.1 0-.1.1-.2.1-.2.1-.2.4-.2.6.4 1.2.3 2.3-.3 3.4-1 1.7-3.2 2.9-4.9 3.3-2.5.6-4.4.3-5.6-.7-1.5-1.2-1.4-3.3-1.4-3.3
0-.3-.2-.5-.4-.5h-.2c-.3 0-.6.2-.6.5 0 .1-.1 2.6 1.8 4.2.6.5 1.4.9 2.3 1.1l.5 4.8c-1.3.7-2.5 1.7-3.4 2.8-1.9 2.4-2.8 5.4-2.5 8.4.5 4.6 3.6 8.4 8 9.8.2.1.3.1.5.1h.2c.4 0 .8-.3 1.1-.6.3-.3.4-.8.4-1.2v-.2l-.8-7.7c0-.2.1-.3.1-.3 0-.1.1-.1.3-.2l2-.2.8-.1.8-.1c.3 0 .5.2.5.4l.8 7.9c.1.8.8 1.5 1.6 1.5h.2c.2 0 .4-.1.6-.2.4-.2.9-.5 1.3-.9.8-.6 1.4-1.2 2-1.9 1.9-2.4 2.8-5.4 2.5-8.4L27 143c-.2-.9-.5-1.7-.9-2.4 1.8.5 3.6.8 5.4.8zm-5.2 3.6c.3 2.9-.6 5.6-2.3 7.6-.5.6-1.1 1.2-1.8 1.7l-.8-7.7c0-.4-.2-.8-.5-1-.3-.2-.6-.4-1-.4h-.2l-3.6.4-2 .2c-.4 0-.8.3-1 .6-.3.3-.4.7-.3 1.1l.8 7.7c-3.2-1.5-5.5-4.6-5.9-8.3-.3-2.9.6-5.6 2.3-7.6 1-1.2 2.3-2.2 3.7-2.9l-.6-5.3c.4-.1.7-.1 1.1-.2 1.1-.2 2.4-.8 3.5-1.5l.7 6.5c4.2 1 7.5 4.5 7.9 9.1z" fill="url(#v)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M114.1 97.1c-.5-.4-1.2-.2-1.6.3-.3.5-.2 1.1.2 1.5 0 0 0 .1.1.1.1.1 1.2.9 3 1.8.3.2.7.4 1.1.6l1.2.6c3.3 1.4 7.9 2.9 13.2 2.9 1.5 0 2.9-.1 4.5-.4.6-.1 1-.7.9-1.3-.1-.6-.7-1-1.3-.9-3.3.5-6.5.3-9.4-.2-2-.4-3.9
-.9-5.5-1.5-3.8-1.7-6.3-3.5-6.4-3.5z" fill="url(#w)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M24.8 135.4c-1.9-1.1-4-1.2-4.6-.2v.1c2.4.9 4.3 2.6 5.6 4.7.6-.1 1.1-.3 1.4-.7.1-.2.1-.4.2-.6-.1-1.1-1.1-2.4-2.6-3.3z" fill="url(#x)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M148.5 99.1c-1.6 1.2-2.5 2.9-2.1 3.9 0 .1.1.2.1.3.6.8 2.2.7 3.7-.1.3-.2.5-.3.8-.5.5-.4.9-.8 1.2-1.2.9-1.1 1.2-2.3.7-3-.1-.2-.3-.3-.5-.4-.8-.5-2.4-.1-3.9 1z" fill="url(#y)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M42.4 135.7c-.4-1.1-2.5-1.3-4.5-.5-2.1.8-3.4 2.4-2.9 3.5.1.1.1.2.2.3.7.8 2.5.9 4.3.2 1.1-.5 2-1.1 2.5-1.8.4-.6.6-1.2.4-1.7z" fill="url(#z)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M55.3 128.9c-.7-1-2.7-.7-4.5.6-1.8 1.3-2.7 3.2-2 4.1.1.2.3.3.4.4.9.5 2.6.1 4.1-1 1.2-.9 2-2 2.2-2.9.1-.5 0-.9-.2-1.2z" fill="url(#A)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M157.7 80.4c-.6 2.1-.1 4.1 1.1 4.4.3.1.5 0 .8-.1 1-.3 1.9-1.6 2.4-3.3.
6-2.1.1-4.1-1.1-4.4-1.2-.2-2.6 1.3-3.2 3.4z" fill="url(#B)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M41 96.3c-.1-.4-.2-.9-.4-1.3-.8-1.9-2.1-3.1-3.2-3-.1 0-.2 0-.3.1-.3.1-.5.3-.6.6-.5.9-.5 2.4.1 4 .8 2.1 2.4 3.4 3.5 2.9.3-.1.6-.4.7-.8.4-.7.4-1.6.2-2.5z" fill="url(#C)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M164.5 52.7c.2.2.6.4.9.4.9.1 2.1-.4 3.2-1.4v-.1l-1.4-4.3c-.4.3-.9.6-1.3 1-1.6 1.5-2.2 3.5-1.4 4.4z" fill="url(#D)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M84 141c-.7 2.1-.4 4.1.7 4.5.2.1.4.1.7 0 1-.2 2.1-1.4 2.7-3.1.7-2.1.4-4.1-.7-4.5h-.3c-1.1-.1-2.4 1.2-3.1 3.1z" fill="url(#E)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M73.7 161.2c-1.6 1.6-2.1 3.5-1.3 4.4 0 0 .1.1.2.1.9.6 2.7 0 4.2-1.5s2.1-3.3 1.4-4.2c0-.1-.1-.1-.1-.2-.9-.8-2.9-.2-4.4 1.4z" fill="url(#F)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M139.6 130.5c.8-1-.1-2.9-1.9-4.2-1.7-1.2-3.6-1.5-4.4-.7l-.1.1c-.6.8-.1 2.1 1 3.2.3.3.6.6 1 .9.
2.2.5.3.7.5 1.4.9 3 1 3.7.2z" fill="url(#G)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M149 138.6c1.7.7 3.3.6 4.1 0 .2-.1.4-.3.4-.5.4-1.1-.9-2.7-2.9-3.5-2.1-.8-4.1-.6-4.5.5 0 .1-.1.3-.1.4-.1 1 1.1 2.3 3 3.1z" fill="url(#H)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M72 105.8c.7-.3 1.4-.6 2.1-1 3.2-1.6 6.7-5.7 6.9-5.8.4-.5.4-1.2-.1-1.6-.1-.1-.2-.1-.3-.2-.4-.2-.9-.1-1.3.3 0 0-1.6 1.8-3.5 3.4-.9.8-1.9 1.5-2.7 1.9-.1 0-.2.1-.3.1-.5.2-.9.4-1.3.6-3.6 1.6-6.2 2.1-6.3 2.1-.6.1-1 .7-.9 1.3 0 .1.1.2.1.2 3.3-.1 5.3-.6 5.3-.6h.3c.2-.1.5-.2.7-.3.4 0 .8-.2 1.3-.4z" fill="url(#I)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M11.6 117.5c-4.2-1-7.4-4.5-7.8-9.1-.3-2.9.6-5.6 2.3-7.6.5-.6 1.1-1.2 1.8-1.7l.8 7.7c.1.8.8 1.4 1.5 1.4h.2l2-.2 3.6-.4c.4 0 .8-.3 1-.6.3-.3.4-.7.3-1.1l-.8-7.7c3.2 1.5 5.5 4.6 5.9 8.3.3 2.9-.6 5.6-2.3 7.6-1 1.2-2.3 2.2-3.7 2.9l.4 3.7c.4.2.8.3 1.2.6l-.1-.6-.3-3.1c1.3-.7 2.5-1.7 3.4-2.8 1.9-2.4 2.8-5.4 2.5-8.4-.4-4-2.8-7.5-6.5-9.2l-1
.5-.6c-.2-.1-.3-.1-.5-.1h-.2c-.4 0-.8.3-1.1.6-.3.3-.4.8-.4 1.2l.8 7.9c0 .2-.1.3-.1.3 0 .1-.1.1-.3.2l-1.6.2-2 .2c-.3 0-.5-.2-.5-.4L9 99v-.2c-.1-.8-.8-1.5-1.6-1.5h-.2c-.2 0-.4.1-.6.2-1.3.7-2.4 1.7-3.3 2.8-1.9 2.4-2.8 5.4-2.5 8.4.5 4.7 3.7 8.5 8.1 9.9l.3 2.8c.8-.5 1.8-.8 2.9-1l-.5-2.9z" fill="url(#J)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M18.3 135.9l-.7-6.5c-1.1.8-2.4 1.3-3.5 1.5-.4.1-.7.1-1.1.2l.6 5.3c-1.5.7-2.7 1.7-3.7 2.9-1.7 2.1-2.6 4.8-2.3 7.6.4 3.8 2.7 6.8 5.9 8.3l-.8-7.7c0-.4.1-.8.3-1.1.3-.3.6-.5 1-.6l2-.2 3.6-.4h.2c.4 0 .8.1 1 .4.3.2.5.6.5 1l.8 7.7c.7-.5 1.3-1.1 1.8-1.7 1.7-2.1 2.6-4.8 2.3-7.6-.3-4.6-3.6-8.1-7.9-9.1z" fill="url(#K)" fill-rule="nonzero" transform="translate(81 15)"/><path fill="url(#L)" fill-rule="nonzero" d="M171.1 22.7l-.3-.8-1.6 1.4" transform="translate(81 15)"/><path fill="url(#M)" fill-rule="nonzero" d="M158.9 18.3l.3 1.1 2.2-1.9" transform="translate(81 15)"/><path d="M168.9 16.1l-.3-.9-2 .7-6.4 5.4c-.1.1-.2.1-.3.2l.6 1.8 8.1-6.9c.1-
.2.2-.3.3-.3z" fill="url(#N)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M161.1 25.2l.2.7 2.7-.9 5.8-4.9c.1-.1.2-.1.3-.2l-.6-1.8-8.1 6.9c-.1.1-.2.1-.3.2z" fill="url(#O)" fill-rule="nonzero" transform="translate(81 15)"/><path fill="url(#P)" fill-rule="nonzero" d="M165 37.1l.4 1.2 2.5-2.1" transform="translate(81 15)"/><path d="M170.3 41.7l-2.7 2.3c-.1.1-.2.1-.3.2l.6 1.8 2.6-2.2c-.2-.8-.2-1.5-.2-2.1z" fill="url(#Q)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M175.1 35l-.4-1.1-1.6.5-6.7 5.7c-.1.1-.2.1-.3.2l.6 1.8 8.1-6.9c.1-.1.2-.1.3-.2z" fill="url(#R)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M171.5 45.5l-2.6 2.2c-.1.1-.2.1-.3.2l.6 1.8 3.7-3.1c-.6-.3-1-.7-1.4-1.1z" fill="url(#S)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M164 25l5.2-1.7 1.6-1.4.3-.3c.4-.4.5-1 .1-1.5-.3-.3-.7-.4-1.1-.3-.1 0-.2.1-.3.2l-5.8 5z" fill="url(#T)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M166.6 15.8l-5.2 1.7-2.2 1.9-.3.3c-.4
.4-.5 1-.1 1.5l.3.3c.2.1.5.1.8.1.1 0 .2-.1.3-.2l6.4-5.6z" fill="url(#U)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M175 47.4c-.8-.2-1.6-.5-2.2-.9l-3.7 3.1-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.3.1.6.1.8 0 .1 0 .2-.1.3-.2l4.9-4.1z" fill="url(#V)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M173.2 34.5l-5.2 1.7-2.5 2.1-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.2.1.5.1.8.1.1 0 .2-.1.3-.2l6.7-5.8z" fill="url(#W)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M170.3 41.7c.1-1.1.6-2 .6-2 .1-.3.5-.4.7-.2.1 0 .1.1.2.1 1.1-1.3 2.8-2.3 4.5-3 .2-.4.2-.9-.1-1.2-.3-.3-.7-.4-1.1-.3-.1 0-.2.1-.3.2l-8.1 6.9-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.2.1.5.1.8.1.1 0 .2-.1.3-.2l2.6-2.5z" fill="url(#X)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M171.5 45.5c-.3-.4-.6-.7-.8-1.2-.1-.2-.2-.4-.2-.7l-2.6 2.2-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.2.1.5.1.8.1.1 0 .2-.1.3-.2l2.6-2.3z" fill="url(#Y)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M161.1 25.2c.1 0 .2-.1.3-.2l8.1-6.9.
3-.3c.4-.4.5-1 .1-1.5-.3-.3-.7-.4-1.1-.3-.1 0-.2.1-.3.2l-8.1 6.9-.3.3c-.4.4-.5 1-.1 1.5l.3.3c.3 0 .5.1.8 0z" fill="url(#Z)" fill-rule="nonzero" transform="translate(81 15)"/><path fill="url(#aa)" fill-rule="nonzero" d="M165.6 4.8l-11 3.6 3 9.2 11-3.7" transform="translate(81 15)"/><path fill="url(#ab)" fill-rule="nonzero" d="M174.8 32.7l-3-9.1-11 3.6 3 9.2" transform="translate(81 15)"/><path d="M160.8 38.5l3.2-1.1.3 1-.2.1c-1.5.7-3.2 1.6-5.1 2.9-2.4 1.6-4.4 3.1-6.3 4.9-2.5 2.5-4.6 5.2-6.1 8.2-1.8 3.5-3 7.4-3.5 11.5 0 .4-.1.8-.1 1.3v3.9c-.1 1.1-.2 2.3-.4 3.8-.4 2.3-1.1 4.5-2 6.4-.4.8-.9 1.5-1.4 2.1-.4.5-.9 1-1.6 1.5-.9.7-1.9 1.1-3.1 1.3h-.1c-.5.1-.9.1-1.3.1h-.2c-.6 0-1.3-.1-1.8-.2h-.1c-1.2-.3-2.3-.9-3.2-1.7-.5-.4-.9-.9-1.3-1.4-.3-.4-.6-.9-1-1.5-.1-.1-.1-.3-.2-.4-.1-.1-.1-.2-.2-.4l-.3-.6-.1-.2-.1-.2v-.1l-.1-.2c0-.1-.1-.1-.1-.2-.1-.2-.2-.3-.2-.5v-.1c-.1-.3-.3-.5-.4-.8v-.1l-.3-.6c-.2-.3-.3-.6-.5-.9 0-.1-.1-.1-.1-.2-.1-.7-.1-1.5-.1-2.3 7.3-2.6 12.2-9.4 12.2-17.3 0-5.2-2.1-10-5.9-13.5v-1
.1c0-19.5-15.9-35.4-35.4-35.4S58.3 22.4 58.3 41.9V43c-3.3 3.1-5.4 7.2-5.8 11.6l2.2.9c.1-1.5.4-3 .9-4.4.4-1.1.9-2.2 1.5-3.2.2-.4.5-.7.7-1.1.5-.7 1.1-1.4 1.7-2 .3-.3.6-.6 1-.9 0-.7-.1-1.4-.1-2.1 0-2.3.2-4.5.7-6.7.2-1.1.5-2.1.8-3.2.5-1.6 1.1-3.1 1.8-4.5.5-1 1-1.9 1.5-2.8.6-.9 1.2-1.8 1.8-2.6.3-.4.6-.8 1-1.3 4.4-5.3 10.4-9.3 17.3-11 2-.5 4-.8 6.2-1 .7 0 1.4-.1 2.1-.1 2.1 0 4.1.2 6 .6.7.1 1.3.3 1.9.4.2.1.4.1.6.2 2.8.8 5.5 1.9 8 3.3 1.2.7 2.4 1.5 3.6 2.4 1.1.9 2.2 1.8 3.2 2.8 4 4 7 9.1 8.6 14.8.1.2.1.4.2.6.6 2.6 1 5.2 1 8 0 .7 0 1.4-.1 2.1 1.8 1.5 3.3 3.3 4.3 5.5 1 2.1 1.6 4.5 1.6 7 0 5.7-2.9 10.7-7.4 13.5-.7.5-1.5.9-2.3 1.3-.7.3-1.4.5-2.1.7-1.3.2-2.4.3-3 .3h-.5c-.3 0-.6.3-.6.6s.2.6.6.6h.3c.5 0 1.5-.1 2.8-.3.1 1.2.1 2.4.2 3.5.1.2.2.3.3.5.1.2.2.5.4.7.1.2.3.5.4.8.1.3.3.5.4.8.1.1.1.3.2.4.1.1.2.3.2.4.1.1.1.3.2.5s.2.3.2.5c.1.3.3.6.5.9l.6.9c.2.3.4.6.7.9.5.6 1 1.2 1.6 1.7 1 .8 2.1 1.5 3.3 1.9.3.1.5.2.8.3.7.2 1.5.3 2.2.3h.4c.6 0 1.2-.1 1.8-.2.7-.1 1.4-.3 2.1-.6.7-.3 1.3-.7 2-1.1.6-.5 1.3-1.1 1.9-
1.8.6-.7 1.2-1.6 1.7-2.6 1-2 1.8-4.4 2.3-7.1.2-1.3.4-2.7.5-4.1V68.8 67c0-.5.1-1.1.1-1.6.4-3.9 1.6-7.6 3.2-10.7.4-.8.8-1.5 1.3-2.2l1.5-2.1c.7-.9 1.5-1.8 2.2-2.6l.8-.8c2-1.9 4-3.4 5.8-4.6l.1-.1c1.4-.9 2.7-1.6 3.8-2.2.3-.2.7-.3 1-.5l1.3 3.9.4 1.1.6 1.7 1.4 4.3v.1c-1.1.9-2.3 1.4-3.2 1.4l-1.5 2.1c-.5.8-1 1.7-1.4 2.6-.4.9-.8 1.8-1.1 2.7-.1.5-.3.9-.4 1.4-.3 1.5-.5 3-.4 4.6v1.7c0 .4.1.8.1 1.2 0 .5.1.9.1 1.4.1 1.9.1 3.8 0 5.8v.4c1.1.3 1.6 2.3 1.1 4.4-.4 1.7-1.4 3-2.4 3.3-.4 1.4-.8 2.8-1.4 4.3-.2.5-.4 1-.7 1.6-.7 1.6-1.6 3.1-2.6 4.6-.7 1-1.5 2-2.3 2.9.2.1.4.2.5.4.5.7.2 1.9-.7 3 1.7-1.5 3.1-3.2 4.4-4.9 1.4-2 2.6-4.2 3.5-6.6 1.6-4 2.6-8.4 2.9-13.1.1-2 .1-4.1 0-6.1 0-.3 0-.7-.1-1v-.4l-.1-1.2V66.3v0-.1-.4-.3c0-2 .2-3.8.7-5.4.3-.9.7-1.8 1-2.4.4-.8.8-1.5 1.3-2.3.5-.7 1-1.5 1.5-2.2.5-.6 1-1.2 1.6-1.9.4.7 1 1.3 1.8 1.7.5.2 1.1.4 1.7.4.4 0 .8-.1 1.2-.2l4.4-1.4c1-.3 1.8-1 2.3-2 .5-.9.6-2 .2-3l-.2-.7c-.4.1-.7.2-1.1.2l.3.8c.5 1.5-.3 3.1-1.8 3.6l-4.4 1.4c-.3.1-.6.1-.9.1-1 0-2-.6-2.5-1.5-.3.1-.6.1-.8 0-.1-
.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.6-1.8c-.3.1-.5.1-.8-.1-.1-.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.6-1.8c-.3.1-.5.1-.8-.1-.1-.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.6-1.8c-.3.1-.5.1-.8-.1-.1-.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.4-1.2 2.9-1 5.2-1.7 1.6-.5.4 1.1c.4-.1.8 0 1.1.3.3.4.3.9.1 1.2.2-.1.3-.1.5-.2l-.3-.9-.6-2 3.2-1.1c.9-.3 1.6-.9 2-1.7.4-.8.5-1.7.2-2.6l-1.6-4.8c-.6-1.8-2.5-2.7-4.3-2.2l-3.2 1.1-2.5-7.5 3.2-1.1c.9-.3 1.6-.9 2-1.7.1-.2.2-.4.2-.6.1-.2.1-.4.1-.6 0-.4 0-.9-.2-1.3l-1.6-4.8c-.3-.9-.9-1.6-1.7-2-.8-.4-1.7-.5-2.6-.2l-18.3 6c-1.8.6-2.7 2.5-2.2 4.3l1.6 4.8c.3.9.9 1.6 1.7 2 .5.2 1 .4 1.5.4.4 0 .7-.1 1.1-.2l3.2-1.1 2.5 7.5-3.2 1.1c-.9.3-1.6.9-2 1.7-.4.8-.5 1.7-.2 2.6l1.6 4.8c.3.9.9 1.6 1.7 2 .4.2.9.3 1.4.3h.2c.3 1.9.6 1.8 1 1.7zm14.9-16.2c1.2-.4 2.5.3 2.9 1.5l1.6 4.8c.2.6.1 1.2-.1 1.7-.3.5-.7.9-1.3 1.1l-2.8.9-3-9.2 2.7-.8zm-6.2-18.8c.6-.2 1.2-.1 1.7.1.5.3.9.7 1.1 1.3l1.6 4.8c.2.6.1 1.2-.1 1.7-.3.5-.7.9-1.3 1.1l-2.8.9-3-9.2 2.8-.7zm-11.7 14.6l-3.4 1.1c-1.5.5-3.
1-.3-3.6-1.8l-1.6-4.8c-.5-1.5.3-3.1 1.8-3.6l3.4-1.1.2.5 11-3.6 3 9.2-11 3.6.2.5zm2.2 6.8c-.4-.4-.3-1.1.1-1.5l.3-.3-.6-1.8c-.3.1-.5.1-.8-.1-.1-.1-.2-.1-.3-.3-.4-.4-.3-1.1.1-1.5l.3-.3-.3-1 2.5-.8 5.2-1.7 2-.7.3.9c.4-.1.8 0 1.1.3.4.4.3 1.1-.1 1.5l-.3.3.6 1.8c.4-.1.8 0 1.1.3.4.4.3 1.1-.1 1.5l-.3.3.2.8-1.9.6L164 25l-2.7.9-.2-.7c-.3.1-.5.1-.8-.1-.1 0-.2-.1-.3-.2zm-3 11.3l-1.6-4.8c-.5-1.5.3-3.1 1.8-3.6l3.4-1.1.2.5 11-3.6 3 9.2-11 3.6.2.5-3.4 1.1c-1.5.5-3.1-.3-3.6-1.8z" fill="url(#ac)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M164 36.9l-.2-.5-3-9.2-.2-.5-3.4 1.1c-1.5.5-2.3 2.1-1.8 3.6l1.6 4.8c.5 1.5 2.1 2.3 3.6 1.8l3.4-1.1z" fill="url(#ad)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M154.4 7.9L151 9c-1.5.5-2.3 2.1-1.8 3.6l1.6 4.8c.5 1.5 2.1 2.3 3.6 1.8l3.4-1.1-.2-.5-3-9.2-.2-.5z" fill="url(#ae)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M253.5 27.7c.6-.2 1-.6 1.3-1.1.3-.5.3-1.2.1-1.7l-1.6-4.8c-.2-.6-.6-1-1.1-1.3-.5-.3-1.2-.3-1.7-.1l-2.8.9 3
9.2 2.8-1.1zM259.7 46.5c.6-.2 1-.6 1.3-1.1.3-.5.3-1.2.1-1.7l-1.6-4.8c-.4-1.2-1.7-1.8-2.9-1.5l-2.8.9 3 9.2 2.9-1z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M190.7 121.8c0-.2-.1-.4-.2-.6-.1-.3-.3-.5-.5-.7l-3.2-2.6c-.1-.1-.2-.1-.3-.2-.1-.1-.3-.1-.4-.2-.2-.1-.4-.1-.7-.1h-.2c-.4.1-.8.3-1.1.7l-2.2 2.7-.4-.4c-.9-.7-1.9-1.2-3-1.5-3-.8-6.3.2-8.7 2.5 1.8-.1 3.8.3 5.5 1.3.8-.2 1.5-.2 2.3 0 .6.1 1.1.4 1.5.8 1.5 1.2 1.9 3.4 1.1 5.5-.3.7-.8 1.4-1.5 2.3-.8.7-1.7 1.3-2.6 1.6-.9.3-1.8.3-2.6.1-.1 0-.1-.1-.2-.1-.5-.2-.9-.4-1.3-.7-.2-.2-.4-.3-.5-.5-.8 0-1.6 0-2.3-.1.1 0 .2.1.3.1.3.1.5.4.4.7-.1.2-.3.4-.5.4h-.1c-.7-.2-1.3-.4-1.9-.6l.6 1.2c-1.1-.3-2.9 0-4.3.8-1.9 1.1-3 2.9-2.4 3.9l.3.3c.8.7 2.6.6 4.3-.4 1.5-.9 2.9-2.2 3.1-3.2.2.2.4.4.6.5.3.2.5.4.8.6.7.4 1.4.7 2.2.9.1 0 .3 0 .4.1 3.3.7 6.9-.6 9.2-3.5.2-.2.3-.4.5-.7l3-3.7 4.6-5.6c.3-.6.5-1.1.4-1.6z" fill="url(#af)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M126.4 68.5l-.1-.1c-.2-.3-.5-.6-.8-.7-.2-.1-.3-.1-.5-.1h-.2l-.1-.1c-7.8-4.7-17.8
-11.7-21.3-17.9-.2-.5-.4-.9-.6-1.2-.5-.8-1.1-1.3-1.8-1.6-1.9-.8-4.5.3-7.3 3-2.9 2.8-5.5 7-7.5 11.8-3.9 9.7-3.8 19.3.3 20.9 1.2.5 2.7.3 4.3-.7l.1-.1c6.9-1.7 18.4.3 26.8 2.2h.2l.1.2c.2.2.4.4.6.5.4.2.8.1 1.3-.1l.2-.1h.2c.2.1.4.1.6.2 1.8-1.1 3.8-3.7 5.1-7 1.4-3.5 1.8-6.8 1.1-8.8-.2-.1-.4-.3-.7-.4v.1zm-23.7-6.6s0 .1 0 0c-.1.6-.3 1.2-.4 1.7 0 .1 0 .2-.1.3-.1.5-.3 1-.5 1.5 0 .1-.1.2-.1.3-.2.6-.4 1.2-.7 1.8-.2.6-.5 1.1-.7 1.7 0 .1-.1.2-.1.3-.3.5-.5 1-.8 1.5-2.9 5.3-6.6 8.7-9.6 8.7-.5 0-.9-.1-1.4-.3-1.9-.8-3-3.1-3-6.4-.1-3.2.7-7.1 2.3-11 1.6-3.9 3.7-7.2 6-9.5 2.4-2.4 4.8-3.3 6.7-2.5 2.8 1.2 3.7 6 2.4 11.9z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M39.9 69.8c-.2-.1-.4-.1-.6-.2h-.2l-.2.1c-.5.2-1 .2-1.3.1-.2-.1-.4-.3-.6-.5l-.1-.2h-.2c-8.4-1.9-19.9-3.8-26.8-2.2l-.1.1c-1.6.9-3.1 1.1-4.3.7-4.1-1.7-4.2-11.2-.3-20.9 2-4.8 4.6-9 7.5-11.8 2.7-2.6 5.4-3.7 7.3-3 .7.3 1.3.8 1.8 1.6.2.3.4.7.6 1.2 3.5 6.2 13.5 13.1 21.3 17.9l.1.1h.2c.2 0 .4 0 .5.1.3.1.5.3.8.7l.1.1.1.1c.2.1.5.3.7.4-.3-.9-.7-1.5-1.4-1.8
l1.9.8c-.2-.1-.3-.2-.5-.3-.3-.5-.7-.8-1.2-1-.2-.1-.5-.2-.8-.2-6.3-3.8-17.2-11.2-20.8-17.3-.2-.5-.4-.9-.7-1.3-.6-1-1.4-1.6-2.3-2-2.4-1-5.4.2-8.5 3.2-3 2.9-5.7 7.2-7.8 12.2C-.2 57.1.2 66.9 5 68.9c1.5.6 3.3.4 5.2-.7 6.6-1.6 17.8.3 26 2.1.3.3.6.5.9.7.5.2 1.1.2 1.7.1l-1.5-.6c.9 0 1.7-.2 2.6-.7z" fill="url(#ag)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M133.7 88l2.5 1c1.1.5 3.4-1.5 4.9-5.1 1.5-3.6 1.2-6.6.1-7.1l-2.5-1c0 1.9-.5 4.2-1.4 6.5-1 2.4-2.3 4.4-3.6 5.7z" fill="#F9F9FA" fill-rule="nonzero"/><path d="M19.3 35c-1.9-.8-4.2.1-6.7 2.5-2.3 2.3-4.5 5.6-6 9.5-1.6 3.9-2.4 7.8-2.3 11 .1 3.4 1.2 5.7 3 6.4.4.2.9.3 1.4.3 3 0 6.8-3.4 9.6-8.7.3-.5.5-1 .8-1.5.1-.1.1-.2.1-.3.3-.5.5-1.1.7-1.7.2-.6.5-1.2.7-1.8 0-.1.1-.2.1-.3.2-.5.3-1 .5-1.5 0-.1 0-.2.1-.3.2-.6.3-1.1.4-1.7v-.1c1.3-5.8.4-10.6-2.4-11.8zm1.6 10.3c-.4 2.2-1 4.5-1.9 6.8-.9 2.3-2.1 4.4-3.3 6.2h-.1c-.9-.4-1.1-3.3.5-7.4.7-1.8 1.7-3.4 2.7-4.5.7-.8 1.4-1.2 1.9-1.2l.2.1c-.1-.1 0-.1 0 0z" fill="url(#ah)" fill-rule="nonzero" tran
sform="translate(81 15)"/><path d="M18.7 46.4c-1 1.1-2 2.7-2.7 4.5-1.6 4-1.4 7-.5 7.4h.1c1.3-1.8 2.4-4 3.3-6.2.9-2.3 1.6-4.6 1.9-6.8H20.5c-.4-.1-1.1.3-1.8 1.1z" fill="url(#ai)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M43.6 77.3c0-.1.1-.3.1-.4.1-.3.3-.5.6-.5.1 0 .2.1.3.2.2-.3.5-.5.7-.7.4-.5.8-.8 1.1-1.1.1-.1.3-.2.3-.2.1-.1.1-.1.2-.1s0 0 .1-.1H47.9c.2.1.3.1.5.1l.2.1c.9.4 2 0 3.2-.9.3-.2.6-.5.9-.8 1.3-1.3 2.6-3.3 3.5-5.7 1-2.4 1.4-4.7 1.4-6.5 0-.4 0-.9-.1-1.2-.2-1.4-.7-2.5-1.6-2.8l-1.8-.7-2.2-.9-1.9-.8-.8-.3-2.8-1.1-1.9-.8c.7.3 1.1.9 1.4 1.8.6 2 .3 5.4-1.1 8.8-1.3 3.3-3.3 5.9-5.1 7-.9.6-1.8.7-2.5.4l1.5.6h.1c-.1.2-.3.3-.4.5-.1.1-.2.2-.2.3 2.5 1.1 4.9 3.4 5.4 5.8z" fill="url(#aj)" fill-rule="nonzero" transform="translate(81 15)"/><g fill-rule="nonzero"><path d="M283.2 146.6l-6.8.9-5.3-38.5c-.4-3.1 1.6-6 4.7-6.7.2-.1.5.1.5.4l6.9 43.9z" fill="#C8C8CC"/><path d="M292.8 107.4c.2-.2.5-.2.6 0 2.1 2.3 2.1 5.9-.1 8.2L266.8 144l-5-4.7 31-31.9z" fill="#E1E1E6"/><path d="M.9 10.6
c-.1 2.6.8 4.9 2.6 6.5.9.8 1.9 1.4 3 1.8 3.5 1.2 7.5 0 10.2-2.9l.6-.6 8.6-9.2c.4-.4.6-.9.5-1.4 0-.5-.2-1-.6-1.4L22.7.5c-.2-.2-.5-.4-.7-.4-.2-.1-.5-.1-.7-.1-.5 0-1 .2-1.4.6l-2.5 2.6-.4-.4c-.9-.8-1.9-1.4-3-1.8C10.5-.2 6.5 1 3.8 3.9 2 5.7 1 8.1.9 10.6zm5.8-4c1.6-1.7 4.1-2.5 6-1.8.6.2 1.1.5 1.5.9 1.5 1.4 1.7 3.7.8 5.8-.4.7-.9 1.5-1.7 2.3-1.6 1.4-3.8 2-5.5 1.4-.6-.2-1.1-.5-1.5-.9-.9-.9-1.4-2.1-1.3-3.5 0-1.5.6-3 1.7-4.2z" transform="translate(246 133)" fill="url(#ak)"/><path d="M.7 3.7l1.7 12.5c0 .3 0 .6.1.9C3 21 5.6 24.2 9 25.3c1.2.4 2.4.5 3.7.3 4.9-.7 8.2-5.6 7.5-11-.5-3.9-3.1-7.1-6.5-8.2-1.2-.4-2.4-.5-3.7-.3-.2 0-.4.1-.6.1l-.5-3.6c-.1-.8-.7-1.4-1.4-1.6-.3-.1-.6-.1-.9-.1l-4.2.6c-.5.1-1 .4-1.3.8-.3.3-.5.8-.4 1.4zm11.7 6.5c2 .6 3.4 2.6 3.7 4.9.4 3.2-1.4 6.1-4 6.4-.6.1-1.3 0-1.9-.2-1.8-.6-3.1-2.2-3.6-4.3v-.1c-.1-1.1-.2-2-.1-2.8.4-2.2 2-4 4-4.2.6 0 1.3.1 1.9.3z" transform="translate(274 137)" fill="url(#al)"/><path d="M277.1 126c1.2 0 2.3.9 2.3 2.2 0 1.2-.9 2.3-2.2 2.3-1.3 0-2.3-.9-2.3-2.2
0-1.2.9-2.2 2.2-2.3z" fill="#C8C8CC"/></g><path d="M36.2 88.9s.1 0 0 0l.2-.2.1-.1c.1-.2.3-.4.5-.6.2-.3.5-.7.8-1.2.3-.5.5-1 .7-1.5.2-.5.4-1.1.6-1.7 0 0 0-.1.1-.1.1-.2.2-.5.3-.7 0-.1.1-.1.1-.2h-.4c-1.4 0-2.8-.4-4.1-.7-1.1-.3-2-.8-2.8-1.3-.1.2-.1.4-.2.6-.1.4-.2.7-.3 1-.1.3-.2.6-.2.9-.1.3-.1.7-.2 1 0 .2-.1.4-.1.6v2.6c.1.7.5 1.3 1 1.7.6.5 1.4.8 2.3.6.1 0 .2-.1.3-.1.2-.1.4-.1.6-.2.4-.1.6-.3.7-.4z" fill="url(#am)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M176.3 36.6c-1.7.6-3.4 1.7-4.5 3 .2.2.2.4.1.6 0 0-1 2-.2 3.7.5 1.2 1.8 2 3.8 2.5.3.1.5.4.4.7-.1.3-.3.4-.5.4h-.1c-.1 0-.1 0-.2-.1l-4.8 4.1c-.1.1-.2.1-.3.2.5.9 1.5 1.5 2.5 1.5.3 0 .6 0 .9-.1l4.4-1.4c1.5-.5 2.3-2.1 1.8-3.6l-.3-.8c.4-.1.7-.1 1.1-.2.7-.2 1.4-.5 2-.9 3.7-2.4 3.3-8.5-2-10.3-.6-.2-1.8-.1-3.1.3-.2 0-.3.1-.5.2s-.3.1-.5.2z" fill="url(#an)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M166.8 122.9s-2.6 2.9-1.9 5.4c.4 1.4 1.8 2.5 4.2 3.2.7.1 1.5.1 2.3.1h.1c.9 0 1.7-.1 2.5-.3 1-.2 2-.6 2.7-1.2.5-.4.9-.9 1
.2-1.5 1-2.6-.4-4.6-2.6-5.8-1.6-.9-3.7-1.4-5.5-1.3-.7 0-1.4.2-2 .4-.3.1-.6.3-1 .6.1.1.1.3 0 .4z" fill="url(#ao)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M35.5 80.8c2.9.9 4.8.9 6.1.1 1-.6 1.7-1.8 2-3.6-.5-2.4-2.8-4.7-5.3-5.7-.8-.3-1.6-.6-2.3-.6-1.5-.1-4.1 1-5.2 3 .2.1.3.4.2.6-.1.2-1.2 4.5 4.5 6.2z" fill="url(#ap)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M6.9 125.8s-.1 2.1 1.4 3.3c1.2 1 3.1 1.2 5.6.7 1.7-.4 3.9-1.5 4.9-3.3.6-1 .7-2.2.3-3.4-.1-.2 0-.4.2-.6-.3-.5-.8-.9-1.3-1.2l-1.2-.6-.4-3.7c1.5-.7 2.7-1.7 3.7-2.9 1.7-2.1 2.6-4.8 2.3-7.6-.4-3.8-2.7-6.8-5.9-8.3l.8 7.7c0 .4-.1.8-.3 1.1-.3.3-.6.5-1 .6l-3.6.4-2 .2h-.2c-.8 0-1.5-.6-1.5-1.4l-.8-7.7c-.7.5-1.3 1.1-1.8 1.7-1.7 2.1-2.6 4.8-2.3 7.6.5 4.5 3.7 8 7.8 9.1l.3 2.9c-1.1.2-2.1.5-2.9 1-.2.1-.3.2-.5.3-.8.6-1.7 2-2 3.5.3.2.4.4.4.6z" fill="url(#aq)" fill-rule="nonzero" transform="translate(81 15)"/><path d="M170.9 39.7c0 .1-.4.9-.6 2-.1.6-.1 1.3.1 2 .1.2.1.4.2.7.2.4.5.8.8 1.2.4.4.8.7 1.3 1 .6.4 1.3.6 2.2.
9.1 0 .1 0 .2.1h.1c.3 0 .5-.2.5-.4.1-.3-.1-.6-.4-.7-1.9-.5-3.2-1.3-3.8-2.5-.8-1.7.2-3.7.2-3.7.1-.2.1-.5-.1-.6 0 0-.1-.1-.2-.1 0-.3-.3-.2-.5.1z" fill="url(#ar)" fill-rule="nonzero" transform="translate(81 15)"/></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_customize.svg b/browser/extensions/onboarding/content/img/figure_customize.svg
new file mode 100644
index 000000000000..0c0cb30df5dc
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_customize.svg
@@ -0,0 +1,561 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="295" height="238">
+ <defs>
+ <linearGradient id="a" x1="-678.179817%" x2="218.03211%" y1="-1879.5122%" y2="503.09878%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="b" x1="-2438.15968%" x2="713.035484%" y1="-2346.83281%" y2="705.8875%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="c" x1="-1876.47349%" x2="477.431325%" y1="-2215.7169%" y2="536.030986%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="d" x1="-300.502319%" x2="326.878731%" y1="-277.869139%" y2="301.876261%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="e" x1="-556.386842%" x2="471.897895%" y1="-1050.94952%" y2="809.757143%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="f" x1="-2301.11875%" x2="1769.175%" y1="-4460.38%" y2="3354.584%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="g" x1="-14090.38%" x2="5447.03%" y1="-14085.94%" y2="5451.47%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="h" x1="-1245.88053%" x2="483.093805%" y1="-2962.82857%" y2="1024.39796%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="i" x1="-4762.32308%" x2="1072.27051%" y1="-2525.31233%" y2="591.799315%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="j" x1="-419.785061%" x2="175.867683%" y1="-263.047589%" y2="146.541719%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="k" x1="-13945.16%" x2="5592.25%" y1="-13931.16%" y2="5606.26%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="l" x1="-93.8791876%" x2="171.036409%" y1="-368.29%" y2="383.149231%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="m" x1="-105.119971%" x2="175.589943%" y1="-106.702736%" y2="160.566895%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="n" x1="-4526.45652%" x2="3968.06957%" y1="-3864.98889%" y2="3371.08889%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="o" x1="-1590.58053%" x2="2387.43252%" y1="-835.835705%" y2="1325.72397%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="p" x1="-1174.27536%" x2="1657.23333%" y1="-1275.87873%" y2="1781.26242%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="q" x1="-8557.56%" x2="10979.85%" y1="-4234.38%" y2="5534.325%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="r" x1="-949.737079%" x2="1245.47865%" y1="-1023.81277%" y2="1336.75514%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="s" x1="-850.555238%" x2="1010.15048%" y1="-759.279881%" y2="912.10717%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="t" x1="-2526.775%" x2="962.048214%" y1="-2513.94763%" y2="949.261152%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="u" x1="-953.117868%" x2="406.88755%" y1="-1083.71008%" y2="471.112383%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="v" x1="-1736.94827%" x2="671.463404%" y1="-2238.58822%" y2="855.656147%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="w" x1="-9592.54%" x2="9944.87%" y1="-9613.77%" y2="9923.64%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="x" x1="-546.9251%" x2="669.232184%" y1="-637.97868%" y2="716.339388%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="y" x1="-2626.25%" x2="2515.17368%" y1="-10166.57%" y2="9370.85%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="z" x1="-26076.58%" x2="9092.02%" y1="-26064.58%" y2="9104.02%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="A" x1="-11996.8348%" x2="3293.86087%" y1="-4084.84179%" y2="1164.20299%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="B" x1="-1988.44219%" x2="759.104687%" y1="-1576.81875%" y2="621.219375%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="C" x1="-4889.30185%" x2="1623.40185%" y1="-2351.25495%" y2="817.087387%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="D" x1="-2655.5559%" x2="951.48%" y1="-6714.61282%" y2="2302.97692%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="E" x1="-11418.996%" x2="2648.448%" y1="-28603.67%" y2="6564.93%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="F" x1="-1067.54883%" x2="792.163033%" y1="-899.682353%" y2="691.657014%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="G" x1="-3245.82558%" x2="2272.05861%" y1="-2753.32267%" y2="1935.824%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="H" x1="-835.133806%" x2="827.684161%" y1="-835.133806%" y2="827.684161%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="I" x1="-4541.82131%" x2="1223.52295%" y1="-2322.54576%" y2="657.84322%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="J" x1="-2057.47051%" x2="889.742903%" y1="-1738.77914%" y2="791.335971%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="K" x1="-1278.62667%" x2="1189.34526%" y1="-1278.9986%" y2="1188.97333%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="L" x1="-6112.0075%" x2="2680.1425%" y1="-6270.03333%" y2="2747.55641%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="M" x1="-1115.93023%" x2="572.391158%" y1="-1175.6355%" y2="582.7945%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="N" x1="-9656.07586%" x2="2471.02759%" y1="-9322.84667%" y2="2400.02%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="O" x1="-7887.73698%" x2="3321.17237%" y1="-6188.2325%" y2="2603.9175%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="P" x1="-984.783738%" x2="288.77261%" y1="-1902.68288%" y2="506.125342%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="Q" x1="-2522.67732%" x2="1102.95155%" y1="-5039.01837%" y2="2138.24694%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="R" x1="-5921.7225%" x2="2870.4275%" y1="-6075.45385%" y2="2942.1359%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="S" x1="-5881.53%" x2="2910.62%" y1="-5881.26%" y2="2910.89%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="T" x1="-5841.3375%" x2="2950.8125%" y1="-5841.4525%" y2="2950.6975%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="U" x1="-7423.23691%" x2="3785.67244%" y1="-5801.6425%" y2="2990.5075%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="V" x1="-4020.34%" x2="1003.74571%" y1="-2527.16182%" y2="669.983636%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="W" x1="-4517.96032%" x2="1064.35714%" y1="-5480.38654%" y2="1282.80577%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="X" x1="-3834.66828%" x2="2163.11753%" y1="-3992.49299%" y2="2248.99581%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="Y" x1="-132.800878%" x2="141.123835%" y1="-126.933901%" y2="145.268963%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="Z" x1="-8624.4%" x2="10913.01%" y1="-4751.06111%" y2="6103.05556%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aa" x1="-20576.83%" x2="14591.77%" y1="-11391.2944%" y2="8146.81667%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ab" x1="-3210.85073%" x2="1716.38147%" y1="-3721.57455%" y2="1963.19067%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ac" x1="-964.539164%" x2="305.324758%" y1="-1877.16986%" y2="531.638356%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ad" x1="-5971.9075%" x2="2820.24%" y1="-7463.6%" y2="3526.5875%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ae" x1="-3626.20024%" x2="2128.73795%" y1="-3780.54791%" y2="2217.23789%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="af" x1="-3545.17742%" x2="2127.17742%" y1="-3793.28448%" y2="2270.26724%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ag" x1="-8571.16538%" x2="4955.21923%" y1="-4812.20217%" y2="2833.14565%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ah" x1="-921.592388%" x2="295.314187%" y1="-948.070803%" y2="335.454745%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ai" x1="-1521.4596%" x2="706.721231%" y1="-1247.46875%" y2="591.922626%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aj" x1="-678.258824%" x2="423.307164%" y1="-682.475952%" y2="429.068947%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ak" x1="-6036.96%" x2="2755.19%" y1="-6038.3275%" y2="2753.82%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="al" x1="-876.033667%" x2="359.821607%" y1="-805.490909%" y2="336.346753%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="am" x1="-6523.57663%" x2="4813.74946%" y1="-5038.58141%" y2="3749.13318%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="an" x1="-2645.94937%" x2="963.166315%" y1="-6683.46667%" y2="2334.12564%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ao" x1="-6631.98345%" x2="4705.34265%" y1="-5121.96932%" y2="3665.74527%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ap" x1="-1435.66843%" x2="1068.42563%" y1="-2846.04456%" y2="2010.54343%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aq" x1="-2633.78646%" x2="975.329221%" y1="-6654.88205%" y2="2362.70769%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ar" x1="-2206.3925%" x2="2189.6825%" y1="-2444.83034%" y2="2406.01103%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="as" x1="-5385.00363%" x2="1874.66412%" y1="-10484.884%" y2="3582.556%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="at" x1="-2391.91311%" x2="1397.1783%" y1="-5593.4125%" y2="3198.7375%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="au" x1="-2264.71662%" x2="1521.15732%" y1="-5306.3925%" y2="3485.7575%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="av" x1="-8124.26538%" x2="5402.11923%" y1="-4560.45%" y2="3084.89783%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aw" x1="-651.882139%" x2="479.56521%" y1="-1403.71323%" y2="934.962067%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ax" x1="-782.651586%" x2="579.099454%" y1="-1688.18577%" y2="1133.37245%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ay" x1="-2808.00445%" x2="930.963547%" y1="-4874.39455%" y2="1519.89636%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="az" x1="-3080.27111%" x2="827.351111%" y1="-4651.45333%" y2="1209.98%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aA" x1="-17842.03%" x2="17326.57%" y1="-17824.13%" y2="17344.47%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aB" x1="-4927.80617%" x2="7466.4141%" y1="-2177.67416%" y2="3371.61183%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aC" x1="-20583.89%" x2="14584.71%" y1="-5842.07714%" y2="4206.09429%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aD" x1="-13953.96%" x2="21214.64%" y1="-2172.57143%" y2="3409.74603%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aE" x1="-13796.3%" x2="21372.3%" y1="-1986.00882%" y2="3185.84412%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aF" x1="-13888.17%" x2="21280.43%" y1="-2353.96379%" y2="3709.58793%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aG" x1="-9372.00909%" x2="6613.71818%" y1="-2958.36812%" y2="2138.53043%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aH" x1="-16384.5222%" x2="12067.4729%" y1="-4573.9%" y2="3418.96364%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aI" x1="-17462.5%" x2="5983.23333%" y1="-13777.5842%" y2="4732.21053%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aJ" x1="-7480.69%" x2="7500.95%" y1="-7483.33%" y2="7498.32%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aK" x1="-7021.27187%" x2="3968.91562%" y1="-20520.9909%" y2="11450.4636%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aL" x1="-9826.0913%" x2="5464.60435%" y1="-22671.15%" y2="12497.45%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aM" x1="-2964.13075%" x2="2873.3758%" y1="-3993.57709%" y2="3854.15587%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aN" x1="-2330.22879%" x2="2205.28384%" y1="-2914.60952%" y2="2667.70794%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aO" x1="-1407.98283%" x2="1424.97017%" y1="-1728.51863%" y2="1719.38333%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aP" x1="-1807.9102%" x2="1780.72245%" y1="-2740.56%" y2="2669.99385%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aQ" x1="-1472.82%" x2="1783.415%" y1="-4365.0426%" y2="5068.41814%">
+ <stop stop-color="#FFFBCC" offset="0%"/>
+ <stop stop-color="#FFC9D5" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aR" x1="-511.087979%" x2="436.292949%" y1="-431.133333%" y2="359.905%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aS" x1="-2336.83483%" x2="1396.15506%" y1="-7055.5%" y2="4019.03333%">
+ <stop stop-color="#FFE900" offset="18.75%"/>
+ <stop stop-color="#FF0039" offset="100%"/>
+ </linearGradient>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <path d="M149.5 168.5c-.1 0-.1.1-.2.1l-3.3 1.5c-.2.1-.3.1-.5.2.7.3 1.4.5 2.2.5 1.6 0 3.1-.7 4.2-1.9 1-1.1 1.4-2.5 1.3-4-.1-.9-.3-1.7-.7-2.4l-1.6 4.4c-.3.6-.8 1.2-1.4 1.6zM178.7 206.1c-.1-.1-.2-.3-.2-.4l-2 2.7 3.1 1.1-.8-2.6c-.1-.2-.1-.5-.1-.8zM240.6 207.9h0zM168.5 200.6h-.2c-.2.2-.5.3-.7.4l-2.5.7.2.8c1.1.7 2 1.7 2.5 2.9l1 .4 3.7-5c.9-1.2 2.2-1.9 3.7-2l-.1-.3-2.5.7c-.2.1-.4.1-.6.1h-.2c-.2.2-.5.3-.7.4l-3.1.9c-.1-.1-.3 0-.5 0zM146.9 159.8c.1.1.2.1.3.2 0-.1.1-.2.1-.3-.1 0-.2 0-.4.1zM143.3 112.9c.2-.3.4-.6.7-.8l4.4-2.8-.1-.1-4.2 2.7c-.3.2-.6.6-.8 1zM142.2 166c.3-.5.7-1 1.3-1.2h.1l.2-.1-1.9-.7c.2.4.2.8.2 1.3 0 .2.1.4.1.7zM200.9 117.6c-1.9 0-3.2 1-3.9 1.7.7-.7 2-1.7 3.9-1.7zM206.8 158.8c-.1 0-.1.1-.2.1.1 0 .1 0 .2-.1zM174.5 190.8c.2-.1.4-.1.6-.1h.2c.2-.2.5-.3.7-.4.5-.2 1-.2 1.6-.2 2.4 0 4.5 1.5 5.2 3.9.1.3.1.5.1.8.2.2.3.5.4.7l.9 3.1c.1.3.1.5.1.8.2.2.3.5.4.7l.3 1.1c.3.2.6.4.9.7-1.7-3.9-2.3-8.6-1.6-13.7-1.1.2-2.3.3-3.5.3-3.4 0-6.8-1-9.7-2.8-.7-.5-1.4-1-2.1-1.6 1.7 2.3 3.5 4.6 5.3 6.7h.2z
M143.4 119.9c-1.1-.3-2-.8-2.8-1.6l-.7.5v.1l.7-.4c.8.7 1.7 1.2 2.8 1.4.4.2.9.2 1.3.2 1.4 0 2.7-.5 3.8-1.3-1.1.8-2.4 1.3-3.7 1.3-.5 0-.9-.1-1.4-.2zM198.7 120.8c.4-.4 1.2-.9 2.2-.9-1 0-1.8.5-2.2.9zM213.3 214.1c-1 0-2 0-3-.1 1.2 4.1 1.9 6.8 2.2 8.8 3.2-.1 6.5-.2 9.9-.2-.1-1.7-.1-3.8-.1-6.6l-7-2c-.6.1-1.3.1-2 .1zM275.4 138.9l.9-.3c-.1-.7.1-1.4.4-2.1-1.5 2-3.5 3.6-5.8 4.5.1 0 .1.1.2.1.2-.2.5-.3.7-.4 1.1-.7 2.4-1.3 3.6-1.8zM139.9 151.5c.5-.3 1.1-.5 1.7-.5.3 0 .7.1 1 .2.7.3 1.3.8 1.6 1.5.1.1.1.3.1.4 1-.3 2-.4 3-.4-2.2-4.2-4.8-9.7-7.4-15.2v14z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M227.5 226.4c.1.1.1.1.2.1 0 0-.1 0-.2-.1z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M228.2 231c-1.2 0-2.4-.4-3.4-1.2-1.3-1.1-2.1-2-2.4-7.2-3.4 0-6.7.1-9.9.2.6 3.3.2 4.4-.7 5.6-1 1.4-2.6 2.2-4.3 2.2-2.9 0-5.3-2.1-9.6-7-15.1 1.3-25.3 3.8-25.3 6.6 0 4.3 23.1 7.7 51.6 7.7s51.6-3.4 51.6-7.7c0-3.6-16.7-6.7-39.3-7.5-2.3 5.7-5.1 8.3-8.3 8.3z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M158.9 75.5h13.4c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-13.4c-.3 0-.6.2-.6.6.1.4.3.6.6.6zM155.4 85.7c0-.3-.2-.6-.6-.6h-13.4c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h13.4c.3-.1.6-.3.6-.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M134.3 114.7l.6-.4.4-.2c0-.7.1-1.3.2-2 0-.1.1-.2.1-.4-.4-.9-.8-2-1.2-3v6h-.1zM131.8 102.3c-.1-.3 0-.6.3-.7.3-.1.6 0 .7.3l.3.9V67h-13c.7 2.2 1.8 5.2 3.1 8.8.1.3 0 .6-.3.7h-.2c-.2 0-.4-.1-.5-.4-1.3-3.8-2.4-7-3.2-9.2h-3.4c1.1 3.8 3.1 10.1 5.8 18.2l-.1-.5c1.6 4.4 8.9 24.1 11.5 31l.4-.3v-9.5c-.6-1.4-1.1-2.7-1.4-3.5zM121.2 91.2c-3.9-10.9-6.6-19.6-7.9-24.2H7.1v98.7c0 .6 0 .9.1 1 .1 0 .4.1 1 .1h124c.6 0 .9 0 1-.1 0-.1.1-.4.1-1v-38.4l-1.6 1-.4.2c-.3.2-.6.4-1 .6-.6.3-1.2.4-1.9.4h-.2c-2 0-3.8-1.2-4.6-3-1-2.2-.3-4.7 1.5-6 .2-.2.5-.3.7-.5l2.3-1.4 2.7-1.7c-2.5-6.4-7-18.6-9.6-25.7zm-25.6 27.1h-7.1c-.5 2.1-1.4 4-2.6 5.8l5.1 5.1c1.2 1.6 1.2 3.6.1 5.1-.8 1.1-2 1.7-3.4 1.7-.9 0-1.8-.3-2.5-.8L80 130c-1.8 1.1-3.8 1.8-5.8 2.3v7.1c0 2.3-1.9 4.2-4.2 4.2-2.3 0-4.2-1.9-4.2-4.2V132c-2-.4-4-1.2-5.8-2.3l-4.7 5.1c-.2.3-.5.6-.8.8-.7.6-1.6.8-2.5.8-1.3 0-2.6-.6-3.4-1.7-1.4-1.9-1-4.5.8-5.9l5-4.7c-1.1-1.8-1.8-3.7-2.3-5.8H45c-2.3 0-4.2-1.9-4.2-4.2 0-2.3 1.9-4.2 4.2-4.2h7.1c
.4-2.1 1.2-4 2.3-5.8l-5.1-4.7c-.9-.9-1.3-2-1.3-3.2 0-1.2.5-2.3 1.3-3.1.8-.8 2-1.3 3.1-1.3 1.2 0 2.3.5 3.1 1.3l4.7 5.1c1.8-1.1 3.7-1.8 5.8-2.3v-7.1c0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.2 1.9 4.2 4.2v7.1c2.1.4 4 1.2 5.8 2.3l5.1-5.1c.8-.6 1.7-.9 2.6-.9.9 0 1.8.3 2.5.8.9.7 1.5 1.7 1.6 2.8.2 1.1-.1 2.2-.8 3.1l-5.1 5.1c1.1 1.8 1.8 3.8 2.3 5.8h7.1c2.3 0 4.2 1.9 4.2 4.2.2 2.4-1.7 4.3-4.1 4.3zm28.9-11.5c.3-.1.6.1.7.3l1.7 4.7c.1.3-.1.6-.3.7h-.2c-.2 0-.4-.1-.5-.4l-1.7-4.7c-.1-.2.1-.5.3-.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M70.3 103.8c-5.6 0-10.2 4.6-10.2 10.2s4.6 10.2 10.2 10.2 10.2-4.6 10.2-10.2c.1-5.6-4.5-10.2-10.2-10.2zM137.7 124.4l-.9.6.9 2.1v-2.7zM135.3 121.7s0 .1 0 0l2.4-1.5v-.1l-2.4 1.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M134.8 126.3l-.5.3v39.1c0 1.9-.3 2.2-2.2 2.2H8.1c-1.9 0-2.2-.3-2.2-2.2V65.8h107c-.2-.8-.4-1.4-.4-1.8-.1-.6.3-1.2.9-1.3.6-.1 1.2.3 1.3.9.1.4.3 1.2.6 2.2h3.4l-.8-2.4c-.1-.3.1-.6.4-.7.3-.1.6.1.7.4 0 0 .3 1 .9 2.7h14.5v39.7c.6 1.5 1.3 3.1 1.8 4.4.4-.9.9-1.6 1.6-2.3V49.7c0-2.3-1.9-4.2-4.2-4.2H6.8c-2.3 0-4.2 1.9-4.2 4.2v118c0 2 1.8 3.7 3.9 3.7h127.3c1 0 1.9-.4 2.6-.9-.8-1.6-1.2-3.4-1.3-5.3 0-1.5.9-2.7 2.2-3.3-.8-.8-1.1-2-.7-3.1l1.1-2.9v-23.4c-1-2.1-2-4.3-2.9-6.2zm-18.1-73.5c.3-.1.5 0 .6.3l1.9 5.3v.1c.1.3-.1.5-.4.6h-.1c-.2 0-.4-.1-.4-.3l-1.9-5.3c-.1-.4.1-.6.3-.7zm-1.7.4c0-.3.2-.5.5-.5s.5.2.5.5v5.3c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-5.3zm-1.5.5c0-.3.2-.5.5-.5s.5.2.5.5v4.8c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-4.8zm-1.4-1c0-.3.2-.5.5-.5s.5.2.5.5v5.8c0 .3-.2.5-.5.5s-.5-.2-.5-.5v-5.8zm-77.7 2.7c0-1.7 1.4-3.1 3.1-3.1h63.6c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1H37.5c-1.7 0-3.1-1.4-3.1-3.1v-.3zM22 52.7c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3
-2.9-2.9.1-1.6 1.3-2.9 2.9-2.9zm-9.2 0c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9.1-1.6 1.3-2.9 2.9-2.9z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M129.1 125.6c-.1.1-.2.2-.4.2-.2.1-.4.1-.6.1.2 0 .4 0 .6-.1.2 0 .3-.1.4-.2l4.1-2.5v-.1l-4.1 2.6z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M137.7 120.2v.1l2.2-1.5M139 115.8c-.2-.5-.2-1-.3-1.5 0 .5.1 1 .3 1.5z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M133.8 171.4H6.5c-2.2 0-3.9-1.6-3.9-3.7v-118c0-2.3 1.9-4.2 4.2-4.2h126.6c2.3 0 4.2 1.9 4.2 4.2V107.6c.6-.7 1.4-1.3 2.2-1.8V81.2h27.6c.1-.2.2-.4.2-.6 0-.2.3-.2.3 0 .1.2.1.4.2.6h14.5c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1h-42.8V49.7c0-3.6-2.9-6.5-6.5-6.5H6.8c-3.6 0-6.5 2.9-6.5 6.5v118c0 3.3 2.8 5.9 6.1 5.9h127.3c1.4 0 2.7-.5 3.7-1.2-.4-.6-.8-1.3-1.1-1.9-.7.5-1.6.9-2.5.9z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M137.7 127.1l-.9-2.1-1.9 1.2c.9 2 1.9 4.1 2.9 6.3V156l1.2-3.2c.2-.5.6-1 1-1.3v-14.1c2.6 5.5 5.2 11 7.4 15.2h.4c.7 0 1.4.1 2.1.2-3.1-6.1-6.1-12.1-8.7-17.9-.2-.5-.7-1.5-1.2-2.7V123l-2.2 1.4v2.7h-.1z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M134.3 65.8h-14.5c-.6-1.7-.9-2.7-.9-2.7-.1-.3-.4-.4-.7-.4-.3.1-.4.4-.4.7l.8 2.4h-3.4c-.3-1-.5-1.8-.6-2.2-.1-.6-.7-1-1.3-.9-.6.1-1 .7-.9 1.3.1.4.2 1 .4 1.8H6v99.8c0 1.9.3 2.2 2.2 2.2h124c1.9 0 2.2-.3 2.2-2.2v-39.1l-1.1.7v38.4c0 .6 0 .9-.1 1-.1 0-.4.1-1 .1H8.2c-.6 0-.9 0-1-.1 0-.1-.1-.4-.1-1V67h106.2c1.3 4.6 4 13.3 7.9 24.2h.1c2.5 7.2 7.1 19.3 9.6 25.7l2-1.2c-2.7-6.9-9.9-26.7-11.5-31l.1.5c-2.8-8.1-4.7-14.4-5.8-18.2h3.4c.8 2.2 1.8 5.4 3.2 9.2.1.2.3.4.5.4h.2c.3-.1.4-.4.3-.7-1.3-3.6-2.3-6.6-3.1-8.8h13v35.8l-.3-.9c-.1-.3-.4-.4-.7-.3-.3.1-.4.4-.3.7.3.8.8 2.1 1.4 3.5v9.5l.2-.1.9-.6v-6c.4 1.1.8 2.1 1.2 3l.6-1.8c-.5-1.3-1.2-2.9-1.8-4.4V65.8h-.1zM12.8 58.4c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9.1 1.7 1.3 2.9 2.9 2.9zM22 58.4c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9.1 1.7 1.3 2.9 2.9 2.9zM37.5 58.8h63.6c1.7 0 3.1-1.4 3.1-3.1v-.3c0-1.7-1.4-3.1-3.1-3.1H37.5c-1.7 0-3.1 1.4-3.1 3.1v.3c0 1.7 1.4 3.1 3
.1 3.1z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M95.6 109.8h-7.1c-.4-2.1-1.2-4-2.3-5.8l5.1-5.1c.7-.9 1-2 .8-3.1-.2-1.1-.7-2.1-1.6-2.8-.7-.6-1.6-.8-2.5-.8-.9 0-1.8.3-2.6.9l-5.1 5.1c-1.8-1.1-3.7-1.8-5.8-2.3v-7.1c0-2.3-1.9-4.2-4.2-4.2-2.3 0-4.2 1.9-4.2 4.2v7.1c-2.1.4-4 1.2-5.8 2.3l-4.7-5.1c-.8-.8-2-1.3-3.1-1.3-1.2 0-2.3.5-3.1 1.3-.8.8-1.3 2-1.3 3.1 0 1.2.5 2.3 1.3 3.2l5.1 4.7c-1.1 1.8-1.8 3.7-2.3 5.8H45c-2.3 0-4.2 1.9-4.2 4.2 0 2.3 1.9 4.2 4.2 4.2h7.1c.4 2.1 1.2 4 2.3 5.8l-5 4.7c-1.9 1.4-2.2 4.1-.8 5.9.8 1.1 2 1.7 3.4 1.7.9 0 1.8-.3 2.5-.8.3-.2.6-.5.8-.8l4.7-5.1c1.8 1.1 3.7 1.8 5.8 2.3v7.4c0 2.3 1.9 4.2 4.2 4.2 2.3 0 4.2-1.9 4.2-4.2v-7.1c2.1-.4 4-1.2 5.8-2.3l5.1 5.1c.7.6 1.6.8 2.5.8 1.3 0 2.6-.6 3.4-1.7 1.1-1.5 1.1-3.6-.1-5.1l-5.1-5.1c1.2-1.8 2.1-3.7 2.6-5.8h7.1c2.3 0 4.2-1.9 4.2-4.2.2-2.3-1.7-4.2-4.1-4.2zm-25.3 14.5c-5.6 0-10.2-4.6-10.2-10.2s4.6-10.2 10.2-10.2 10.2 4.6 10.2 10.2c.1 5.6-4.5 10.2-10.2 10.2zM115.3 21.3h1.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-1.1c-.3 0-.6.2-.6.6 0 .4.3.6.6.
6zM126.4 21.3h4.5c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-4.5c-.3 0-.6.2-.6.6.1.4.3.6.6.6zM34.1 20.6h13.4c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6H34.1c-.3 0-.6.2-.6.6.1.4.3.6.6.6zM82 8.5c.1.1.3.2.4.2.1 0 .2 0 .3-.1.2-.2.3-.5.1-.8-.7-.9-1.5-1.8-2.3-2.5-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.8.7 1.6 1.5 2.3 2.4zM109.7 21c.1.2.3.3.5.3h.6c.3 0 .6-.2.6-.6 0-.4-.2-.6-.6-.6h-.3c-.2-.4-.6-1.2-1.2-2.1-.2-.3-.5-.3-.8-.2-.3.2-.3.5-.2.8.9 1.3 1.3 2.2 1.4 2.4zM59.6 4.4c.1 0 .2 0 .3-.1 1.6-1.2 3.7-2.1 6.4-2.4 2.1-.3 4-.2 5.9.2.3.1.6-.1.7-.4.1-.3-.1-.6-.4-.7-2-.4-4.1-.5-6.3-.2-2.9.4-5.2 1.3-6.9 2.7-.2.2-.3.5-.1.8 0 0 .2.1.4.1zM91.5 7.8c1.3-.4 2.7-.5 4.3-.2 2.3.4 4.8 1.8 7.2 4.1.1.1.2.2.4.2.1 0 .3-.1.4-.2.2-.2.2-.6 0-.8-2.6-2.5-5.2-3.9-7.7-4.4-1.8-.3-3.4-.3-4.9.2-.3.1-.4.4-.4.7.1.4.4.5.7.4zM84.9 13c.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.3-.7-.1-.3-.3-.6-.5-1-.1-.3-.5-.4-.8-.2-.3.1-.4.5-.2.8.2.3.3.7.5.9zM56.2 14.5c.1 0 .1 0 0 0 .4 0 .6-.3.6-.6 0-.4-.1-.7-.1-1.1 0-.3-.3-.5-.6-.5H56c-.2.1-.4.3-.4.6 0 .4.1.8.1 1.1 0 .1 0 .
1.1.2 0 .2.2.3.4.3zM58.3 20.4c.1-.2.1-.4 0-.5 0 0-.3-.7-.6-1.7-.1-.3-.4-.5-.7-.4-.3.1-.5.4-.4.7.1.4.3.7.4 1h-.7c-.2.1-.4.3-.4.5 0 .3.2.6.6.6H57.9c.2 0 .3-.1.4-.2z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M33.7 25.5h97.9c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1h-22.8c-2-3.7-7.1-11.7-13.4-12.9-8.4-1.6-10 6.7-10 6.7S79.8 2.6 65.8 4.5c-6.5.9-9 4.2-9.8 7.8h.1c.3 0 .6.2.6.5 0 .4.1.7.1 1.1 0 .3-.2.6-.5.6h-.1c-.2 0-.4-.1-.5-.3-.1 1.9.1 3.8.5 5.3H57c-.1-.3-.2-.6-.4-1-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.7.6 1.7.1.2.1.4 0 .5-.1.2-.3.3-.5.3h-1.3c.4 1.5.9 2.5.9 2.7H33.7c-.6 0-1.1.5-1.1 1.1 0 .5.5 1 1.1 1z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M205.5 42.3c.1 0 .3-.1.4-.2.6-.7 1.5-1.1 2.6-1.4.3-.1.5-.4.4-.7-.1-.3-.4-.5-.7-.4-1.3.4-2.4.9-3.1 1.7-.2.2-.2.6 0 .8.1.2.3.2.4.2zM212.7 40.5c.4.1.7.2 1 .3h.2c.2 0 .5-.1.5-.4.1-.3-.1-.6-.4-.7-.4-.1-.8-.2-1.1-.3-.3-.1-.6.1-.7.4 0 .4.2.7.5.7zM238.3 50.7h3.3c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-3.3c-.3 0-.6.2-.6.6 0 .4.3.6.6.6zM221.2 46.7c.3-1 1.2-3.2 3.8-3.2.3 0 .7 0 1 .1 1.6.3 3.2 1.3 4.8 3 .2.2.6.2.8 0 .2-.2.2-.6 0-.8-1.8-1.9-3.6-3-5.4-3.4-.4-.1-.8-.1-1.2-.1-3.5 0-4.6 3-4.9 4-.1.3.1.6.4.7h.2c.1 0 .2 0 .3-.1.1.1.2 0 .2-.2zM205.5 50.6c.1-.2.1-.4 0-.5l-.1-.1c-.1-.3-.4-.4-.7-.3-.1 0-.1.1-.2.1h-12.7c-.3 0-.6.2-.6.6 0 .3.2.6.6.6H205c.2-.1.4-.2.5-.4z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M191.7 54.6h54.4c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1h-12.9c-1.1-2.1-3.9-6.5-7.4-7.2-2.4-.5-3.8.5-4.6 1.6 0 .1-.1.2-.2.3-.6 1-.8 1.9-.8 1.9s-3.1-8-10.9-7c-5.7.8-6 5-5.4 7.8h.7s.1-.1.2-.1c.3-.1.6 0 .7.3l.1.1c.1.2.1.4 0 .5-.1.2-.3.3-.5.3h-.9c.2.9.5 1.4.5 1.5h-13.2.2c-.6 0-1.1.5-1.1 1.1-.1.6.4 1.1 1.1 1.1z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M107.4 231.1c-4 0-5.8-2.5-6.2-4.6l-.1-.5c-7 .5-12.1 2.1-12.1 4 0 2.3 7.3 4.1 16.3 4.1s16.3-1.8 16.3-4.1c0-1.4-2.7-2.6-6.7-3.3-.2.7-.6 1.3-1 1.9-2 2.4-5.7 2.5-6.5 2.5z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M227.3 225.7c-.1-.3-.1-.6-.1-1 0 .4 0 .7.1 1zM228 226.5h-.1.1zM226.9 216v0zM199.5 218.8c.3.3.5.6.8.9-.3-.3-.6-.6-.8-.9z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M237.7 208.7c1-.3 1.9-.5 2.8-.8h.1c6.5-2 12.4-4.7 17.4-7.6-7.2 3.5-15 5-20 5.6 0 1-.1 1.9-.3 2.8z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M241.9 163c.1-.2.2-.4.2-.6 0 .2-.1.4-.2.6zM234.1 70.2c-.3 0-.5-.1-.8-.1-.3 0-.7 0-1 .1.3 0 .7-.1 1-.1.2 0 .5 0 .8.1zM232 70.2c-2.5.4-4.6 2.2-5.5 4.5.9-2.3 3-4 5.5-4.5zM219.1 84.9c0-.1 0-.1 0 0 0-.1 0-.1 0 0zM221.2 79.8c.5-.5 1.1-.9 1.7-1.3-.6.3-1.2.8-1.7 1.3zM226 76.7c-.4.3-.7.7-1 1-.7.1-1.4.4-2.1.7.6-.3 1.3-.6 2.1-.7.3-.3.7-.6 1-1zM207.3 226.3s0-.1 0 0h-.1c0-.1.1 0 .1 0zM263.6 172.3c-.4.1-.8.3-1.2.4.4-.1.8-.2 1.2-.4zM248.7 65.6h.8c-.3.1-.5 0-.8 0zM237.3 69.6c1.3-.5 2.6-.9 4-1.2-1.4.4-2.7.8-4 1.2zM189.2 186.5v0zM252.5 139.1h-1c.3.1.6.1 1 0zM272.6 164c-.5 1.3-1.7 3.4-3.8 5.3 2.2-2 3.3-4.1 3.8-5.3zM262.6 67.9h-.6.6zM219.1 84.9c0 .3 0 .7.1 1-.2.3-.3.6-.5 1 .2-.3.3-.7.5-1 0-.3-.1-.6-.1-1zM202.8 96.1c.1.1.1.2.2.2.1.1.3.2.4.3-.1-.1-.3-.2-.4-.3-.1 0-.2-.1-.2-.2zM202.5 90.4c-.1-.1-.2-.1-.2-.2-.1-.1-.1-.2-.2-.3 0 .1.1.3.2.3l.2.2zM259.2 140.3h-.3.3zM277.1 177.5c-.1 0-.1 0 0 0-.1 0-.1 0 0 0-.1.1-.1 0 0 0zM274.7 180c0-.1 0-.1 0 0-.2 0-.4-.1-.6-.1.2 0
.4 0 .6.1z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M235.8 218c-.5 1.4-1.1 3.2-2 4.9-1.5 3.1-3.5 5.9-5.8 5.9-.7 0-1.3-.2-1.8-.6-.6-.5-1.2-.9-1.4-5.4-.1-1.5-.1-3.5-.1-6.2-.5 0-1-.1-1.6-.2l-.7-.2c0 2.8 0 4.9.1 6.6.2 5.1 1 6.1 2.4 7.2 1 .8 2.1 1.2 3.4 1.2 3.2 0 6-2.7 8.4-8.1.6-1.3 1.2-2.8 1.7-4.4.7-2 1.3-4.8 1.9-8.2-.9.3-1.9.5-2.9.8-.5 2.6-1.1 4.9-1.6 6.7zM265 198.7c-2.4 1.6-5 3.1-7.8 4.7 1.6-.7 3.1-1.4 4.6-2.3h.2c3.7 0 7.1-.5 10.2-1.4-1.7-.2-3.3-.6-4.7-1.3-.8.1-1.6.2-2.5.3z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M284.9 173c.8-.7 1.8-1.2 2.9-1.2.4 0 .7 0 1 .1h.1c-.7-.6-1.5-1.1-2.4-1.2-.3-.1-.6-.1-.8-.1-.8 0-1.6.2-2.3.6l-.2.2c.6.6 1.2 1.1 1.7 1.6zM287.7 188c.3-.6.6-1.1.9-1.7-.4.3-.8.6-1.3.8.1.4.3.6.4.9z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M266.3 154.9c-1.2.6-2.1.9-2.7 1.2-.3.1-.6.2-.8.3-.2.1-.3.1-.3.1-.2.1-.4.1-.7.1-.6 0-1.2-.3-1.7-.7-6.4 3.3-13.7 6.8-16.1 7.9-.1.2-.2.4-.2.6.8-.1 1.7-.1 2.5-.1 3.5 0 6.8.6 9.7 1.8 2.7 1.1 5 2.5 7 4.3 6.4-2.4 7.9-7.8 7.9-8 .2-.9.9-1.5 1.8-1.7h.3c.8 0 1.5.4 1.9 1.1.1.2 1.7 2.9 2.3 7.1 1 .2 2 .6 2.9 1-.5-5.5-2.5-9.1-2.9-9.7-.9-1.4-2.4-2.3-4-2.3-.2 0-.5 0-.7.1-1.9.3-3.4 1.7-3.9 3.5 0 .1-1 3.6-5.1 5.7-1.9-1.4-4-2.7-6.4-3.7-1.3-.6-2.8-1-4.2-1.3 5.1-2.5 10.1-5 13.8-7.1-.1-.1-.1-.2-.2-.2 0-.1-.1-.1-.2 0z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M265.3 137.7h.5-.5zM246.3 166.4h-.3H246.3z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M284.3 126.3l1.2-1.8c4.6-2.2 7.4-7.2 6.8-12.3v-.2c1.4-2.3 2-5 1.7-7.7-.3-2.4-1.3-4.6-2.8-6.4-.3-2.1-.7-4.1-1.3-6.1v-1c0-4-2-7.7-5.3-9.9-2.8-4.1-6.5-7.8-10.6-10.6-1.8-4.4-6.2-7.3-11-7.3-1.4 0-2.9.3-4.3.8-.8-.2-1.6-.4-2.4-.5-2.1-1.6-4.7-2.5-7.3-2.5-.5 0-1 0-1.5.1-2.2.3-4.4 1.2-6.1 2.6-2.1.4-4.2 1.1-6.2 1.9-.6-.1-1.1-.1-1.7-.1-5.2 0-9.9 3.5-11.4 8.4-4.4 1.8-7.4 6.2-7.4 11.1v.2c-.2.5-.4 1-.6 1.4-.4.4-.8.7-1.2 1.2-.1-2.2-1.1-4.2-2.2-6.3-.2-.4-.4-.8-.6-1.3-.9-1.8-2.7-3-4.6-3-3.8 0-5.5 3.8-6.2 5.3-1 2.1-2.3 5.9-1.3 9-.4 3.7.2 6.5 1.8 8.2.1.6.2 1.3.4 1.8-8.4 3.3-26.4 11.2-32.7 19.4-1.9 2.4-2.2 5.7-1 9.8 2.6 8.9 10.6 18.2 15.5 20.1 6.2 2.3 14.3 3.8 22.5 4.3-4.1 1.6-7.4 2.9-10 4.1.6.7 1.1 1.4 1.6 2.2 2.6-1.1 5.7-2.3 9.5-3.9 1.9-1.6 3.9-3.1 6-4.5h-2c-9.9 0-19.7-1.6-27.1-4.3-5.2-1.9-12.1-11.9-14-18.4-.9-3.3-.7-5.8.6-7.6 5.6-7.3 22.8-15.2 33.8-19.4-.6-1.4-.9-3-1.1-4.6l-.1-.1c-1.4-1.1-1.9-3.5-1.5-7.1-1.1-2.3.3-6 1.1-7.6 1.2-2.6 2.4-3.8 3.9-3.8 1 0 1
.9.6 2.4 1.6.2.5.5.9.7 1.3 1.2 2.3 2.2 4.3 1.8 6.3.7 1 1.3 2.1 1.4 3.4.7.6 1.3 1.1 1.9 1.7-.1-.3-.1-.7-.1-1.1 0-2 1-3.8 2.6-4.8.3-.8.7-1.7 1.1-2.5v-.7c0-4.3 2.9-8 7-9.1l.1-.1c.8-4.4 4.7-7.8 9.3-7.8.7 0 1.3.1 2 .2 2.3-1 4.6-1.7 7-2.1 1.5-1.4 3.3-2.2 5.3-2.5.4 0 .8-.1 1.2-.1 2.3 0 4.5.9 6.2 2.4 1.2.2 2.4.5 3.6.8 1.3-.6 2.7-.9 4.1-.9 4.1 0 7.7 2.6 9 6.4 4.3 2.8 8 6.5 10.8 10.8 2.8 1.7 4.6 4.8 4.6 8.1 0 .4 0 .8-.1 1.3.7 2.3 1.2 4.6 1.5 7 1.5 1.5 2.5 3.4 2.7 5.6.3 2.5-.4 4.9-1.8 6.8.1.4.2.7.2 1.1.5 4.3-2 8.5-6 10-.6 1-1.2 1.9-1.8 2.8-.5 3.2-2.7 5.8-5.7 6.9-1.6 4.5-5.8 7.5-10.7 7.5-.5 0-1 0-1.5-.1-1 1.6-2.8 2.7-4.9 2.7-1.4 0-2.7-.5-3.7-1.3-1.3.2-2.7.2-4 .2-.4 1.9-1 3.9-1.6 5.8 8.1-1.9 16.9-3.8 18-3.9h.8c.1-.1.3-.2.4-.3l.6-.5c.2-.2.4-.3.6-.4.4-.3.8-.6 1.2-.8-.1 0-.1-.1-.2-.1 2.3-1 4.3-2.5 5.8-4.5.2-.4.4-.7.7-.9.3-.5.5-.9.8-1.4 2.8-2 5.1-4.9 5.8-8.4z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M287.7 101.9c-.4-.6-.9-1.1-1.4-1.5.6.4 1 .9 1.4 1.5zM286.9 111.2c.2.6.4 1.2.5 1.9 0 .2 0 .5.1.7 0-.2 0-.5-.1-.7-.1-.7-.3-1.3-.5-1.9zM289 106c0-.3 0-.6-.1-.9 0-.4-.1-.7-.2-1.1.1.3.2.7.2 1.1.1.3.1.6.1.9zM263.6 137.5c-.3-.1-.7-.1-1-.2h-.1.1c.3.1.6.1 1 .2zM259.6 140.2c.4-.1.7-.2 1.1-.4-.4.2-.7.4-1.1.4zM188.5 192.2v0zM218.2 88.3c-.2.4-.4.9-.5 1.3-.2.1-.3.1-.5.2.1-.1.3-.2.5-.2.1-.4.3-.9.5-1.3zM186 170.6c0-.1-.1-.1-.1-.2 0 .1 0 .2.1.2zM215.8 97.7c0-.4.1-.9.2-1.3-.1.4-.1.8-.2 1.3z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M207.5 230.7c1.7 0 3.3-.8 4.3-2.2.9-1.2 1.3-2.3.7-5.6-.3-2-1.1-4.8-2.2-8.8 1 0 2 .1 3 .1h2.1l-3.8-1.1-4.8-.6c1.6 5.2 2.4 8.5 2.9 10.6.6 3.2.3 3.7-.2 4.3-.5.8-1.4 1.2-2.3 1.2-1.7 0-3.4-1.3-6.6-4.9-.8-.9-1.8-2-2.9-3.3-3.3-3.8-5.6-8.6-7.1-12.7-1-.5-2-1.1-2.9-1.7 1.6 4.8 4.3 11 8.4 15.8.6.8 1.3 1.5 1.8 2.1 4.4 4.8 6.7 6.8 9.6 6.8zM185.9 201.9c1.2.9 2.4 1.7 3.6 2.5l-.3-.9c-2.1-3-3.1-7-3-11.4-.4-.3-.8-.5-1.2-.8-.2-.2-.3-.5-.1-.8.2-.2.5-.3.8-.1.2.1.4.3.6.4.1-1 .2-2.1.3-3.2-.8.3-1.6.5-2.4.6-.5 5.1 0 9.8 1.7 13.7z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M206.8 158.8c.5-.4 1-.9 1.6-1.3-.6.4-1.1.9-1.6 1.3z"/>
+ <path fill="url(#a)" fill-rule="nonzero" d="M237.4 200.4c-.1 1-.2 2-.2 2.9 4.1-.4 10.5-1.6 17.1-4.5 1.7-.8 3.3-1.6 4.7-2.6-.7-.2-1.4-.6-1.9-1.1-3.5 1.9-8.3 4-14.2 4.8-1.9.2-3.7.4-5.5.5z"/>
+ <path fill="url(#b)" fill-rule="nonzero" d="M268.8 169.3c1.6-.6 3.4-.9 5.1-.9.4 0 .7 0 1.1.1-.4-2.3-1.1-4-1.5-4.9-.1-.3-.3-.5-.3-.6v-.1s0 .1-.1.3c0 .1-.1.2-.1.3-.1.1-.1.3-.2.5-.7 1.2-1.8 3.3-4 5.3z"/>
+ <path fill="url(#c)" fill-rule="nonzero" d="M274.9 176.9c-.3 0-.6-.1-.9-.1-2.6 0-5 1.4-6.3 3.6-.3.5-.7 1-1.1 1.4l1.6.4c0-.1.1-.2.2-.3l.9-.7c.2-.2.6-.1.8.1.2.2.1.6-.1.8l-.5.4.9.2c.8.2 1.5.6 2 1.2.7-1.4 1.3-2.8 1.8-4.1.2-1 .5-1.9.7-2.9z"/>
+ <path fill="url(#d)" fill-rule="nonzero" d="M189.9 156.3c-2.8-1.8-6-2.6-9.1-2.6-5.6 0-11.1 2.8-14.3 7.8-5 7.9-2.7 18.3 5.2 23.3 2.8 1.8 6 2.6 9.1 2.6 2.1 0 4.2-.4 6.1-1.1.3-1.5.7-3.1 1.2-4.6-.5 0-1-.1-1.5-.4-1.5-.8-2.1-2.6-1.3-4s2.6-1.9 4.1-1.1c.3.2.5.3.7.5.6-1.3 1.3-2.6 2-3.9-3.2.4-4.2.5-4.7.5h-.6c-1-.1-2.3-.6-2.9-1.8-.5-.8-.7-2.3.5-4.3.5-.7 1.1-1.9 10.6-5.9-1.4-1.9-3-3.7-5.1-5zm-14.1 2.1c1.7 0 3.1 1.3 3.1 2.9 0 1.6-1.4 2.9-3.1 2.9-1.7 0-3.1-1.3-3.1-2.9 0-1.6 1.4-2.9 3.1-2.9zm-8.7 10.8c.8-1.4 2.6-1.9 4.1-1.1 1.5.8 2.1 2.6 1.3 4s-2.6 1.9-4.1 1.1c-1.4-.8-2.1-2.6-1.3-4zm13.4 12.7c-.6 1-1.9 1.5-3.3 1.2l1.7 1.7c.2.2.2.6 0 .8-.1.1-.3.2-.4.2-.1 0-.3 0-.4-.1-3.1-2.9-6.2-6.2-9.2-9.8-.2-.2-.2-.6.1-.8.2-.2.6-.2.8.1 1.2 1.5 2.5 2.9 3.7 4.3 0-.4.1-.8.3-1.1.4-.7 1.1-1.2 2-1.3l-.9-1.1c-.2-.2-.2-.6.1-.8.2-.2.6-.2.8.1l1.6 1.9c.4.1.8.2 1.1.4 1.9.9 2.8 2.9 2 4.3zm8.2-19.6c-.8 1.3-2.6 1.5-4 .7-1.4-.9-1.9-2.6-1.1-3.9.8-1.3 2.6-1.5 4-.7 1.4.9 1.9 2.7 1.1 3.9z"/>
+ <path fill="url(#e)" fill-rule="nonzero" d="M204.7 160.7c-9.4 3.5-17.8 8.2-17.9 8.3-.1.1-.2.1-.3.1-.2 0-.4-.1-.5-.3-.2.3-.3.6-.3.9v.6c0 .1 0 .2.1.2 0 .1.1.1.1.2.4.5 1.2.5 1.2.5H188c.2 0 .4 0 .6-.1.3 0 .6-.1.9-.1h.2c.3 0 .6-.1.9-.1h.2c.4 0 .7-.1 1.1-.2h.1c.9-.1 2-.3 3.1-.5 2.9-4 5-6.2 5.1-6.4.2-.2.6-.2.8 0 .1.1.2.2.2.4 1.1-1.2 2.2-2.3 3.5-3.5z"/>
+ <path fill="url(#f)" fill-rule="nonzero" d="M187.9 167.1c-.1 0-.1.1-.2.1s-.1.1-.2.1c1.1-.6 2.7-1.4 4.8-2.5-1.8.9-3.4 1.7-4.4 2.3z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M213.3 204.7c-.7-.2-1.3-.7-1.7-1.2l-.4 1.3 1.9.5c.3-.1.7-.2 1-.3l-.8-.3z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M188.7 193.1c0 .1-.1.1-.1.1v1.6c0 .4.1.8.2 1.2 0 .2.1.4.1.5l.3 1.2c0 .2.1.3.1.5.1.4.3.8.4 1.2v.1c.8 1.6 2.9 4.5 8.2 5.4.3.1.5.3.4.6-.1.3-.3.5-.5.5h-.1c-2.7-.5-4.6-1.5-6-2.5l.3.9c.2.5.3 1 .5 1.5 1.4.7 2.7 1.2 4.1 1.7 2.4.8 4.8 1.4 7.2 1.9 0-.1-.1-.3-.1-.4 0-.1-.1-.3-.1-.4-.2-.5-.4-1-.5-1.5-.1-.3-.2-.6-.3-.8h.2c0-.6 0-1.1.2-1.7l1.2-4.1c-.7-.2-1.5-.4-2.2-.6-.3-.1-.5-.4-.4-.7.1-.3.4-.5.7-.4.7.2 1.5.4 2.2.6l4.1-14.3c.7-2.4 2.9-4 5.4-4 .5 0 1 .1 1.6.2l15.3 4.4c2-6.2 3.9-13.4 9.5-22.5.5-1.1 1.1-2.1 1.4-2.4.6-.4 12.5-5.9 18-8.5l.1-.1c.1-.2.3-.4.5-.7.3-.5.9-1.3 1.8-2.3.8-1 1.8-2 2.7-2.9l.6-.6c-3.9.8-12 2.6-19.4 4.4.4-.9.7-1.7 1-2.6.1-.2.1-.4.2-.6.5-1.4.9-2.9 1.3-4.3 1-5.6.1-9.3.1-9.4-.1-.3.1-.5.3-.6-.3-2.1-.8-3.8-1.6-5.3-3.1-1-5.4-3.9-5.4-7.4v-.1c-.8-1-1.4-2-2-2.9-.4-.4-.9-.9-1.3-1.4-2.1-2.7-3.1-5.6-3.5-7.3-.2-.4-.3-.7-.5-1.1-.7-.4-1.3-1-1.8-1.6-.8-.6-1.6-1.4-2-2.3-.5-1.3-.7-2.3-.6-3.2l-3.2-.1c-.2 0-.4-.2-.5-.4-.7 0-1.4 0-2.1.1-.4.6-1 1.2-1.7 1.5v
.1c0 .3-.2.6-.5.6h-.6c-1.5 0-2.7-.8-3.2-1.2l-1.4.4c1.1 1.2 2.1 2.8 2.1 4.8 0 4.6-4.6 6.2-4.7 6.2h-.2c-.2 0-.4-.1-.5-.3-.8.2-1.6.3-2.5.1-.2 0-.5-.2-.7-.3h-.2c-.2 0-4.3-.9-6.1-6.6-.1-.3 0-.5 0-.7-.2.1-.4.1-.6.2-.2.1-.3.1-.5.2-.3.1-.5.2-.8.3-.2.1-.4.1-.5.2-.3.1-.5.2-.8.3-.2.1-.4.1-.5.2-.3.1-.5.2-.8.3-.2.1-.4.2-.6.2-.3.1-.5.2-.8.3-.2.1-.4.2-.6.2-.3.1-.5.2-.8.3l-.6.3c-.3.1-.5.2-.8.3l-.6.3c-.3.1-.5.2-.8.3l-.6.3c-.5.2-.9.4-1.4.6-.3.1-.5.2-.8.3-.2.1-.4.2-.7.3-.2.1-.5.2-.7.3-.2.1-.5.2-.7.3-.2.1-.5.2-.7.3-.2.1-.4.2-.7.3-.2.1-.5.2-.7.3l-.6.3c-.2.1-.5.2-.7.4l-.6.3c-.2.1-.5.2-.7.4l-.6.3c-.2.1-.5.3-.7.4l-.6.3c-.2.1-.5.3-.7.4-.2.1-.4.2-.5.3-.3.1-.5.3-.7.4-.2.1-.3.2-.5.3-.3.2-.7.4-1 .6-.1.1-.2.1-.3.2-.3.2-.7.4-1 .6-.1.1-.2.2-.4.2-.2.2-.5.3-.7.5-.1.1-.3.2-.4.3-.2.1-.4.3-.6.4-.1.1-.3.2-.4.3-.2.1-.4.3-.6.4-.1.1-.3.2-.4.3-.2.1-.4.3-.5.4-.1.1-.3.2-.4.3-.2.1-.3.3-.5.4-.1.1-.2.2-.4.3-.2.1-.3.3-.5.4l-.3.3c-.2.1-.3.3-.4.4l-.3.3c-.2.2-.3.3-.4.5-.1.1-.1.2-.2.2-.2.2-.4.5-.6.7-.3.4-.5 1-.7 1.6v.1c.5 0 .9.4 1 .8
0 .1 6.4 15.3 12 18.1 5.1 2.5 24.4 4.5 39.2 3.2 9-1.8 12.1-3.7 19.4-11 2.3-2.3 3.5 6.1-.8 10.1-3.6 3.4-12.9 4.7-23.1 4.7-.8.4-1.6.9-2.4 1.4-.1.1-.3.2-.4.3-.6.3-1.1.7-1.6 1-.2.1-.4.3-.6.4-.8.5-1.6 1.1-2.3 1.6-.3.3-.7.5-1 .8-.4.3-.7.6-1.1.8-.5.4-1.1.9-1.6 1.3-.1 0-.1.1-.2.1-4.6 1.8-10.2 4-14.3 5.9-2.1 1-3.8 1.9-4.8 2.5-.6.4-1.1.7-1.2 1-.1.1-.1.3-.2.4.1.2.3.3.5.3.1 0 .2 0 .3-.1.1-.1 8.5-4.8 17.9-8.3-1.2 1.1-2.4 2.3-3.5 3.5 0 .2 0 .3-.2.4 0 0-2.4 2.4-5.4 6.8-.2.3-.4.6-.6.8-.1.2-.2.4-.3.5-.4.6-.7 1.2-1 1.8-.1.2-.3.5-.4.7-.3.5-.6 1.1-.8 1.6-.1.3-.2.5-.4.8-.2.5-.5 1-.7 1.5-.1.3-.2.6-.3.8-.2.5-.4 1-.5 1.4-.1.3-.2.6-.3.8-.2.5-.3.9-.4 1.4-.1.3-.2.6-.2.8-.1.5-.2.9-.3 1.4 0 .2-.1.4-.1.6v.2c-.1.5-.2.9-.2 1.3 0 .3-.1.5-.1.8-.1.4-.1.9-.1 1.3 0 .2 0 .5-.1.7V191.3c.5 1.2.5 1.5.4 1.8zm7.3-73.4c.5-.8 1.8-2 3.7-2.4 0-.1-.1-.2-.1-.3v-3c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v3c0 .1 0 .2-.1.3 1.9.4 3.2 1.6 3.7 2.4.5.8.3 1.8-.5 2.3-.3.2-.6.3-.9.3-.5 0-1.1-.3-1.4-.7-.1-.1-.8-1.1-2.2-1.1-1.4 0-2.1 1.1-2.2 1.1
-.5.8-1.5 1-2.3.5-.6-.6-.8-1.7-.3-2.4zm12 18.1c0 .1-.1.1-.1.2l-.4.3c-.9.8-1.8 1.4-2.6 1.9-.9.5-1.7 1-2.5 1.3-1.6.7-3.1 1.2-4.6 1.5-.4.1-.8.1-1.2.2-2.4.3-4.7.1-6.9-.5h-.1-.1c-2.1-.7-4.2-1.8-6-3.3.2-.1.4-.1.6-.1-.2 0-.4.1-.6.1-.3-.3-.6-.5-.9-.8-1.1-1.1-2.1-2.3-3-3.8-.5-.8-.9-1.6-1.3-2.5-.4-.9-.8-1.9-1.2-3l-.1-.5c-.1-.2 0-.5.3-.5h.2c.5.1 1.1.2 1.6.4.3.1.5.1.8.2.3 1.3.6 2.7.7 2.9.2.3 2.7 1.8 3.1 1.5.2-.2.6-1.8.9-3.2l.6.1c.5.1.9.3 1.4.4-.4 1.6-.8 3.3-.7 3.5.2.3 3.1 1 3.5.8.5-.2 1.7-1.4 2.8-2.7.2.1.4.1.6.2l7.5 2.4 3.8 1.3c.7.3 1.5.5 2.2.8l1.5.6c.1-.1.3.1.2.3zm20.6-15.8c-.3.2-.6.3-.9.3-.5 0-1.1-.3-1.4-.7-.1-.1-.8-1.1-2.2-1.1-1.4 0-2.1 1.1-2.2 1.1-.5.8-1.5 1-2.3.5-.8-.5-1-1.5-.5-2.3.5-.8 1.8-2 3.7-2.4 0-.1-.1-.2-.1-.3v-3c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v3c0 .1 0 .2-.1.3 1.9.4 3.2 1.6 3.7 2.4.7.7.4 1.7-.3 2.2zm-37.1 72.8c.1-.3.5-.4.8-.2.3.2.6.4 1 .5.3.1.4.5.2.8-.1.2-.3.3-.5.3-.1 0-.2 0-.3-.1-.3-.2-.7-.4-1-.5-.2-.2-.3-.5-.2-.8z"/>
+ <path fill="url(#g)" fill-rule="nonzero" d="M203.6 209.1c0-.1 0-.1 0 0-.1-.2-.2-.3-.2-.4.1.1.1.2.2.4z"/>
+ <path fill="url(#h)" fill-rule="nonzero" d="M222.3 203.8l-1.9-.6c0 .1 0 .2-.1.3-.4 1.3-1.6 2.2-2.9 2.2-.3 0-.6 0-.9-.1l-2.4-.7c-.3.1-.7.2-1 .3l10 2.9 1.3-4.5c-.4.2-.8.3-1.3.3-.2.1-.5 0-.8-.1z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M227.1 224.7c0 .4.1.7.1 1 0 .3.1.5.2.6 0 .1.1.1.1.1.1.1.1.1.2.1H228.3s.1 0 .1-.1c.1 0 .1-.1.2-.1l.1-.1c.1 0 .1-.1.2-.1l.1-.1.2-.2.1-.1c.1-.1.2-.2.2-.3l.1-.1c.1-.2.3-.3.4-.5v-.1c.1-.2.2-.3.4-.5 0-.1.1-.2.1-.2.1-.1.2-.3.3-.4.1-.1.1-.2.2-.3.1-.1.1-.2.2-.3-1.4 0-2.9-.1-4.3-.1v.9c.2.2.2.5.2.9z"/>
+ <path fill="url(#i)" fill-rule="nonzero" d="M230 212.6c-.5 1.6-1.6 2.8-3.1 3.5v7.5c0 .4.1.7.1 1.1 0 .4.1.7.1 1 0 .3.1.5.2.6 0 .1.1.1.1.1.1.1.1.1.2.1H228.2s.1 0 .1-.1c.1 0 .1-.1.2-.1l.1-.1c.1 0 .1-.1.2-.1l.1-.1.2-.2.1-.1c.1-.1.2-.2.2-.3l.1-.1c.1-.2.3-.3.4-.5v-.1c.1-.2.2-.3.4-.5 0-.1.1-.2.1-.2.1-.1.2-.3.3-.4.1-.1.1-.2.2-.3.1-.1.1-.2.2-.3 0 0 0-.1.1-.1.1-.1.1-.2.2-.3.1-.2.2-.3.2-.5.1-.1.1-.2.2-.4s.2-.4.2-.5c.1-.1.1-.3.2-.4.1-.2.2-.4.2-.6.1-.1.1-.3.2-.4.1-.2.2-.5.3-.7 0-.1.1-.2.1-.4.1-.4.3-.7.4-1.1.1-.4.3-.9.4-1.4.1-.5.3-1 .4-1.5v-.1c.1-.5.2-1 .3-1.6v-.1c.1-.3.1-.6.2-1-1.3.1-3 .4-4.7.7z"/>
+ <path fill="url(#j)" fill-rule="nonzero" d="M240.1 167.1c-.1.2-.3.3-.5.3h-.2c-.3-.1-.4-.4-.3-.7.4-.9.9-2.1 1.4-3.2-5.6 9-7.5 16.2-9.5 22.5l.9.3c1.4.4 2.6 1.4 3.3 2.7.7 1.3.9 2.8.5 4.3l-4.9 17.1c1.6-.3 3.2-.6 4.7-.9v-.1-.1c.1-.6.2-1.1.2-1.7v-.1c0-.2.1-.5.1-.7 0-.1-.1-.2 0-.3.5-4.5 1.9-23.7 1.9-23.9 0-.3.3-.5.6-.5s.5.3.5.6c0 .1-.7 9.5-1.3 16.7 1.7-.1 3.5-.2 5.3-.5 5.6-.8 10.3-2.8 13.7-4.7-.5-.9-.6-2-.4-3l1.9-7.3c.4-1.4 1.4-2.4 2.6-2.8-.9-1.2-1-2.9-.3-4.3.8-1.6 2-3.1 3.3-4.3-.4.1-.8.3-1.2.4-1.1.3-2.2.6-3.5.7-1-.8-2.2-1.2-3.6-1.3-.9 0-1.8.1-2.7.4-1.4-1.3-3.3-2-5.3-1.8-1.8.1-3.4.9-4.5 2.1-.9.1-1.8.2-2.6.4-.3 1.5-.5 2.7-.5 2.9 0 .3-.1.5-.4.6h-.2c-.2 0-.5-.1-.5-.4-.1-.2-.1-.4.9-5.1.3-1.6.7-3 1.1-4.4.1-.5.3-.9.4-1.3.1-.4.3-.8.4-1.2v-.1c.1-.4.3-.7.4-1.1 0 0 0-.1.1-.1.1-.2.1-.4.2-.5-.4.7-1.3 2.6-2 4.4zm2.2 29.4c3.9-1.5 8-3.4 12-5.7.3-.1.6-.1.8.2.1.3.1.6-.2.8-4.1 2.3-8.2 4.2-12.2 5.7h-.2c-.2 0-.4-.1-.5-.4-.1-.2 0-.5.3-.6z"/>
+ <path fill="url(#k)" fill-rule="nonzero" d="M202.7 206.4c.1.2.2.5.3.8 0-.3-.1-.5-.1-.8h-.2z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M194.4 210.8c.3.6.6 1.3 1 1.9 0 .1.1.1.1.2.3.6.7 1.3 1.1 1.9 0 .1.1.1.1.2l1.2 1.8.1.1c.5.6.9 1.3 1.5 1.9.3.3.5.6.8.9.1.1.1.2.2.2l.6.6c.1.1.2.2.2.3.2.2.3.4.5.5.1.1.2.2.2.3.2.2.3.3.4.5.1.1.2.2.2.3l.5.5.2.2.2.2.4.4.1.1.5.5.2.2.3.3.2.2.3.3c.1.1.1.1.2.1.1.1.2.1.3.2l.1.1c.1.1.2.1.3.2 0 0 .1 0 .1.1.1.1.2.1.3.2h.1c.1 0 .2.1.2.1h.6c.1 0 .2-.1.2-.2 0 0 .1-.1.1-.2v-.1-.3-.1c0-.2 0-.4-.1-.6v-.2c0-.2-.1-.4-.1-.6v-.2c0-.2-.1-.4-.1-.6v-.2-.1c-.1-.3-.1-.6-.2-.9 0-.1 0-.2-.1-.3-.1-.3-.1-.6-.2-.8 0-.1 0-.1-.1-.2-.1-.4-.2-.7-.3-1.1 0-.1-.1-.2-.1-.3-.1-.3-.2-.6-.2-.9 0-.1-.1-.2-.1-.3l-.3-1.2v-.1c-.1-.4-.2-.7-.3-1.1 0-.1-.1-.2-.1-.3-.1-.4-.2-.7-.3-1.1v-.1c-.1-.4-.2-.8-.4-1.2 0-.1 0-.1-.1-.2-.1-.2-.1-.4-.2-.6-2.8-.6-5.7-1.3-8.6-2.2-.8-.2-1.5-.5-2.3-.8.2.6.5 1.1.7 1.7-.1-.2-.1-.2-.1-.1zM196.5 122c.8.5 1.8.3 2.3-.5 0 0 .8-1.1 2.2-1.1 1.4 0 2.1 1 2.2 1.1.3.5.9.7 1.4.7.3 0 .6-.1.9-.3.8-.5 1-1.5.5-2.3-.5-.8-1.8-2-3.7-2.4-.4-.1-.8-.1-1.3-.1-.4 0-.9.1-1.3.1-1.9.4-
3.2 1.6-3.7 2.4-.5.8-.3 1.9.5 2.4zm0-2s.1-.2.3-.4l.3-.3c.7-.7 2-1.7 3.9-1.7 2.9 0 4.4 2.2 4.5 2.3.3.5.2 1.2-.3 1.5-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5 0-.1-.9-1.3-2.6-1.3-1.1 0-1.8.5-2.2.9l-.4.4c-.3.5-1 .7-1.5.3-.7-.2-.9-.9-.5-1.4zM225.4 117.2c-.4-.1-.8-.1-1.3-.1-.4 0-.9.1-1.3.1-1.9.4-3.2 1.6-3.7 2.4-.5.8-.3 1.8.5 2.3.8.5 1.8.3 2.3-.5 0 0 .8-1.1 2.2-1.1 1.4 0 2.1 1 2.2 1.1.3.5.9.7 1.4.7.3 0 .6-.1.9-.3.8-.5 1-1.5.5-2.3-.5-.6-1.8-1.9-3.7-2.3zm2.9 4.3c-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5l-.2-.2-.2-.2c-.4-.4-1.2-.9-2.3-.9-1.7 0-2.6 1.3-2.6 1.3-.3.5-1 .7-1.5.3-.5-.3-.7-1-.3-1.5.1-.1 1.5-2.3 4.5-2.3 1.4 0 2.5.5 3.2 1.1.1.1.2.2.3.2l.3.3c.4.4.6.7.7.8.2.4.1 1.1-.4 1.4z"/>
+ <path fill="url(#l)" fill-rule="nonzero" d="M241.8 136.3c-7.4 7.4-10.4 9.3-19.4 11-14.7 1.3-34.1-.7-39.2-3.2-5.6-2.7-12-17.9-12-18.1-.1-.5-.5-.8-1-.8-.4 2.5.9 6.1 2.9 9.7.3.6.7 1.2 1.1 1.8.6.9 1.2 1.8 1.8 2.6.4.6.8 1.1 1.2 1.6.4.5.8 1 1.3 1.5.2.2.4.5.6.7.4.4.8.8 1.3 1.2.2.2.4.3.6.5.8.6 1.6 1.1 2.3 1.4 6.8 2.5 16.4 4.1 26.3 4.1 1.7 0 3.4-.1 5.1-.2h.2c.1 0 12.1-1.3 17.8-3.6.3-.1.6 0 .7.3.1.3 0 .6-.3.7-3.8 1.5-10.1 2.6-14.2 3.2-.3.2-.6.3-1 .5 10.2 0 19.5-1.3 23.1-4.7 4.3-4 3.1-12.5.8-10.2z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M250.4 158.2c-3.6 1.7-6.5 3.1-7.6 3.6 2.1-1 4.8-2.2 7.6-3.6z"/>
+ <path fill="url(#m)" fill-rule="nonzero" d="M224.6 99.7c.7 0 1.4-.1 2.1-.1v-.2c0-.3.3-.6.6-.5l3.3.1c.3-1.1.7-1.7.8-1.7.2-.2.5-.3.8-.1.2.2.3.5.1.8-.1.1-1.4 1.9-.1 4.9.6 1.5 2.9 2.8 3.8 3.2.2.1.3.3.3.5 0 0 .4 4.6 3.5 8.4 3.4 4.2 8.4 5.7 8.5 5.7.2.1.4.2.4.4 0 0 .6 3.3 1.9 4.6.7.7 2.6 2.6 7.4 1.7.3-.1.6.1.6.4.1.3-.1.6-.4.6-1 .2-1.9.3-2.7.3-3.1 0-4.7-1.2-5.8-2.2-1.3-1.3-1.9-3.9-2.1-4.8-1.1-.4-4.5-1.7-7.4-4.6.6 1 1.2 1.9 2 2.9v.1c0 3.5 2.3 6.4 5.4 7.4.7 1.5 1.3 3.2 1.6 5.3h.1c.3-.1.6.1.7.4 0 .1.6 2.4.4 5.9h1.4c.3-1.1.6-2.3.9-3.5.2.1.5.1.8.2 1.6.2 3.1-.9 3.5-2.5h.2c.8.3 1.7.6 2.6.7 4.1.4 7.7-2.1 9-5.8 2.8-.2 5.1-2.2 5.5-5 .9-1.1 1.8-2.2 2.6-3.3 3.3-.5 5.8-3.4 5.7-6.9 0-.6-.1-1.2-.3-1.8 1.6-1.3 2.6-3.3 2.5-5.5 0-1.8-.8-3.5-2-4.7 0-1.5-.1-3-.3-4.4 1.3-1 2.2-2.5 2.5-4.2 0-.2.1-.5.1-.7V91v-.1c0-.3 0-.6-.1-.9v-.2c0-.3-.1-.5-.2-.7V89l-.3-.9s0-.1-.1-.1c-.1-.2-.2-.5-.4-.7 0 0 0-.1-.1-.1-.3-.5-.7-1-1.2-1.4-.5-.4-1-.8-1.6-1.1-1-.5-2-.8-3.2-.8-2.1-3.4-4.7-6.4-7.8-8.9 0-.4-.1-.9-.2-1.3s-.2-.8-.4-1
.1v-.1c-.1-.4-.3-.7-.5-1v-.1c-.2-.3-.4-.6-.7-.9-.3-.3-.5-.6-.8-.8l-.9-.6s-.1 0-.1-.1c-.3-.2-.6-.3-1-.4-.1 0-.1 0-.2-.1-.3-.1-.7-.2-1-.3h-.2c-.4-.1-.8-.1-1.2-.1h-1c-.2 0-.5.1-.7.2-.1 0-.2 0-.3.1-.6.2-1.2.5-1.8.8-1.6-.5-3.2-.9-4.9-1.1-.2-.2-.4-.4-.6-.5l-.2-.2c-.1-.1-.3-.2-.4-.3-.1-.1-.2-.1-.3-.2-.1-.1-.3-.2-.4-.2-.1 0-.2-.1-.3-.1-.1-.1-.3-.1-.4-.2-.1 0-.2-.1-.3-.1-.2-.1-.3-.1-.5-.1-.1 0-.2-.1-.3-.1-.2 0-.4-.1-.5-.1h-1c-.3 0-.6 0-.9.1-.9.1-1.7.4-2.5.8s-1.4.9-2 1.5c-.7.1-1.4.3-2.1.4-1.4.3-2.7.7-4 1.2-.6.2-1.3.5-1.9.8-.4-.1-.9-.2-1.3-.3-.3 0-.5-.1-.8-.1-.3 0-.7 0-1 .1h-.3c-2.5.4-4.6 2.2-5.5 4.5-.1.3-.2.7-.3 1-.1.3-.1.7-.2 1-.4.3-.7.7-1 1-.7.1-1.4.4-2.1.7-.6.3-1.2.8-1.7 1.3-.3.3-.6.6-.8.9-.5.7-.8 1.4-1.1 2.2-.2.6-.2 1.2-.3 1.8v.2c0 .3 0 .7.1 1-.2.3-.3.6-.5 1-.2.5-.4.9-.6 1.4-.2.4-.4.9-.5 1.3-.2.1-.3.1-.5.2-.1.1-.3.2-.4.3-.4.3-.7.7-.9 1.2-.2.5-.4 1-.4 1.5 0 .8.3 1.6.7 2.1-.1.4-.1.9-.2 1.3s-.1.9-.2 1.3c-.1.7-.1 1.4-.1 2.2.2.2.5.3.7.5l2.3-.7c.2-.1.4 0 .6.1 0 0 1.3 1.3 3.1 1.1.3 0 .5.1.6.3.6-
.3 1.2-.8 1.6-1.5zm37.2 25.8c.2-.2.6-.3.8-.1.1.1 2.3 1.9 4.9-.2 2.1-1.8 2.1-3.7 1.9-4.7-1.6 0-2.9-.6-3.7-1.2-.5-.4-.6-1-.3-1.6.4-.5 1-.6 1.6-.3.3.2 3.2 2.1 6.1-.9 3.4-3.4 1.7-6.8 1.7-6.8-.3-.5-.1-1.2.5-1.5.5-.3 1.2-.1 1.5.5.9 1.7 1.6 5.8-2.1 9.4-1.4 1.4-2.9 2-4.2 2.2.2 1.2.1 3.5-2.3 5.6-1.2 1-2.3 1.3-3.3 1.3-1.8 0-3.1-1.1-3.1-1.1-.2 0-.2-.4 0-.6zm-26-50.3c2.4-.3 3.9.7 4.7 1.7.1-.1.3-.1.4-.2 2.1-.9 3.9-.9 5.3-.4.6-1.2 1.9-2.7 4.7-3.1 4.2-.6 5.5 3.1 5.5 3.2.1.3-.1.6-.4.7-.3.1-.6-.1-.7-.4 0-.1-1-2.9-4.3-2.4-2.3.3-3.3 1.5-3.8 2.4 1.2.6 2 1.4 2.5 2.1.3.5.2 1.2-.3 1.5-.5.3-1.2.2-1.5-.3-.2-.3-2.3-3.1-6.1-1.4-4.4 2-4 5.8-4 5.8.1.6-.4 1.2-1 1.2h-.1c-.6 0-1-.4-1.1-1-.2-1.7.4-5.1 3.9-7.3-.6-.7-1.7-1.4-3.5-1.2-3.7.5-4.2 3.4-4.2 3.5 0 .3-.3.5-.5.5h-.1c-.3-.1-.5-.3-.5-.6 0 0 .6-3.7 5.1-4.3z"/>
+ <path fill="url(#n)" fill-rule="nonzero" d="M233 105.8c.5.6 1.1 1.2 1.8 1.6.1.3.3.7.5 1.1-.1-.6-.2-1.1-.3-1.4-.4-.3-1.2-.7-2-1.3z"/>
+ <path fill="url(#o)" fill-rule="nonzero" d="M202.5 90.4c1.3 1.2 3.4.6 4.4-.9v-.1c0-.1.3-5.4-2.2-7.4 0 0-.1 0-.1.1l-.2.2s-.1.1-.1.2c-.1.1-.1.2-.2.3 0 .1-.1.1-.1.2-.1.1-.1.2-.2.4 0 .1-.1.1-.1.2-.1.2-.2.3-.3.5 0 .1-.1.1-.1.2-.1.2-.2.5-.3.7 0 .1 0 .1-.1.2-.1.2-.2.4-.2.6 0 .1-.1.2-.1.3-.1.2-.1.3-.2.5 0 .1-.1.2-.1.3 0 .2-.1.3-.1.5 0 .1 0 .2-.1.3 0 .1-.1.3-.1.4V89.7c0 .1 0 .2.1.3v.2c0 .1.1.3.2.3.1-.2.1-.2.2-.1z"/>
+ <path fill="url(#p)" fill-rule="nonzero" d="M209.1 94.2V94c-.1-.5-.3-1.4-.7-2.6-.1-.3-.2-.5-.3-.7-.6 2.1-3.7 3.3-5.8 1.5 0 .4-.1.7-.1 1.1 0 .6 0 1.1.1 1.6s.2 1 .4 1.3c.1.1.1.2.2.2.1.1.3.2.4.3.1.1.3.1.4.2 2.1.7 4.6-.6 5.4-2.7z"/>
+ <path fill="url(#q)" fill-rule="nonzero" d="M204 98c0 .3.1.5.1.8-.1-.7-.2-1.3-.3-2 .1.4.1.8.2 1.2z"/>
+ <path fill="url(#r)" fill-rule="nonzero" d="M210.6 95.5c-.4 2.7-3.6 4.7-6.5 3.5v.2c.1.4.2.8.2 1.1.4 1.6 1 2.9 1.6 3.4 2.8.5 6.9-1.5 7.1-4.5v-.5c-.2-.6-.5-1.4-1.1-2.1-.4-.4-.9-.8-1.3-1.1z"/>
+ <path fill="url(#s)" fill-rule="nonzero" d="M214.2 112c-.1 0-.1-.1 0 0-.2-.4 0-.7.3-.8.2-.1 3.9-1.4 3.9-5.2 0-2.6-2.1-4.5-3.5-5.5.2 3.4-3.6 6.1-7 6 1.5 2.5 3.4 3 3.5 3 .6.1 1 .7.9 1.3-.1.5-.6.9-1.1.9.2.2.5.3.7.3.6.3 1.5.2 2.3 0z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M240.4 163.4c-.5 1.1-1 2.3-1.4 3.2-.1.3 0 .6.3.7h.2c.2 0 .4-.1.5-.3.7-1.7 1.6-3.7 2.1-4.6.1-.1.1-.3.2-.4.2-.1.3-.2.5-.2 1-.5 4-1.9 7.6-3.6 3-1.4 6.1-3 9-4.5 0-.3.1-.6.3-.9 0 0 0-.1.1-.2-5.5 2.5-17.4 8.1-18 8.5-.3.2-.8 1.2-1.4 2.3z"/>
+ <path fill="url(#t)" fill-rule="nonzero" d="M275.8 140c-.7.2-1.3.6-2 .9v.4c.4 1.9 1.8 3.4 3.5 4.2.5-.6.9-1.1 1.3-1.7.3-.5.6-.9.8-1.3-.8-.2-1.5-.6-2-1.1-.4-.5-.7-1-.9-1.5-.2-.1-.4 0-.7.1z"/>
+ <path fill="url(#u)" fill-rule="nonzero" d="M273.3 149.1c.1 0 .1-.1.2-.1l.6-.5c.2-.1.4-.3.6-.4.1-.1.2-.2.3-.2-.3-.2-.7-.4-1-.7-1.4-1.1-2.5-2.7-3-4.4-.1.1-.2.1-.3.2-.2.1-.4.3-.6.4l-.6.5c-.2.2-.4.3-.6.5-.6.5-1.2 1-1.7 1.5-.6.5-1.1 1-1.6 1.5-.9.9-1.8 1.9-2.6 2.9s-1.4 1.8-1.7 2.2c-.2.3-.3.5-.4.7l-.1.2c-.2.3-.2.7-.1 1 .1.4.3.7.6.8.3.2.7.2 1 .1 0 0 .1 0 .3-.1.2-.1.4-.1.7-.3.6-.2 1.4-.6 2.6-1.1h.1c-1.2-2.3-.6-5.1-.6-5.3.1-.6.7-1 1.3-.8.4.1.7.4.8.8 1.8-.4 4.1 0 5.8.6z"/>
+ <path fill="url(#v)" fill-rule="nonzero" d="M281.4 141.3c.9-.2 2.7-.9 4.2-3.5-1-.8-2.6.8-3.3-.6-.6-1.1.1-1.5-.4-2.1h-.6c-1.6 0-2.9.7-3.5 1.9-.6 1.1-.3 2.5.6 3.5.6.8 1.8 1.1 3 .8z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M267.5 148.5c.1.2.1.4 0 .6 0 0-.5 2.5.5 4.1.5.8 1.3 1.2 2.4 1.4 1.3.2 2.3 0 3.1-.6 1.2-.9 1.4-2.7 1.4-2.7 0-.4.3-.7.6-.9-.3-.3-.7-.5-1.1-.8-.3-.2-.7-.4-1.2-.5-1.6-.6-3.9-1-5.7-.6z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M148 139.7c-.3.1-.4.5-.3.7 2 4.3 4 8.2 6 12 .1.2.3.3.5.3.1 0 .2 0 .3-.1.3-.1.4-.5.2-.8-2-3.7-4-7.6-6-11.9-.1-.2-.4-.4-.7-.2zM160.4 163.3c.1 0 .2 0 .3-.1.3-.2.3-.5.2-.8-.6-.9-1.2-1.9-1.8-2.8-.1-.1-.2-.2-.4-.3.6 1.2 1 2.4 1.2 3.7.2.2.4.3.5.3zM143.3 129.9h-.2v.4l.4 1c.1.2.3.3.5.3h.2c.3-.1.4-.5.3-.7l-.4-1h-.8zM283.4 171.4c1.5-1.3 3.1-2.7 4.6-4.1.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0-1.7 1.5-3.3 3-5 4.4.3.2.6.4.9.7.2-.1.2-.2.3-.2zM185 190.5c-.2.2-.1.6.1.8.4.3.8.5 1.2.8.5.4 1.1.8 1.6 1.1.1.1.2.1.3.1.1 0 .2-.1.3-.1l.1-.1c.2-.3.1-.6-.1-.8-.7-.5-1.5-1-2.2-1.5-.2-.1-.4-.3-.6-.4-.2-.2-.5-.1-.7.1zM242.5 197.6h.2c4-1.5 8-3.5 12.2-5.7.3-.1.4-.5.2-.8-.1-.3-.5-.4-.8-.2-4.1 2.2-8.1 4.1-12 5.7-.3.1-.4.4-.3.7.1.2.3.3.5.3zM270 181.4c-.2-.2-.5-.3-.8-.1l-.9.7c-.1.1-.2.2-.2.3l1.2.3.5-.4c.4-.2.4-.6.2-.8zM169.9 175c-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8 3 3.6 6 7 9.2 9.8.1.1.2.1.4.1.1 0 .3-.1.4-.2.2-.2.2-.6 0-.8-.6-.5-1.2-1.1-1.7-1.7-1.2-1.2-2.4-2.4-3.6-3.7-1.3-1.2-2.6-2
.7-3.8-4.2zM164 167l-.6-.9c-.2-.3-.5-.3-.8-.2-.3.2-.3.5-.2.8l.6.9c.1.2.3.2.5.2.1 0 .2 0 .3-.1.3-.1.3-.4.2-.7zM191.8 195.5c.3.2.7.4 1 .5.1 0 .2.1.3.1.2 0 .4-.1.5-.3.1-.3 0-.6-.2-.8-.3-.2-.6-.3-1-.5-.3-.1-.6-.1-.8.2-.2.4-.1.7.2.8zM202.4 198.9c-.3-.1-.6.1-.7.4-.1.3.1.6.4.7.7.2 1.5.4 2.2.6l.3-1.1c-.7-.1-1.5-.3-2.2-.6zM169.1 184.2c-1.7-2.3-3.4-4.7-5-7.1-1.6-2.4-3.2-4.9-4.7-7.4-.3.8-.7 1.5-1.2 2.3 4.5 7.3 9.2 13.9 14 19.6l2.3-.7c-1.9-2.1-3.7-4.3-5.4-6.7zM133.2 123l2.1-1.3-2.1 1.3zM271.7 191c.1 0 .2.1.3.1.6.1 1.2.2 1.8.2.3 0 .7 0 1-.1 3.4-2.9 5.2-5 5.3-5 0 0 0-.1.1-.1l-2.4-.6c-1 1-3.1 3-6.1 5.5zM193.6 208.9c.8.3 1.5.6 2.3.8 2.9.9 5.8 1.6 8.6 2.2.8.2 1.6.3 2.5.4 1.6.3 3.2.5 4.8.6l-4.8-1.4c-1.2-.3-2.2-1.1-2.9-2.1-.1 0-.2 0-.3-.1-2.4-.5-4.7-1.1-7.2-1.9-1.4-.4-2.8-1-4.1-1.7-1-.5-1.9-1-2.9-1.6-1.2-.7-2.4-1.6-3.6-2.5-.3-.2-.6-.4-.9-.7l.6 1.9c.1.3.1.5.1.8.2.2.3.5.4.7v.1c.5.4 1.1.7 1.6 1.1 1 .6 1.9 1.2 2.9 1.7.9.9 1.9 1.3 2.9 1.7zM266.3 197.8c-.7-.4-1.3-.8-2-1.3-1.9 1.3-4 2.6-6.2 3.9-5 2.9-10.9 5.
6-17.4 7.6h-.1c-.9.3-1.9.6-2.8.8-.8.2-1.6.4-2.3.6-1.5.4-3.1.7-4.7.9l-.7 2.3c1.7-.3 3.4-.5 5-.9l2.4-.6c1-.2 1.9-.5 2.9-.8 6.3-1.8 12-4.3 17-7 2.8-1.5 5.4-3.1 7.8-4.7.3-.2.7-.5 1.1-.8z"/>
+ <path fill="#FFFEFE" fill-rule="nonzero" d="M235.2 188.8c-.7-1.3-1.9-2.3-3.3-2.7l-.9-.3-15.3-4.4c-.5-.1-1-.2-1.6-.2-2.5 0-4.7 1.7-5.4 4l-4.1 14.3-.3 1.1-1.2 4.1c-.2.6-.2 1.1-.2 1.7 0 .3 0 .5.1.8.1.5.2 1 .5 1.5.1.1.1.2.1.3 0 0 0 .1.1.1.1.2.2.4.4.5.7 1 1.7 1.7 2.9 2.1l4.8 1.4 3.8 1.1 7 2 .7.2c.5.1 1 .2 1.6.2.8 0 1.5-.2 2.2-.5 1.5-.7 2.6-1.9 3.1-3.5l.7-2.3 4.9-17.1c.3-1.5.1-3.1-.6-4.4zm-1.7 3.7l-5.6 19.4c-.4 1.5-1.8 2.4-3.2 2.4-.3 0-.6 0-.9-.1l-16.2-4.7c-1.8-.5-2.8-2.4-2.3-4.2l5.6-19.4c.4-1.5 1.8-2.4 3.2-2.4.3 0 .6 0 .9.1l16.2 4.7c1.8.5 2.8 2.4 2.3 4.2z"/>
+ <path fill="#FFFEFE" fill-rule="nonzero" d="M228.7 191.1l-12.9-3.7c-.2 0-.3-.1-.5-.1-.7 0-1.4.5-1.6 1.2l-4.7 16.2c-.3.9.3 1.8 1.2 2.1l12.9 3.7c.2 0 .3.1.5.1.7 0 1.4-.5 1.6-1.2l4.7-16.2c.2-.9-.4-1.9-1.2-2.1zm-14.4 7.2c.1-.4.4-.6.8-.6h.2l8.1 2.3c.4.1.7.6.6 1-.1.4-.4.6-.8.6h-.2l-8.1-2.3c-.5-.1-.7-.5-.6-1zm-.9 3.2c.1-.4.4-.6.8-.6h.2l3.2.9c.4.1.7.6.6 1-.1.4-.4.6-.8.6h-.2l-3.2-.9c-.5 0-.8-.5-.6-1zm9.7 6.7l-10-2.9-1.9-.5.4-1.3c.4.6 1 1 1.7 1.2l.9.2 2.4.7c.3.1.6.1.9.1 1.4 0 2.6-.9 2.9-2.2 0-.1.1-.2.1-.3l1.9.6c.3.1.6.1.9.1.4 0 .9-.1 1.3-.3l-1.5 4.6zm1.8-10.3c-.1.4-.4.6-.8.6h-.2l-8.1-2.3c-.4-.1-.7-.6-.6-1 .1-.4.4-.6.8-.6h.2l8.1 2.3c.5.1.8.5.6 1zm1-3.3c-.1.4-.4.6-.8.6h-.2l-8.1-2.3c-.4-.1-.7-.6-.6-1 .1-.4.4-.6.8-.6h.2l8.1 2.3c.4.1.7.6.6 1zM275 168.4c-.4 0-.7-.1-1.1-.1-1.7 0-3.4.3-5.1.9-.7.3-1.4.5-2.1.9-1.1.6-2.1 1.3-3.1 2.2-1.3 1.2-2.5 2.7-3.3 4.3-.7 1.4-.6 3.1.3 4.3-1.3.4-2.3 1.5-2.6 2.8l-1.9 7.3c-.3 1-.1 2.1.4 3 0 .1 0 .1.1.2.2.3.4.5.6.8.5.5 1.2.9 1.9 1.1.3.1.7.1 1 .1 1.1 0 2.1-.4 2.9-1.2
.5.5.9.9 1.5 1.3.6.5 1.3.9 2 1.3l1.2.6c1.5.7 3.1 1.1 4.7 1.3.6.1 1.1.1 1.7.1 2.5 0 5-.6 7.2-1.8 2.8-1.5 5-3.7 6.4-6.5.5-1 .6-2.1.3-3.1 0-.1-.1-.2-.1-.3-.1-.3-.3-.6-.4-.8.5-.2.9-.5 1.3-.8.6-.5 1.1-1.2 1.3-2l1.9-7.3c.3-1.1.1-2.2-.4-3.1-.5-.9-1.4-1.6-2.4-1.9h-.1c-.3-.1-.7-.1-1-.1-1.1 0-2.1.4-2.9 1.2-.5-.6-1.1-1-1.7-1.5-.3-.2-.6-.5-.9-.7-.7-.4-1.4-.8-2.1-1.1-.9-.4-1.9-.7-2.9-1-1.1-.2-1.8-.3-2.6-.4zm10.6 22.1c-1.2 2.4-3.1 4.3-5.5 5.6-2 1-4.1 1.5-6.1 1.5-4.7 0-9.2-2.5-11.5-6.9l-.5 2c-.2.9-1 1.4-1.8 1.4-.2 0-.3 0-.5-.1-1-.3-1.6-1.3-1.4-2.3l1.9-7.3c.2-.9 1-1.4 1.8-1.4.2 0 .3 0 .5.1l7.3 1.9c1 .3 1.6 1.3 1.4 2.3-.2.9-1 1.4-1.8 1.4-.2 0-.3 0-.5-.1l-3.7-1c1.1 2.8 3.5 4.9 6.4 5.6.8.2 1.5.3 2.3.3 3.4 0 6.6-1.8 8.3-4.9.4-.6 1-.9 1.6-.9.3 0 .6.1.9.2h.1c.9.5 1.2 1.6.8 2.6zm-10.6-7c.6 1 1.4 1.6 2.5 1.9l.3.1 2.4.6 1 .3c-.4.3-.7.7-1 1.1v.1c-1.1 2-3.1 3.4-5.3 3.7-.3 0-.7.1-1 .1-.6 0-1.2-.1-1.8-.2-.1 0-.2-.1-.3-.1l-.9-.3c1.2-.5 2.2-1.5 2.5-2.8.4-1.4 0-2.8-1-3.8-.5-.6-1.2-1-2-1.2l-.9-.2-1.2-.3-1.6-.4c.5-.
4.8-.8 1.1-1.4 1.3-2.2 3.7-3.6 6.3-3.6.3 0 .6 0 .9.1.3 0 .6.1.9.2.4.1.8.3 1.2.4h-.1c-1 .4-1.9 1.3-2.3 2.4 0 .1-.1.2-.1.4-.3.8-.2 1.9.4 2.9zm10.4-6l.5-2c.2-.9 1-1.4 1.8-1.4.2 0 .3 0 .5.1 1 .3 1.6 1.3 1.4 2.3l-1.9 7.3c-.2.9-1 1.4-1.8 1.4-.2 0-.3 0-.5-.1l-7.3-1.9c-1-.3-1.6-1.3-1.4-2.3.2-.9 1-1.4 1.8-1.4.2 0 .3 0 .5.1l3.7 1c-1.1-2.8-3.5-4.9-6.4-5.6-.8-.2-1.6-.3-2.4-.3-3.3 0-6.5 1.8-8.2 4.8-.3.7-1 1.1-1.7 1.1-.2 0-.3 0-.5-.1l-.4-.1h-.1c-.9-.5-1.3-1.6-.8-2.5 1.2-2.4 3.1-4.3 5.5-5.6 2-1 4.1-1.5 6.1-1.5 4.8-.2 9.3 2.3 11.6 6.7zM160.2 164.9c0-.6-.1-1.3-.2-1.9-.2-1.3-.6-2.6-1.2-3.7-1.4-2.7-3.7-4.8-6.7-6-.7-.3-1.5-.5-2.3-.6-.7-.1-1.4-.2-2.1-.2h-.4c-1 0-2 .2-3 .4 0-.1-.1-.3-.1-.4-.3-.7-.9-1.2-1.6-1.5-.3-.1-.7-.2-1-.2-.6 0-1.2.2-1.7.5s-.8.8-1 1.3l-1.2 3.2-1.1 2.9c-.4 1.1-.1 2.3.7 3.1-1.3.5-2.2 1.8-2.2 3.3 0 1.9.5 3.7 1.3 5.3.3.7.7 1.3 1.1 1.9 2.3 3.2 6 5.2 10.2 5.2h.1c3.4 0 6.5-1.4 8.8-3.8.6-.6 1.1-1.2 1.6-1.9s.8-1.5 1.2-2.3c.5-1.3.8-2.9.8-4.6zm-12.5 10.5h-.1c-3.6 0-6.8-1.8-8.6-4.6-.6-.9-1.1-1.9
-1.3-3-.2-.8-.4-1.7-.4-2.6 0-.4.1-.7.4-.9.2-.2.6-.4.9-.4.7 0 1.3.6 1.3 1.3 0 2.2 1 4.4 2.7 5.9 1.5 1.3 3.3 1.9 5.1 1.9 2.2 0 4.3-.9 5.8-2.7 2.8-3.2 2.5-8.1-.7-10.9-1.5-1.3-3.3-1.9-5.1-1.9-2.2 0-4.3.9-5.8 2.7l3.7 1.4c.3.1.5.5.4.8-.1.3-.3.4-.6.4h-.2l-5.2-2-.8-.3c-.3-.1-.5-.5-.4-.8l1.2-3.2 1.1-2.8c.1-.3.3-.4.6-.4h.2c.3.1.5.5.4.8l-1.2 3.3c1.9-1.7 4.3-2.5 6.8-2.5 1.2 0 2.4.2 3.6.6 4 1.5 6.6 5.3 6.6 9.5-.1 5.7-4.7 10.3-10.4 10.4zm-5.8-11.5l1.9.7-.2.1h-.1c-.6.3-1 .7-1.3 1.2 0-.2-.1-.5-.1-.8 0-.3 0-.8-.2-1.2zm5.6 1.6l1.7-4.6c.1-.3.3-.4.6-.4h.2c.3.1.5.5.4.8l-1.8 4.8c0 .2-.1.3-.3.4L145 168l-.1-.2-.8-.3c-.1-.3 0-.7.3-.8l3.1-1.2zm-.6-5.7h.4c0 .1-.1.2-.1.3-.1-.2-.2-.3-.3-.3zm3.9 7l1.6-4.4c.4.7.7 1.5.7 2.4.1 1.5-.4 2.9-1.3 4-1 1.2-2.6 1.9-4.2 1.9-.8 0-1.5-.2-2.2-.5.2 0 .3-.1.5-.2l3.3-1.5c.1 0 .2-.1.2-.1.7-.3 1.2-.9 1.4-1.6zM185.7 204c0-.3 0-.5-.1-.8l-.6-1.9-.3-1.1c-.1-.3-.2-.5-.4-.7 0-.3 0-.5-.1-.8l-.9-3.1c-.1-.3-.2-.5-.4-.7 0-.3 0-.5-.1-.8-.7-2.3-2.8-3.9-5.2-3.9-.5 0-1.1.1-1.6.2-.3.1-.5.2-.7.4h-
.2c-.2 0-.4 0-.6.1h-.2l-2.3.7-.6.2c-.3.1-.5.2-.7.4h-.2c-.2 0-.4 0-.6.1l-3.1.9c-.3.1-.5.2-.7.4h-.2c-.2 0-.4 0-.6.1l-3.1.9c-.3.1-.5.2-.7.4h-.2c-.2 0-.4 0-.6.1-2.9.9-4.5 3.9-3.6 6.8.1.3.2.5.4.7 0 .3 0 .5.1.8l.1.2c-.7.7-1.2 1.5-1.5 2.5-.5 1.6-.4 3.3.3 4.8.7 1.4 1.8 2.4 3.2 3-.3.5-.6 1.1-.8 1.8-.9 3.3 1.1 6.7 4.5 7.6.5.1 1 .2 1.6.2 2.8 0 5.3-1.9 6-4.7.3-1 .3-2.1 0-3.1l.6-.8c.1.1.2.1.3.2l5.7 2.1h.1c.6.2 1.1.3 1.7.3 2.3 0 4.4-1.5 5.2-3.7v-.1c.3-1-.1-2-.9-2.5 2.1-1.2 3.2-3.8 2.5-6.2v-.1c-.2-.5-.3-.7-.5-.9zm-2.2-.2l-3.1.9-.9-3.1 3.1-.9.9 3.1zm-4 5.7l-3.1-1.1 2-2.7c.1.1.2.3.2.4 0 .3 0 .5.1.8l.8 2.6zm2.6-10.3l-3.1.9-.9-3.1 3.1-.9.9 3.1zm-4.4-6.8c1.4 0 2.6.9 3.1 2.3l-3.1.9-.9-3.1c.2-.1.5-.1.9-.1zm-2.5.6l.9 3.1-3.1.9-.9-3.1 3.1-.9zm-3 6.5c.3-.1.5-.2.7-.4h.2c.2 0 .4 0 .6-.1l2.5-.7.1.3c-1.5.1-2.8.9-3.7 2l-3.7 5-1-.4c-.5-1.2-1.4-2.2-2.5-2.9l-.2-.8 2.5-.7c.3-.1.5-.2.7-.4h.2c.2 0 .4 0 .6-.1l3-.8zm-1.6-5.2l.9 3.1-3.1.9-.9-3.1 3.1-.9zm-4.6 1.4l.9 3.1-3.1.9-.9-3.1 3.1-.9zm-4.6 1.4l.9 3.1-3.1.9c-.4-1.7.5
-3.5 2.2-4zm7.1 17.9c.1.2.2.5.2.8.2.7.2 1.5.1 2.2-.5 1.8-2.1 3-3.9 3-.3 0-.7 0-1-.1-2.1-.6-3.4-2.7-2.9-4.9.5-1.8 2.1-3 3.9-3 .3 0 .7 0 1 .1l1.7-2.2-2.3-.8c-.4.6-.9 1-1.5 1.4-.6.3-1.2.4-1.8.4-1.5 0-2.9-.8-3.6-2.2-1-2-.2-4.4 1.8-5.4l-.5-1.7 3.1-.9.7 2.3c1.2.4 2.1 1.4 2.5 2.6l.1.5 3.6 1.3 4.6-6.2c.6-.8 1.6-1.2 2.5-1.2.7 0 1.4.2 2 .7L168.5 215zm13.9-2.1c-.4 1.3-1.7 2.2-3 2.2.1.1.1.3 0 .4-.1.2-.3.4-.5.4h-.2l-3.8-1.3c-.3-.1-.4-.4-.4-.7 0-.1.1-.2.2-.3l-2.1-.8 2-2.6 7.8 2.7zm-.6-3.6l-.9-3.1 3.1-.9c.5 1.7-.5 3.5-2.2 4z"/>
+ <path fill="#FFFEFE" fill-rule="nonzero" d="M166.9 216.4c-.3-.9-1.1-1.5-2-1.5-.2 0-.4 0-.6.1-1.1.3-1.7 1.5-1.4 2.6.3.9 1.1 1.5 2 1.5.2 0 .4 0 .6-.1h.2c1-.3 1.6-1.4 1.3-2.4-.1-.1-.1-.2-.1-.2zM163.9 207.1c-.3-.8-1.1-1.3-1.9-1.3-.3 0-.5 0-.8.1-1.1.4-1.6 1.6-1.2 2.7.3.8 1.1 1.3 1.9 1.3.3 0 .5 0 .8-.1.1 0 .1 0 .2-.1 1-.4 1.5-1.5 1.1-2.5l-.1-.1zM136.1 109.9c-.3.6-.5 1.2-.6 1.8 0 .1-.1.2-.1.4-.1.7-.2 1.3-.2 2l-.4.2-.6.4-.9.6-.2.1-.4.3-2 1.2-2.7 1.7-2.3 1.4c-.3.1-.5.3-.7.5-1.8 1.4-2.5 3.9-1.5 6 .8 1.8 2.6 3 4.6 3h.2c.7 0 1.3-.2 1.9-.4.3-.2.7-.3 1-.6l.4-.2 1.6-1 1.1-.7.5-.3 1.9-1.2.9-.6 2.2-1.4.6-.4c.6.3 1.3.6 2 .7h.1c.7.2 1.4.2 2.1.2 4.5 0 8.4-3.1 9.4-7.5.3-1.4.3-2.9 0-4.4-.3-1.1-1-2-2.1-2.4h-.1c0-1.1-.5-2.1-1.3-2.8-1.1-.9-2.4-1.5-3.8-1.8h-.1c-.6-.1-1.3-.2-2-.2-1.8 0-3.4.5-4.9 1.4-.8.5-1.6 1.1-2.2 1.8-.4.6-1 1.4-1.4 2.2zm2.8 2.8c.6-2.9 3.2-4.9 6-4.9.4 0 .8 0 1.3.1.9.2 1.7.6 2.4 1.2l-.2.1.1.1-4.4 2.8c-.3.2-.6.5-.7.8-.2.6-.2 1.2.2 1.7.4.6 1 .9 1.7.9.4 0 .7-.1 1-.3l4.6-2.7c.2.9.2 1.9 0 2.8
-.3 1.5-1.2 2.7-2.2 3.5-1.1.8-2.4 1.3-3.8 1.3-.4 0-.9 0-1.3-.2-1-.3-2-.8-2.8-1.6l-.7.4-2.2 1.4-2.4 1.5-2.1 1.3-4 2.5c-.1.1-.2.2-.4.2-.2.1-.4.1-.6.1h-.1c-.6 0-1.1-.3-1.4-.9-.3-.8 0-1.7.8-2l11.5-7.3c-.1-.5-.2-1-.2-1.5-.3-.3-.3-.8-.1-1.3z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M154.8 144.4l-2.2-4.7c-.1-.3-.5-.4-.7-.3-.3.1-.4.5-.3.7l2.2 4.7c.1.2.3.3.5.3.1 0 .2 0 .2-.1.3 0 .4-.4.3-.6zM161 185.3c.1.2.3.2.5.2.1 0 .2 0 .3-.1.3-.2.3-.5.1-.8l-2.5-3.5c-.2-.3-.5-.3-.8-.1-.3.2-.3.5-.1.8l2.5 3.5z"/>
+ <path fill="#E1E1E6" fill-rule="nonzero" d="M179 214.8l-3.8-1.3c-.2-.1-.3 0-.5.1-.1.1-.2.2-.2.3-.1.3.1.6.4.7l3.8 1.3h.2c.2 0 .5-.1.5-.4v-.4c-.1-.2-.2-.3-.4-.3zM179.7 181.2c.1 0 .3 0 .4-.1.2-.2.3-.5.1-.8l-2.7-3.2-1.6-1.9c-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8l.9 1.1 3.3 4c.2.1.4.2.5.2z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M268.1 159.5l-6 5.5c-.2.2-.2.6 0 .8.1.1.3.2.4.2.1 0 .3 0 .4-.1l6-5.5c.2-.2.2-.6 0-.8-.2-.3-.5-.3-.8-.1zM125.9 112.2c.1.2.3.4.5.4h.2c.3-.1.4-.4.3-.7l-1.7-4.7c-.1-.3-.4-.4-.7-.3-.3.1-.4.4-.3.7l1.7 4.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M98.9 188.6c.6-.9 1.6-1.5 2.5-1.7-1.1.2-2.2.8-2.9 1.8-.2.2-.3.5-.4.7h.2c.2-.2.3-.5.6-.8zM113 187.5c-.7-.2-1.3-.4-2-.3-1.6 0-3.3.8-4.3 2.1 0 .1.1.2.1.3 1.4-2 3.9-2.8 6.2-2.1zM95.5 213.7c.3.6.7 1.2 1.3 1.6.5.4 1.1.6 1.7.6l-.1-.1c-.6-.1-1.2-.3-1.7-.7-.6-.4-1-.9-1.2-1.4zM90.5 210.7c-2-1.5-2.9-4-2.4-6.3-.6 2.4.3 5 2.4 6.5 1.1.8 2.4 1.1 3.6 1.1.3 0 .7 0 1-.1v-.2c-1.6.4-3.2.1-4.6-1zM91.6 191.8c.4-.5.8-1 1.3-1.4-.6.4-1.2.9-1.6 1.6-1.8 2.5-1.4 5.9.8 7.9.1 0 .2-.1.3-.1-2.3-2-2.7-5.5-.8-8zM116.4 197.4c.2.1.3.2.5.4-.2-.2-.4-.4-.7-.5-.2-.2-.5-.3-.8-.4.3.1.7.3 1 .5zM109.4 218.5l-.6-3.3h-.1l.5 3.3c.1.1.2.1.2 0zM108.5 214.1c.1 0 .1 0 0 0 .1 0 .1 0 0 0zM102.4 213.5c-.1.3-.2.5-.4.7l-.3.3s0 .1.1.1l.3-.3c.1-.2.2-.5.3-.8l.1.1c.3.2.6.3.9.5-.4-.1-.7-.3-1-.6 0 .1 0 0 0 0zM111.9 213.8c0 .1.1.2.2.4.2.4.4.9.5 1.4 0-.1 0-.1.1-.2-.2-.5-.4-1-.5-1.4-.1-.1-.2-.2-.3-.2 0-.3-.2-.5-.5-.5h-.2c-.1 0-.2.1-.2.2.1 0 .1-.1.2-.1.3 0 .6.1.7.4zM110.3 225.1c.1.3-.2.6-.6.8-.5.3-1.2.5
-1.8.5.7-.1 1.4-.3 2-.5.5-.2.8-.6.7-.9l-1-5.4h.1c-.1 0-.2.1-.2.1l.8 5.4zM99.7 215.7l.1.1h.1c-.1 0-.1 0-.2-.1zM104.3 217.3c-.7-.2-1.3-.5-1.9-.9.6.4 1.2.7 1.9.9z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M114.5 211.4c.3.1.5.4.5.7-.4 1.9-1 4.2-2.5 5.8l-.1.1c-.5.6-1.2 1.1-2 1.4.9-.4 1.6-.9 2.1-1.5l.1-.1c1.4-1.6 2-3.9 2.4-5.8.1-.3-.1-.6-.5-.7h-.1c-.3 0-.5.2-.6.5v.1c.1-.3.4-.5.7-.5z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M121.5 195.5c.4-1.4.5-2.9.2-4.4-.4-2.7-1.9-5.1-4.2-6.8-1.8-1.3-3.9-2-6.1-2-1.4 0-2.7.3-4 .8-1.4-.9-3.1-1.3-4.8-1.3-2.4 0-4.7.9-6.4 2.5-3.3.1-6.5 1.8-8.4 4.5-1.9 2.7-2.5 6.2-1.6 9.3-.3.3-.6.7-.9 1.1-3.5 4.9-2.4 11.7 2.5 15.2 1.2.8 2.5 1.4 3.8 1.8.6 1 1.4 1.9 2.4 2.6 1.2.9 2.6 1.4 4 1.5.7.6 1.5 1 2.4 1.5l.7 4.2.1.5c.3 2.1 2.2 4.6 6.2 4.6.7 0 4.4-.1 6.5-2.6.5-.6.8-1.2 1-1.9.2-.8.3-1.6.2-2.4l-.3-2.1c.4-.3.8-.7 1.2-1.1l.2-.2c2.2-2.5 3.1-5.7 3.5-7.9.1-.5.1-1.1.1-1.6.8-.6 1.5-1.4 2.1-2.2 1.8-2.4 2.5-5.4 2-8.4-.4-1.9-1.2-3.7-2.4-5.2zm-1.9 12.1c-.8 1.1-1.8 2-3 2.7.4.6.6 1.4.5 2.1-.4 1.9-1.1 4.8-2.8 6.8l-.1.1c-.6.7-1.3 1.2-2.1 1.7l.7 3.6c.1.5 0 1.1-.2 1.6-.1.3-.2.5-.4.7-1.1 1.3-3.1 1.8-4.6 1.8-2.4 0-3.6-1.2-3.8-2.5l-.1-.5-1-5.5c-1.5-.6-2.7-1.3-3.7-2.2-1.3 0-2.5-.3-3.5-1.1-1-.7-1.8-1.7-2.2-2.8-1.5-.1-2.9-.6-4.1-1.5-1.8-1.3-3.1-3.2-3.5-5.4-.4-2.2.1-4.4 1.4-6.3.5-.7 1.1-1.3 1.7-1.8-1.4-2.7-1.2-6 .6-8.6 1.5-2.2 4.1-3.6 6.8-3.6h.7c1.3-1.6 3.2-2.6 5.3
-2.6 1.4 0 2.8.4 4 1.2.2.2.4.3.6.5 1.2-.8 2.7-1.3 4.2-1.3 1.7 0 3.3.5 4.6 1.4 1.7 1.2 2.9 3 3.3 5.1.3 1.6.1 3.2-.6 4.6 1.5 1.3 2.4 3 2.8 5 .4 2.5-.1 4.9-1.5 6.8z"/>
+ <path fill="url(#w)" fill-rule="nonzero" d="M108.2 214.3c.1 0 .2-.1.3-.1-.1 0-.2 0-.3.1z"/>
+ <path fill="url(#x)" fill-rule="nonzero" d="M110.3 225.1l-.9-5.4c.1 0 .2-.1.2-.1.2-.1.5-.1.7-.2.8-.3 1.5-.8 2-1.4l.1-.1c1.4-1.6 2.1-3.9 2.5-5.8.1-.3-.1-.6-.5-.7-.3-.1-.6.1-.7.4-.2 1.2-.6 2.6-1.1 3.7v-.1c0 .1 0 .1-.1.2-.2-.5-.4-1-.5-1.4-.1-.2-.1-.3-.2-.4-.1-.3-.4-.5-.7-.4-.1 0-.1.1-.2.1-.1.2-.2.4-.1.6 0 .1.1.3.2.5.2.4.5 1 .6 1.6.2.6.1.9 0 .9l-.1.1c-.4.5-1 .9-1.6 1.1-.2.1-.3.1-.5.2h-.1l-.5-3.3c-.9.3-1.8.4-2.2.4h-.4c-.3 0-.5-.3-.5-.6 0-.1.1-.2.2-.3-.7 0-1.3-.2-2-.4h.1l.5 3s-.1 0-.1-.1c-.7-.2-1.3-.5-2-.9-.1 0-.2 0-.3-.1-1.2-.7-1.9-1.8-2.2-2.7v-.1-.2c-.1-.2-.1-.4-.1-.6v-.1c0-.1-.1-.3-.2-.4-.1-.1-.3-.1-.5 0-.3.1-.3.9-.1 1.8.2.6.6 1.2 1 1.7l.1.1c.3.4.7.7 1 1 1.1.9 2.5 1.4 3.8 1.8l1.3 7.2c1.3 0 2.6.1 3.8.1.1-.1.4-.3.3-.7z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M107.5 226.5h.4c.7-.1 1.4-.3 1.8-.5-1.2-.1-2.5-.1-3.8-.1v.1c.2.4.8.5 1.6.5z"/>
+ <path fill="url(#y)" fill-rule="nonzero" d="M107.5 226.5h.4c.7-.1 1.4-.3 1.8-.5-1.2-.1-2.5-.1-3.8-.1v.1c.2.4.8.5 1.6.5z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M105.2 203.6c.8-.3 1.5-.5 2.3-.8-.8.3-1.6.6-2.3.8zM102.8 204.3c-.7.2-1.5.3-2 .5.6-.2 1.3-.3 2-.5zM98.8 214s0 .1 0 0c.2.7.6 1.3.9 1.7h.1c-.5-.5-.8-1-1-1.7zM107.4 202.8c.7-.3 1.4-.6 1.9-.8-.5.2-1.2.5-1.9.8zM99.6 212.7s.1 0 0 0c.1.1.1 0 0 0z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M105.8 214.7c.1-.1.3-.2.4-.2 0 0 1 .1 2-.3.1 0 .2-.1.3-.1h.1c.4-.2.8-.5 1.2-.8l.1-.1.4-.4.5-.5c.1-.1.1-.2.2-.3.6-.9 1-2 1.1-3h.6c2 0 4-1 5.3-2.8 1.9-2.7 1.4-6.4-1-8.5-.1-.1-.3-.2-.5-.4-.3-.2-.6-.4-1-.6-.1 0-.1-.1-.2-.1.2-.2.4-.4.5-.6 1.8-2.6 1.2-6.1-1.4-7.9-.4-.3-.9-.5-1.3-.7-2.2-.7-4.8.1-6.2 2.1 0-.1-.1-.2-.1-.3-.1.1-.1.2-.2.2-.3-.8-.9-1.5-1.6-2-.8-.6-1.7-.8-2.7-.8-.3 0-.5.1-.8.1-1 .3-1.9.8-2.5 1.7-.2.3-.4.6-.5.9h-.2c0 .1-.1.1-.1.2-.6-.2-1.2-.2-1.8-.2-1.2 0-2.3.4-3.3 1-.5.4-1 .8-1.3 1.4-1.8 2.5-1.4 6 .8 8.1-.1 0-.2.1-.3.1l.1.1c-1.3.4-2.4 1.2-3.2 2.4-.2.3-.4.7-.6 1.1v.1l-.3.9c-.5 2.3.4 4.8 2.4 6.3 1.4 1 3.1 1.3 4.6 1.1v.2c0 .3 0 .6.1.9v.1c.1.2.1.4.2.6.3.6.7 1.1 1.2 1.4.5.4 1.1.6 1.7.7-.3-.4-.5-.9-.6-1.4-.7-2.4.3-3 .7-3.2.5-.2 1.1-.2 1.5.1.4.3.7.7.8 1.3 0 .5.3 1.3.9 2l.3-.3c.2-.2.3-.5.4-.7 0 0 .1 0 .1.1.3.2.6.4.9.5.1.1.3.1.4.2h.1c.5.2 1.1.3 1.8.3zm2.1-19.7c.6-.2 1.3.1 1.5.7l.8 2.4c-.8-.1-1.6.2-2.2.8l-.8-2.4c-.3-.7.1-1.3.7-1.5zM97 199.8c-.2
-.6.1-1.3.7-1.5.6-.2 1.3.1 1.5.7l.8 2.4c-.8-.1-1.6.2-2.2.8l-.8-2.4zm6.3 8.1c.1-.1.1-.2.2-.2-.1.1-.2.1-.2.2-.2 0-.4 0-.6-.1-.7-.1-1.4-.3-2.1-.6-.4-.2-.8-.3-1.1-.6-.4-.2-.8-.5-1.2-.8l-.2-.1c-.1-.1-.1-.2 0-.3 0 0 0-.1.1-.1.2-.1.5-.2.7-.3.3-.1.6-.3 1-.4l1.7-.6c1.1-.4 2.3-.8 3.4-1.2 1.2-.4 2.3-.7 3.5-1.1l1.7-.5c.3-.1.7-.2 1-.3.2-.1.5-.1.7-.2.1 0 .2 0 .2.1v.1l-.1.2c-.1.5-.3 1-.5 1.4-.2.4-.4.8-.6 1.1-.4.7-.9 1.3-1.3 1.8-.1.1-.3.2-.4.4-.8.8-1.7 1.3-2.7 1.6-1 .5-2.1.7-3.2.5z"/>
+ <path fill="url(#z)" fill-rule="nonzero" d="M203.6 209.1c.1.2.1.3.1.5.1 0 .2 0 .3.1-.1-.3-.3-.4-.4-.6z"/>
+ <path fill="url(#A)" fill-rule="nonzero" d="M227 221.9v-1.3-1.4-1.4-.7-1c-.7.3-1.5.5-2.2.5 0 2.6 0 4.6.1 6.2h2.2c-.1-.3-.1-.6-.1-.9z"/>
+ <path fill="url(#B)" fill-rule="nonzero" d="M203.3 223.1l-.2-.2-.5-.5c-.1-.1-.2-.2-.2-.3-.1-.2-.3-.3-.4-.5-.1-.1-.2-.2-.2-.3-.2-.2-.3-.4-.5-.5-.1-.1-.2-.2-.2-.3l-.6-.6c-.1-.1-.1-.2-.2-.2-.3-.3-.5-.6-.8-.9-.5-.6-1-1.2-1.5-1.9l-.1-.1-1.2-1.8c0-.1-.1-.1-.1-.2-.4-.6-.7-1.2-1.1-1.9 0-.1-.1-.1-.1-.2-.3-.6-.7-1.3-1-1.9 0-.1 0-.1-.1-.2-.3-.6-.5-1.1-.7-1.7-1-.4-2-.9-3-1.4 1.6 4.2 3.9 8.9 7.1 12.7 1.1 1.3 2 2.3 2.9 3.3.9-.1 1.9-.1 2.8-.2 0 0 0-.1-.1-.2z"/>
+ <path fill="url(#C)" fill-rule="nonzero" d="M204.7 212.6c0 .1 0 .1.1.2.1.4.2.8.4 1.2v.1c.1.4.2.7.3 1.1 0 .1.1.2.1.3.1.4.2.7.3 1.1v.1l.3 1.2c0 .1.1.2.1.3.1.3.2.6.2.9 0 .1.1.2.1.3.1.4.2.7.3 1.1 0 .1 0 .1.1.2.1.3.1.6.2.8 0 .1 0 .2.1.3.1.3.1.6.2.9V223c.7 0 1.5-.1 2.3-.1-.4-2.1-1.3-5.4-2.9-10.6-.8-.1-1.6-.3-2.5-.4.1.3.2.5.3.7z"/>
+ <path fill="url(#D)" fill-rule="nonzero" d="M214.9 199.4l8.1 2.3h.2c.4 0 .7-.2.8-.6.1-.4-.1-.9-.6-1l-8.1-2.3h-.2c-.4 0-.7.2-.8.6-.1.4.1.8.6 1z"/>
+ <path fill="url(#E)" fill-rule="nonzero" d="M267.5 198.4l-1.2-.6c-.4.3-.9.6-1.3.9.9-.1 1.7-.2 2.5-.3z"/>
+ <path fill="url(#F)" fill-rule="nonzero" d="M151.3 155.4c-1.2-.4-2.4-.6-3.6-.6-2.5 0-4.9.9-6.8 2.5l1.2-3.3c.1-.3 0-.7-.4-.8h-.2c-.3 0-.5.2-.6.4l-1.1 2.8v4.4l5.2 2h.2c.3 0 .5-.2.6-.4.1-.3 0-.7-.4-.8l-3.7-1.4c1.5-1.8 3.7-2.7 5.8-2.7 1.8 0 3.6.6 5.1 1.9 3.2 2.8 3.6 7.7.7 10.9-1.5 1.8-3.7 2.7-5.8 2.7-1.8 0-3.6-.6-5.1-1.9-1.7-1.5-2.7-3.6-2.7-5.9v2.5c0 1.1-.3 2.2-.9 3 1.9 2.8 5 4.6 8.6 4.6h.1c5.7-.1 10.3-4.7 10.2-10.4.2-4.2-2.4-8-6.4-9.5z"/>
+ <path fill="url(#G)" fill-rule="nonzero" d="M144.1 167.6l.8.3.1.2 3.3-1.5c.2-.1.3-.3.3-.4l1.8-4.8c.1-.3 0-.7-.4-.8h-.2c-.3 0-.5.2-.6.4l-1.7 4.6-3.1 1.3c-.3 0-.4.4-.3.7z"/>
+ <path fill="url(#H)" fill-rule="nonzero" d="M163 112.5c.1.5.7.5.8 0 1.2-4.8 5-8.6 9.8-9.8.5-.1.5-.7 0-.8-4.8-1.2-8.6-5-9.8-9.8-.1-.5-.7-.5-.8 0-1.2 4.8-5 8.6-9.8 9.8-.5.1-.5.7 0 .8 4.8 1.2 8.5 5 9.8 9.8z"/>
+ <path fill="url(#I)" fill-rule="nonzero" d="M234.8 212.7c-.1.5-.2 1.1-.3 1.6v.1c-.1.5-.2 1-.4 1.5-.1.5-.3.9-.4 1.4-.1.4-.3.8-.4 1.1 0 .1-.1.3-.1.4-.1.2-.2.5-.3.7-.1.1-.1.3-.2.4-.1.2-.2.4-.2.6-.1.1-.1.3-.2.4-.1.2-.2.4-.2.5-.1.1-.1.3-.2.4-.1.2-.2.3-.2.5-.1.1-.1.2-.2.3 0 0 0 .1-.1.1.8 0 1.7 0 2.5.1.8-1.7 1.5-3.5 2-4.9.6-1.7 1.1-4 1.6-6.9l-2.4.6c-.1.3-.1.6-.2 1l-.1.1z"/>
+ <path fill="url(#J)" fill-rule="nonzero" d="M191.9 204.4l-.3-.9c1.4 1.1 3.3 2 6 2.5h.1c.3 0 .5-.2.5-.5.1-.3-.1-.6-.4-.6-5.2-1-7.3-3.8-8.2-5.4-.1-.4-.3-.8-.4-1.2 0-.1-.1-.3-.1-.5l-.3-1.2c0-.2-.1-.4-.1-.5-.1-.4-.1-.8-.2-1.2v-.6-1c-.1.1-.2.1-.3.1-.1 0-.2 0-.3-.1-.5-.4-1.1-.7-1.6-1.1-.1 4.4.9 8.4 3 11.4l.3.9c1 .6 1.9 1.1 2.9 1.6-.3-.6-.4-1.2-.6-1.7z"/>
+ <path fill="url(#K)" fill-rule="nonzero" d="M178.1 85.3c-.1-.3-.5-.3-.6 0-.8 3.2-3.4 5.8-6.6 6.6-.3.1-.3.5 0 .6 3.2.8 5.8 3.4 6.6 6.6.1.3.5.3.6 0 .8-3.2 3.4-5.8 6.6-6.6.3-.1.3-.5 0-.6-3.3-.9-5.8-3.4-6.6-6.6z"/>
+ <path fill="url(#L)" fill-rule="nonzero" d="M180.4 204.7l3.1-.9-.9-3-3.1.9"/>
+ <path fill="url(#M)" fill-rule="nonzero" d="M176.8 200.9c-.9 0-1.9.4-2.5 1.2l-4.6 6.2-3.6-1.3-.1-.5c-.4-1.2-1.3-2.2-2.5-2.6l-.7-2.3-3.1.9.5 1.7c-2 1-2.8 3.4-1.8 5.4.7 1.4 2.1 2.2 3.6 2.2.6 0 1.2-.1 1.8-.4.6-.3 1.2-.8 1.5-1.4l2.3.8-1.7 2.2c-.3-.1-.7-.1-1-.1-1.8 0-3.4 1.2-3.9 3-.6 2.1.7 4.3 2.9 4.9.3.1.7.1 1 .1 1.8 0 3.4-1.2 3.9-3 .2-.7.2-1.5-.1-2.2-.1-.3-.1-.5-.2-.8l10.3-13.5c-.6-.3-1.3-.5-2-.5zm-13.9 8.8c-.1 0-.1 0-.2.1-.2.1-.5.1-.8.1-.8 0-1.6-.5-1.9-1.3-.4-1.1.1-2.3 1.2-2.7.2-.1.5-.1.8-.1.8 0 1.6.5 1.9 1.3 0 0 0 .1.1.1.4 1-.1 2.1-1.1 2.5zm2.8 9.2h-.2c-.2.1-.4.1-.6.1-.9 0-1.7-.6-2-1.5-.3-1.1.3-2.3 1.4-2.6.2-.1.4-.1.6-.1.9 0 1.7.6 2 1.5v.1c.4 1.1-.2 2.2-1.2 2.5z"/>
+ <path fill="url(#N)" fill-rule="nonzero" d="M274.7 179.9c.4-1.1 1.2-2 2.3-2.4-.4-.2-.8-.3-1.2-.4-.3-.1-.6-.1-.9-.2-.2 1-.4 1.9-.8 3h.6z"/>
+ <path fill="url(#O)" fill-rule="nonzero" d="M180.9 206.3l.9 3.1c1.7-.5 2.6-2.3 2.1-4l-3 .9z"/>
+ <path fill="url(#P)" fill-rule="nonzero" d="M284.7 187.9c-.4-.2-.7-.3-1-.3-.7 0-1.3.3-1.6.9-1.7 3.1-4.9 4.9-8.3 4.9-.8 0-1.5-.1-2.3-.3-2.9-.7-5.3-2.8-6.4-5.6l3.7 1c.2 0 .3.1.5.1.8 0 1.6-.6 1.8-1.4.3-1-.3-2-1.4-2.3l-7.3-1.9c-.2 0-.3-.1-.5-.1-.8 0-1.6.6-1.8 1.4l-1.9 7.3c-.3 1 .3 2 1.4 2.3.2 0 .3.1.5.1.8 0 1.6-.6 1.8-1.4l.5-2c2.4 4.4 6.9 6.9 11.5 6.9 2.1 0 4.2-.5 6.1-1.5 2.3-1.3 4.3-3.2 5.5-5.6.5-.9.2-2-.8-2.5z"/>
+ <path fill="url(#Q)" fill-rule="nonzero" d="M172.7 212.8l2.1.8c.1-.1.3-.1.5-.1l3.8 1.3c.2 0 .3.2.3.3 1.3 0 2.6-.9 3-2.2l-7.7-2.7-2 2.6z"/>
+ <path fill="url(#R)" fill-rule="nonzero" d="M176.1 196l-.9-3-3.1.9 1 3"/>
+ <path fill="url(#S)" fill-rule="nonzero" d="M171.5 197.4l-.9-3.1-3.1 1 1 3"/>
+ <path fill="url(#T)" fill-rule="nonzero" d="M166.9 198.8l-.9-3.1-3.1 1 1 3"/>
+ <path fill="url(#U)" fill-rule="nonzero" d="M162.3 200.2l-.9-3.1c-1.7.5-2.6 2.3-2.1 4l3-.9z"/>
+ <path fill="url(#V)" fill-rule="nonzero" d="M274.7 180c-.2 0-.4-.1-.6-.1-.4 1.3-1 2.7-1.8 4.1.9 1 1.3 2.4 1 3.8-.3 1.3-1.3 2.3-2.5 2.8l.9.3c3-2.5 5.1-4.5 6.1-5.5l-.3-.1c-1.1-.3-2-1-2.5-1.9-.6-1-.7-2.1-.4-3.1 0-.1.1-.2.1-.3z"/>
+ <path fill="url(#W)" fill-rule="nonzero" d="M274.9 191.2c2.2-.3 4.2-1.7 5.3-3.7v-.1c.3-.4.6-.8 1-1.1l-1-.3s0 .1-.1.1c0 .2-1.9 2.2-5.2 5.1z"/>
+ <path fill="url(#X)" fill-rule="nonzero" d="M187.6 158.4c-1.4-.9-3.2-.6-4 .7-.8 1.3-.3 3 1.1 3.9 1.4.9 3.2.6 4-.7.8-1.2.3-3-1.1-3.9z"/>
+ <path fill="url(#Y)" fill-rule="nonzero" d="M276.7 136.6c-.3.7-.4 1.4-.4 2.1l-.9.3c-1.2.5-2.5 1.1-3.7 1.8-.2.1-.4.3-.7.4-.4.2-.7.5-1.2.8-.2.1-.4.3-.6.4l-.6.5c-.1.1-.3.2-.4.3h-.8c-1.1.1-9.8 2-18 3.9.6-1.9 1.2-3.8 1.6-5.8 1.3 0 2.7-.1 4-.2 1 .9 2.3 1.3 3.7 1.3 2.1 0 3.9-1.1 4.9-2.7.5.1 1 .1 1.5.1 4.8 0 9.1-3 10.7-7.5 3-1 5.2-3.7 5.7-6.9.6-.9 1.2-1.8 1.8-2.8 4-1.5 6.6-5.7 6-10 0-.4-.1-.7-.2-1.1 1.5-1.9 2.1-4.4 1.8-6.8-.3-2.1-1.2-4.1-2.7-5.6-.3-2.4-.8-4.7-1.5-7 .1-.4.1-.9.1-1.3 0-3.3-1.7-6.4-4.6-8.1-2.8-4.3-6.6-8-10.8-10.8-1.3-3.8-4.8-6.4-9-6.4-1.4 0-2.8.3-4.1.9-1.2-.3-2.4-.6-3.6-.8-1.7-1.5-4-2.4-6.2-2.4-.4 0-.8 0-1.2.1-2 .2-3.8 1.1-5.3 2.5-2.4.5-4.8 1.2-7 2.1-.6-.1-1.3-.2-2-.2-4.6 0-8.5 3.4-9.3 7.8l-.1.1c-4.1 1.1-7 4.8-7 9.1v.7c-.4.8-.8 1.7-1.1 2.5-1.6 1-2.6 2.8-2.6 4.8 0 .4 0 .7.1 1.1-.6-.6-1.2-1.2-1.9-1.7-.2-1.3-.8-2.4-1.4-3.4.3-2-.6-3.9-1.8-6.3-.2-.4-.4-.9-.7-1.3-.5-1-1.4-1.6-2.4-1.6-1.5 0-2.7 1.2-3.9 3.8-.7 1.6-2.2 5.3-1.1 7.6-.5 3.6 0 6 1.5 7.1l.1.1c.2 1.6.6 3.2 1.1 4.6-11 4.2
-28.2 12.1-33.8 19.4-1.3 1.8-1.6 4.3-.6 7.6 1.9 6.5 8.8 16.5 14 18.4 7.3 2.7 17.2 4.3 27.1 4.3h2c-2.1 1.4-4.1 2.9-6 4.5-3.9 1.5-7 2.8-9.5 3.9-.5-.8-1-1.5-1.6-2.2-1.1-1.3-2.4-2.4-3.8-3.3-2.9-1.8-6.2-2.8-9.7-2.8-6.2 0-11.9 3.1-15.2 8.3-1.1 1.7-1.8 3.4-2.3 5.3l.6.9c.2.3.1.6-.1.8-.1.1-.2.1-.3.1-.2 0-.3-.1-.5-.2-.5 3.2-.1 6.5 1 9.4 1.6 2.5 3.3 4.8 5 7.1.6.6 1.3 1.1 2.1 1.6 2.9 1.8 6.2 2.8 9.7 2.8 1.2 0 2.4-.1 3.5-.3l2.4-.6c-.2 1.1-.3 2.1-.3 3.2.7.5 1.4 1 2.2 1.5v-.1-1.3c0-.2 0-.5.1-.7 0-.4.1-.9.1-1.3 0-.3.1-.5.1-.8.1-.4.2-.9.2-1.3v-.2c0-.2.1-.4.1-.6.1-.5.2-.9.3-1.4.1-.3.1-.6.2-.8.1-.5.3-.9.4-1.4.1-.3.2-.6.3-.8.2-.5.4-1 .5-1.4.1-.3.2-.6.3-.8.2-.5.4-1 .7-1.5.1-.3.2-.5.4-.8.3-.5.5-1.1.8-1.6.1-.2.2-.5.4-.7.3-.6.7-1.2 1-1.8.1-.2.2-.4.3-.5.2-.3.4-.6.6-.8 3-4.4 5.4-6.8 5.4-6.8.1-.1.2-.3.2-.4 0-.1-.1-.3-.2-.4-.2-.2-.6-.2-.8 0-.1.1-2.3 2.3-5.1 6.4-1.1.2-2.1.3-3.1.5h-.1c-.4.1-.8.1-1.1.2h-.2c-.3 0-.6.1-.9.1h-.2c-.3 0-.6.1-.9.1-.2 0-.4 0-.6.1h-.7-.2s-.8 0-1.2-.5c0-.1-.1-.1-.1-.2s-.1-.1-.1-.2v-.6c0-.
2.1-.5.3-.9.1-.1.1-.2.2-.4.2-.3.6-.6 1.2-1 .1 0 .1-.1.2-.1s.1-.1.2-.1c1.1-.6 2.6-1.4 4.4-2.2 4.1-1.9 9.7-4.1 14.3-5.9.1 0 .1-.1.2-.1.5-.4 1-.9 1.6-1.3.4-.3.7-.6 1.1-.8.3-.3.7-.5 1-.8.8-.6 1.5-1.1 2.3-1.6.2-.1.4-.3.6-.4.5-.3 1.1-.7 1.6-1 .1-.1.3-.2.4-.3.8-.5 1.6-.9 2.4-1.4.3-.2.6-.4 1-.5 4.1-.6 10.4-1.6 14.2-3.2.3-.1.4-.4.3-.7-.1-.3-.4-.4-.7-.3-5.7 2.3-17.7 3.6-17.8 3.6h-.2c-1.7.1-3.4.2-5.1.2-9.9 0-19.5-1.6-26.3-4.1-.7-.3-1.4-.7-2.3-1.4-.2-.2-.4-.3-.6-.5-.4-.4-.8-.8-1.3-1.2-.2-.2-.4-.4-.6-.7-.4-.5-.9-1-1.3-1.5s-.8-1.1-1.2-1.6c-.6-.8-1.2-1.7-1.8-2.6-.4-.6-.7-1.2-1.1-1.8-2-3.6-3.3-7.2-2.9-9.7v-.1c.1-.6.3-1.1.7-1.6.2-.2.4-.4.6-.7.1-.1.1-.2.2-.2.1-.2.3-.3.4-.5l.3-.3.4-.4.3-.3c.1-.1.3-.3.5-.4.1-.1.2-.2.4-.3.2-.1.3-.3.5-.4.1-.1.3-.2.4-.3.2-.1.3-.3.5-.4.1-.1.3-.2.4-.3.2-.1.4-.3.6-.4.1-.1.3-.2.4-.3.2-.1.4-.3.6-.4.1-.1.3-.2.4-.3.2-.2.5-.3.7-.5.1-.1.2-.2.4-.2.3-.2.7-.4 1-.6.1-.1.2-.1.3-.2.3-.2.7-.4 1-.6.2-.1.3-.2.5-.3.2-.1.5-.3.7-.4.2-.1.4-.2.5-.3.2-.1.5-.3.7-.4l.6-.3c.2-.1.5-.3.7-.4l.6-.3c.2-
.1.5-.2.7-.4l.6-.3c.2-.1.5-.2.7-.4l.6-.3c.2-.1.5-.2.7-.3.2-.1.4-.2.7-.3.2-.1.5-.2.7-.3.2-.1.5-.2.7-.3.2-.1.5-.2.7-.3.2-.1.4-.2.7-.3.3-.1.5-.2.8-.3.5-.2.9-.4 1.4-.6l.6-.3c.3-.1.5-.2.8-.3l.6-.3c.3-.1.5-.2.8-.3l.6-.3c.3-.1.5-.2.8-.3.2-.1.4-.2.6-.2.3-.1.5-.2.8-.3.2-.1.4-.2.6-.2.3-.1.5-.2.8-.3.2-.1.4-.1.5-.2.3-.1.5-.2.8-.3.2-.1.4-.1.5-.2.3-.1.5-.2.8-.3.2-.1.3-.1.5-.2s.4-.1.6-.2c-.1.2-.1.5 0 .7 1.8 5.7 5.9 6.6 6.1 6.6h.2c.5 0 1-.4 1.1-.9.1-.6-.3-1.2-.9-1.3-.1 0-2-.5-3.5-3 3.4.1 7.2-2.6 7-6 1.4 1 3.5 2.9 3.5 5.5 0 3.8-3.7 5.1-3.9 5.2-.3.1-.4.4-.4.7 0 0 0 .1.1.1.1.2.3.3.5.3h.2s4.6-1.6 4.7-6.2c0-2-1-3.6-2.1-4.8l1.4-.4c.5.4 1.7 1.2 3.2 1.2h.6c.3 0 .5-.3.5-.6v-.1c-.1-.2-.3-.4-.6-.3-1.7.2-3.1-1.1-3.1-1.1-.1-.1-.4-.2-.6-.1l-2.3.7c-.2-.2-.5-.4-.7-.5 0-.7.1-1.4.1-2.2 0-.4.1-.9.2-1.3s.1-.9.2-1.3c-.5-.6-.7-1.3-.7-2.1 0-.6.1-1.1.4-1.5.2-.5.5-.9.9-1.2.1-.1.3-.2.4-.3.1-.1.3-.2.5-.2.2-.5.3-.9.5-1.3.2-.5.4-.9.6-1.4.1-.3.3-.7.5-1 0-.3-.1-.7-.1-1v-.1-.1c0-.6.1-1.3.3-1.8.2-.8.6-1.6 1.1-2.2.2-.3.5-.7.8-.9.5-
.5 1.1-.9 1.7-1.3.6-.3 1.3-.6 2.1-.7.3-.4.7-.7 1-1 0-.3.1-.7.2-1 .1-.4.2-.7.3-1 .9-2.3 3-4 5.5-4.5h.3c.3 0 .7-.1 1-.1.3 0 .6 0 .8.1.5.1.9.1 1.3.3.6-.3 1.3-.5 1.9-.8 1.3-.5 2.6-.9 4-1.2.7-.2 1.4-.3 2.1-.4.6-.6 1.2-1.1 2-1.5.8-.4 1.6-.7 2.5-.8.3 0 .6-.1.9-.1h1c.2 0 .4.1.5.1.1 0 .2.1.3.1.2 0 .3.1.5.1.1 0 .2.1.3.1.1.1.3.1.4.2.1 0 .2.1.3.1.1.1.3.2.4.2.1.1.2.1.3.2.1.1.3.2.4.3l.2.2c.2.2.4.3.6.5 1.7.2 3.3.6 4.9 1.1.6-.3 1.2-.6 1.8-.8.1 0 .2 0 .3-.1.2-.1.5-.1.7-.2h1c.4 0 .8 0 1.2.1h.2c.4.1.7.2 1 .3.1 0 .1 0 .2.1.3.1.7.3 1 .4 0 0 .1 0 .1.1l.9.6c.3.2.6.5.8.8.3.3.5.6.7.9v.1c.2.3.4.7.5 1v.1c.1.4.3.7.4 1.1.1.4.2.8.2 1.3 3.1 2.5 5.8 5.5 7.8 8.9 1.2 0 2.2.3 3.2.8.6.3 1.1.7 1.6 1.1.5.4.9.9 1.2 1.4 0 0 0 .1.1.1.1.2.3.5.4.7 0 0 0 .1.1.1l.3.9v.1c.1.2.1.5.2.7v.2c0 .3.1.6.1.9V92.9c0 .2-.1.5-.1.7-.3 1.7-1.2 3.1-2.5 4.2.2 1.5.3 2.9.3 4.4 1.2 1.2 2 2.8 2 4.7.1 2.2-.9 4.2-2.5 5.5.2.6.3 1.2.3 1.8.1 3.4-2.4 6.3-5.7 6.9-.8 1.2-1.7 2.3-2.6 3.3-.5 2.8-2.8 4.8-5.5 5-1.2 3.7-4.9 6.2-9 5.8-.9-.1-1.8-.3-2.6-.7h-.2c-.
4 1.6-1.9 2.6-3.5 2.5-.3 0-.5-.1-.8-.2-.3 1.2-.6 2.4-.9 3.5h1-2.4c.2-3.6-.3-5.8-.4-5.9-.1-.3-.4-.5-.7-.4h-.1c-.2.1-.4.4-.3.6 0 0 .9 3.8-.1 9.4-.4 1.4-.8 2.8-1.3 4.3-.1.2-.1.4-.2.6-.3.9-.6 1.7-1 2.6 7.4-1.8 15.5-3.6 19.4-4.4l-.6.6c-.9.9-1.9 2-2.7 2.9-.8 1-1.4 1.8-1.8 2.3-.2.3-.4.5-.5.7 0 0 0 .1-.1.1-.1.1-.1.2-.1.2-.2.3-.2.6-.3.9-2.9 1.5-6 3.1-9 4.5-2.9 1.4-5.5 2.7-7.6 3.6-.2.1-.3.2-.5.2-.1.1-.1.3-.2.4-.1.2-.2.4-.2.6 0 0 0 .1-.1.1-.1.4-.3.7-.4 1.1v.1c-.1.4-.3.8-.4 1.2-.1.4-.3.9-.4 1.3-.4 1.4-.8 2.9-1.1 4.4-1 4.8-1 5-.9 5.1.1.2.3.4.5.4h.2c.3-.1.4-.3.4-.6s.2-1.4.5-2.9c.9-.2 1.8-.3 2.6-.4 1.2-1.2 2.8-2 4.5-2.1 2-.2 3.9.6 5.3 1.8.8-.3 1.7-.5 2.7-.4 1.3.1 2.6.5 3.6 1.3 1.3-.2 2.4-.4 3.5-.7.4-.1.8-.3 1.2-.4.9-.8 1.9-1.6 3.1-2.2.7-.4 1.4-.6 2.1-.9 2.1-1.9 3.3-4 3.8-5.3.1-.2.1-.3.2-.5 0-.1.1-.3.1-.3.1-.2.1-.3.1-.3v.1c.1.1.2.3.3.6.4.9 1.1 2.6 1.5 4.9.8.1 1.6.2 2.3.3-.6-4.3-2.2-7-2.3-7.1-.4-.7-1.1-1.1-1.9-1.1h-.3c-.9.1-1.6.8-1.8 1.7-.1.2-1.6 5.6-7.9 8-2-1.7-4.3-3.1-7-4.3-2.9-1.2-6.1-1.8-9.7-1.8
-.8 0-1.6 0-2.5.1.1-.2.2-.4.2-.6 2.4-1.1 9.7-4.6 16.1-7.9.5.4 1.1.7 1.7.7.2 0 .4 0 .7-.1 0 0 .1 0 .3-.1.2-.1.5-.2.8-.3.6-.2 1.5-.6 2.7-1.2.1 0 .1-.1.2-.1.1.1.1.2.2.2.8.9 2 1.5 3.4 1.7.5.1.9.1 1.3.1 1.3 0 2.5-.4 3.5-1.1 2-1.5 2.3-4.1 2.3-4.2.1-.6-.4-1.2-1-1.2-.2 0-.4 0-.6.1-.3.2-.6.5-.6.9 0 0-.2 1.8-1.4 2.7-.7.6-1.8.8-3.1.6-1.1-.2-1.9-.6-2.4-1.4-1.1-1.6-.6-4-.5-4.1v-.6c-.1-.4-.4-.7-.8-.8-.6-.1-1.2.2-1.3.8 0 .1-.7 2.9.6 5.3h-.1c-1.1.5-2 .9-2.6 1.1-.3.1-.6.2-.7.3-.2.1-.3.1-.3.1-.4.1-.7 0-1-.1-.3-.2-.6-.5-.6-.8-.1-.3-.1-.7.1-1l.1-.2c.1-.2.2-.4.4-.7.3-.4.8-1.2 1.7-2.2.8-1 1.7-2 2.6-2.9.5-.5 1-1 1.6-1.5.6-.5 1.1-1 1.7-1.5.2-.2.4-.3.6-.5l.6-.5c.2-.1.4-.3.6-.4.1-.1.2-.1.3-.2.5 1.7 1.6 3.3 3 4.4.3.2.7.5 1 .7-.1.1-.2.2-.3.2-.2.2-.4.3-.6.4l-.6.5c-.1 0-.1.1-.2.1.4.2.8.3 1.2.5l.3-.3c.2-.2.4-.3.6-.5.7-.5 1.2-1 1.7-1.5 1-1 1.9-2 2.6-3.1.5-.7.8-1.3 1.1-1.8.3 0 .6 0 .9-.1 1.3-.3 4.6-1.7 6.4-7.7.2-.5 0-1.1-.5-1.5-.4-.4-1-.4-1.5-.2-.9.5-2.5 1-4.4.9-1.7-.1-3.3.5-4.3 1.6-.4-.4-.6-.1-.8.3 0-.1 0 0 0 0zm1
2.3-31.5c0 .3.1.6.1.9-.1-.3-.1-.6-.1-.9 0-.4-.1-.7-.2-1.1.1.4.1.8.2 1.1zm-104.7 62.1c-1.2 2-.9 3.4-.5 4.3.7 1.2 1.9 1.7 2.9 1.8h.6c.5 0 1.5-.1 4.7-.5-.7 1.3-1.4 2.6-2 3.9-.2-.2-.4-.4-.7-.5-1.5-.8-3.3-.3-4.1 1.1-.8 1.4-.2 3.2 1.3 4 .5.3 1 .4 1.5.4-.5 1.6-.9 3.1-1.2 4.6-2 .8-4 1.1-6.1 1.1-3.1 0-6.3-.9-9.1-2.6-7.9-5-10.2-15.5-5.2-23.3 3.2-5.1 8.7-7.8 14.3-7.8 3.1 0 6.3.9 9.1 2.6 2.1 1.3 3.7 3.1 5 5-9.3 4-10 5.2-10.5 5.9zm17.8-77.5c0-.1 0-.2-.1-.3v-.2-.4-.3-.4-.3c0-.1.1-.3.1-.4 0-.1 0-.2.1-.3 0-.2.1-.3.1-.5 0-.1.1-.2.1-.3.1-.2.1-.3.2-.5 0-.1.1-.2.1-.3.1-.2.1-.4.2-.6 0-.1 0-.1.1-.2.1-.2.2-.5.3-.7 0-.1.1-.1.1-.2.1-.2.2-.3.3-.5 0-.1.1-.1.1-.2.1-.1.1-.2.2-.4 0-.1.1-.1.1-.2.1-.1.1-.2.2-.3 0-.1.1-.1.1-.2l.2-.2s.1 0 .1-.1c2.4 1.9 2.2 7.3 2.2 7.4v.1c-1.1 1.6-3.1 2.1-4.4.9-.1-.1-.2-.1-.2-.2-.1-.1-.1-.2-.2-.3v.1zM204 98c-.1-.4-.1-.8-.1-1.2-.1-.1-.3-.1-.4-.2-.1-.1-.3-.2-.4-.3-.1-.1-.2-.1-.2-.2-.2-.3-.3-.7-.4-1.3-.1-.5-.1-1-.1-1.6 0-.3 0-.7.1-1.1 2.1 1.8 5.2.5 5.8-1.5.1.2.2.4.3.7.4 1.2.6 2.2.7 2.6v
.2c-.8 2.2-3.3 3.4-5.3 2.7.1.7.2 1.3.3 2-.3-.2-.3-.5-.3-.8zm9.1 1.2c-.2 3-4.3 5-7.1 4.5-.7-.5-1.2-1.8-1.6-3.4-.1-.4-.2-.7-.2-1.1V99c2.9 1.2 6.1-.8 6.5-3.5.4.3.9.7 1.4 1.2.7.7 1 1.5 1.1 2.1-.1.1-.1.3-.1.4zm74.3 13.9c-.1-.7-.3-1.3-.5-1.9.2.6.4 1.2.5 1.9 0 .2 0 .5.1.7-.1-.3-.1-.5-.1-.7zm-1.1-12.7c.5.4 1 .9 1.4 1.5-.4-.6-.8-1.1-1.4-1.5zm-20.4 37.3h-.5.5zm-3.3-.4c.3.1.7.2 1 .2-.4-.1-.7-.1-1-.2-.1 0-.1 0 0 0-.1 0-.1 0 0 0zm-2 2.5c-.3.2-.7.3-1.1.4.5 0 .8-.2 1.1-.4zm-1.4.5h-.3.3zm-12.9 26.1h.1-.4.3zm31.4-29.4c.6-1.2 1.9-1.9 3.5-1.9h.6c.5.6-.2 1 .4 2.1.7 1.3 2.3-.3 3.3.6-1.5 2.6-3.3 3.3-4.2 3.5-1.2.3-2.5 0-3.1-.8-.8-1-1-2.4-.5-3.5zm-.2 4.3c.5.6 1.2.9 2 1.1-.2.4-.5.8-.8 1.3-.4.6-.9 1.2-1.3 1.7-1.7-.7-3.1-2.3-3.5-4.2v-.4c.7-.3 1.3-.7 2-.9.3-.1.5-.2.7-.3.2.7.5 1.2.9 1.7z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M219.1 84.8c0-.6.1-1.3.3-1.8-.2.5-.3 1.2-.3 1.8z"/>
+ <path fill="url(#Z)" fill-rule="nonzero" d="M219.1 84.8c0-.6.1-1.3.3-1.8-.2.5-.3 1.2-.3 1.8z"/>
+ <path fill="url(#aa)" fill-rule="nonzero" d="M219.1 84.8c0-.6.1-1.3.3-1.8-.2.5-.3 1.2-.3 1.8z"/>
+ <path fill="url(#ab)" fill-rule="nonzero" d="M178.6 177.5c-.4-.2-.8-.3-1.1-.4l2.7 3.2c.2.2.2.6-.1.8-.1.1-.2.1-.4.1s-.3-.1-.4-.2l-3.3-4c-.9.1-1.6.6-2 1.3-.2.3-.3.7-.3 1.1 1.2 1.3 2.4 2.6 3.6 3.7 1.4.3 2.7-.2 3.3-1.2.7-1.4-.2-3.4-2-4.4z"/>
+ <path fill="url(#ac)" fill-rule="nonzero" d="M267.8 172.1c-2.3 1.3-4.3 3.2-5.5 5.6-.5.9-.1 2.1.8 2.5h.1l.4.1c.2 0 .3.1.5.1.7 0 1.4-.4 1.7-1.1 1.7-3 4.9-4.8 8.2-4.8.8 0 1.6.1 2.4.3 2.9.7 5.3 2.8 6.4 5.6l-3.7-1c-.2 0-.3-.1-.5-.1-.8 0-1.6.6-1.8 1.4-.3 1 .3 2 1.4 2.3l7.3 1.9c.2 0 .3.1.5.1.8 0 1.6-.6 1.8-1.4l1.9-7.3c.3-1-.3-2-1.4-2.3-.2 0-.3-.1-.5-.1-.8 0-1.6.6-1.8 1.4l-.5 2c-2.4-4.4-6.9-6.9-11.5-6.9-2.2.2-4.3.7-6.2 1.7z"/>
+ <path fill="url(#ad)" fill-rule="nonzero" d="M180.7 194.6c-.4-1.4-1.7-2.3-3.1-2.3-.3 0-.6 0-.9.1l.9 3.1 3.1-.9z"/>
+ <path fill="url(#ae)" fill-rule="nonzero" d="M172.6 172.1c.8-1.4.2-3.2-1.3-4-1.5-.8-3.3-.3-4.1 1.1-.8 1.4-.2 3.2 1.3 4 1.5.8 3.3.3 4.1-1.1z"/>
+ <path fill="url(#af)" fill-rule="nonzero" d="M175.8 164.2c1.7 0 3.1-1.3 3.1-2.9 0-1.6-1.4-2.9-3.1-2.9-1.7 0-3.1 1.3-3.1 2.9 0 1.6 1.4 2.9 3.1 2.9z"/>
+ <path fill="url(#ag)" fill-rule="nonzero" d="M224.1 117.1c.4 0 .9.1 1.3.1 0-.1.1-.2.1-.3v-3c0-.7-.6-1.3-1.3-1.3-.7 0-1.3.6-1.3 1.3v3c0 .1 0 .2.1.3.2-.1.7-.1 1.1-.1z"/>
+ <path fill="url(#ah)" fill-rule="nonzero" d="M237.5 199.2c.6-7.2 1.2-16.6 1.3-16.7 0-.3-.2-.6-.5-.6s-.6.2-.6.5c0 .2-1.4 19.4-1.9 23.9v.3c0 .2-.1.5-.1.7v.1c-.1.6-.2 1.1-.2 1.7v.2c.8-.2 1.6-.4 2.3-.6.1-.9.3-1.8.4-2.8 5.1-.6 12.8-2.1 20-5.6 2.3-1.3 4.3-2.6 6.2-3.9-.5-.4-1-.8-1.5-1.3-.8.7-1.8 1.2-2.9 1.2-.3 0-.7 0-1-.1-1.4.9-3 1.8-4.7 2.6-6.6 3-13 4.1-17.1 4.5.1-.9.2-1.8.2-2.9 1.8-.1 3.6-.2 5.5-.5 5.9-.9 10.7-2.9 14.2-4.8-.2-.2-.4-.5-.6-.8 0 0 0-.1-.1-.2-3.4 1.9-8 3.8-13.7 4.7-1.8.2-3.5.4-5.2.4z"/>
+ <path fill="url(#ai)" fill-rule="nonzero" d="M264.9 127.4c1 0 2.1-.3 3.3-1.3 2.4-2 2.5-4.3 2.3-5.6 1.4-.2 2.8-.8 4.2-2.2 3.6-3.7 2.9-7.8 2.1-9.4-.3-.5-1-.8-1.5-.5-.5.3-.8 1-.5 1.5 0 0 1.7 3.4-1.7 6.8-2.9 2.9-5.8 1.1-6.1.9-.5-.4-1.2-.2-1.6.3-.4.5-.2 1.2.3 1.6.8.5 2.1 1.1 3.7 1.2.2.9.2 2.9-1.9 4.7-2.6 2.1-4.8.3-4.9.2-.2-.2-.6-.2-.8.1-.2.2-.2.6.1.8 0-.2 1.2.9 3 .9z"/>
+ <path fill="url(#aj)" fill-rule="nonzero" d="M249.6 126.6c1 1 2.7 2.2 5.8 2.2.8 0 1.7-.1 2.7-.3.3-.1.5-.3.4-.6-.1-.3-.3-.5-.6-.4-4.9.9-6.7-1-7.4-1.7-1.3-1.3-1.9-4.5-1.9-4.6 0-.2-.2-.4-.4-.4-.1 0-5.1-1.5-8.5-5.7-3.1-3.9-3.5-8.4-3.5-8.4 0-.2-.1-.4-.3-.5-.8-.4-3.2-1.7-3.8-3.2-1.3-3.1.1-4.9.1-4.9.2-.2.2-.6-.1-.8-.2-.2-.6-.2-.8.1 0 0-.5.6-.8 1.7l-3.3-.1c-.3 0-.6.2-.6.5v.2c.1.2.3.4.5.4l3.2.1c0 .9.1 2 .6 3.2.4.9 1.2 1.7 2 2.3.8.6 1.6 1.1 2.1 1.3 0 .3.1.8.3 1.4.4 1.8 1.3 4.7 3.5 7.3.4.5.8 1 1.3 1.4 2.9 2.9 6.4 4.2 7.4 4.6.2 1 .8 3.6 2.1 4.9z"/>
+ <path fill="url(#ak)" fill-rule="nonzero" d="M179 200.2l3.1-1-.9-3-3.1.9"/>
+ <path fill="url(#al)" fill-rule="nonzero" d="M231.2 188.3l-16.2-4.7c-.3-.1-.6-.1-.9-.1-1.5 0-2.8 1-3.2 2.4l-5.6 19.4c-.5 1.8.5 3.7 2.3 4.2l16.2 4.7c.3.1.6.1.9.1 1.5 0 2.8-1 3.2-2.4l5.6-19.4c.5-1.8-.5-3.7-2.3-4.2zm-1.4 4.9l-4.7 16.2c-.2.7-.9 1.2-1.6 1.2-.2 0-.3 0-.5-.1l-12.9-3.7c-.9-.3-1.4-1.2-1.2-2.1l4.7-16.2c.2-.7.9-1.2 1.6-1.2.2 0 .3 0 .5.1l12.9 3.7c.9.2 1.5 1.2 1.2 2.1z"/>
+ <path fill="url(#am)" fill-rule="nonzero" d="M99.3 199.1c-.2-.6-.9-1-1.5-.7-.6.2-1 .9-.7 1.5l.8 2.4c.6-.6 1.4-.9 2.2-.8l-.8-2.4z"/>
+ <path fill="url(#an)" fill-rule="nonzero" d="M224.4 196.8l-8.1-2.3h-.2c-.4 0-.7.2-.8.6-.1.4.1.9.6 1l8.1 2.3h.2c.4 0 .7-.2.8-.6.1-.4-.2-.8-.6-1z"/>
+ <path fill="url(#ao)" fill-rule="nonzero" d="M108 198.9c.6-.6 1.4-.9 2.2-.8l-.8-2.4c-.2-.6-.9-1-1.5-.7-.6.2-1 .9-.7 1.5l.8 2.4z"/>
+ <path fill="url(#ap)" fill-rule="nonzero" d="M106.2 206.7c1-.5 2-1 3.1-.7.1-.1.3-.2.4-.4.5-.5.9-1.1 1.3-1.8.2-.4.4-.7.6-1.1.2-.4.3-.9.5-1.4l.1-.2v-.1c0-.1-.1-.2-.2-.1-.2.1-.5.1-.7.2-.3.1-.7.2-1 .3l-1.7.5c-1.2.3-2.3.7-3.5 1.1-1.1.4-2.3.8-3.4 1.2l-1.7.6c-.3.1-.6.3-1 .4-.2.1-.5.2-.7.3 0 0-.1 0-.1.1-.1.1 0 .2 0 .3l.2.1c.4.3.8.6 1.2.8.4.2.8.4 1.1.6.7.3 1.4.5 2.1.6.2 0 .4 0 .5.1.1-.1.1-.2.2-.2.7-.9 1.7-1 2.7-1.2zm-5.4-1.9c.6-.1 1.3-.3 2-.5-.7.2-1.4.3-2 .5zm6.6-2c.7-.3 1.4-.6 1.9-.8-.5.2-1.2.5-1.9.8-.7.3-1.5.6-2.3.8.8-.2 1.6-.5 2.3-.8z"/>
+ <path fill="url(#aq)" fill-rule="nonzero" d="M225.3 193.6l-8.1-2.3h-.2c-.4 0-.7.2-.8.6-.1.4.1.9.6 1l8.1 2.3h.2c.4 0 .7-.2.8-.6.1-.4-.2-.9-.6-1z"/>
+ <path fill="url(#ar)" fill-rule="nonzero" d="M164 84.3c-.2 0-.2.3 0 .3 1.8.5 3.3 1.9 3.7 3.7 0 .2.3.2.3 0 .5-1.8 1.9-3.3 3.7-3.7.2 0 .2-.3 0-.3-1.6-.4-2.9-1.6-3.5-3.1h-.7c-.6 1.5-1.9 2.7-3.5 3.1z"/>
+ <path fill="url(#as)" fill-rule="nonzero" d="M213.9 202.6l3.2.9h.2c.4 0 .7-.2.8-.6.1-.4-.1-.9-.6-1l-3.2-.9h-.2c-.4 0-.7.2-.8.6-.1.4.2.9.6 1z"/>
+ <path fill="url(#at)" fill-rule="nonzero" d="M227.9 119.2l-.3-.3c-.1-.1-.2-.2-.3-.2-.7-.5-1.8-1.1-3.2-1.1-2.9 0-4.4 2.2-4.5 2.3-.3.5-.2 1.2.3 1.5.5.3 1.2.2 1.5-.3 0 0 .9-1.3 2.6-1.3 1.1 0 1.9.5 2.3.9l.2.2.2.2c.2.3.6.5.9.5.2 0 .4-.1.6-.2.5-.3.7-1 .3-1.5.1 0-.1-.3-.6-.7z"/>
+ <path fill="url(#au)" fill-rule="nonzero" d="M196.8 121.5c.5.3 1.2.2 1.5-.3 0 0 .1-.2.4-.4.4-.4 1.2-.9 2.2-.9 1.7 0 2.6 1.3 2.6 1.3.2.3.6.5.9.5.2 0 .4-.1.6-.2.5-.3.7-1 .3-1.5-.1-.1-1.5-2.3-4.5-2.3-1.9 0-3.2 1-3.9 1.7l-.3.3c-.2.2-.3.4-.3.4-.2.4 0 1.1.5 1.4z"/>
+ <path fill="url(#av)" fill-rule="nonzero" d="M200.9 117.1c.4 0 .9.1 1.3.1 0-.1.1-.2.1-.3v-3c0-.7-.6-1.3-1.3-1.3-.7 0-1.3.6-1.3 1.3v3c0 .1 0 .2.1.3.3-.1.7-.1 1.1-.1z"/>
+ <path fill="url(#aw)" fill-rule="nonzero" d="M207.7 137.3l-1.5-.6c-.7-.3-1.5-.5-2.2-.8l-3.8-1.3-7.5-2.4c-.2-.1-.4-.1-.6-.2-1.1 1.2-2.3 2.4-2.8 2.7-.4.2-3.4-.5-3.5-.8-.1-.2.3-1.9.7-3.5-.5-.1-.9-.3-1.4-.4l-.6-.1c-.3 1.4-.7 3.1-.9 3.2-.4.3-2.9-1.2-3.1-1.5-.1-.2-.5-1.6-.7-2.9-.3-.1-.5-.1-.8-.2-.5-.1-1.1-.2-1.6-.4h-.2c-.2.1-.3.3-.3.5l.1.5c.3 1.1.7 2.2 1.2 3 .4.9.9 1.7 1.3 2.5.9 1.5 1.9 2.7 3 3.8.3.3.6.5.9.8.2-.1.4-.1.6-.1-.2 0-.4.1-.6.1 1.9 1.6 3.9 2.7 6 3.3h.2c2.2.6 4.4.8 6.9.5.4 0 .8-.1 1.2-.2 1.5-.3 3-.8 4.6-1.5.8-.4 1.6-.8 2.5-1.3.8-.5 1.7-1.1 2.6-1.9l.4-.3c0-.1.1-.1.1-.2.2 0 0-.2-.2-.3z"/>
+ <path fill="url(#ax)" fill-rule="nonzero" d="M231.2 80.2c.4 0 .6-.2.6-.5 0-.1.5-3 4.2-3.5 1.8-.3 2.9.5 3.5 1.2-3.5 2.2-4.1 5.7-3.9 7.3.1.6.6 1 1.1 1h.1c.6-.1 1-.6 1-1.2 0 0-.4-3.8 4-5.8 3.8-1.7 5.8 1 6.1 1.4.3.5 1 .6 1.5.3s.6-1 .3-1.5c-.5-.7-1.3-1.5-2.5-2.1.5-.9 1.6-2.1 3.8-2.4 3.3-.5 4.2 2.3 4.3 2.4.1.3.4.5.7.4.3-.1.5-.4.4-.7 0 0-1.3-3.8-5.5-3.2-2.8.4-4.1 2-4.7 3.1-1.5-.5-3.3-.5-5.3.4-.1.1-.3.1-.4.2-.8-1-2.2-2.1-4.7-1.7-4.5.6-5.1 4.4-5.2 4.4 0 .2.3.5.6.5z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M207.7 223.7v.2c0 .2.1.4.1.6v.2c0 .2.1.4.1.6v.5c0 .1 0 .2-.1.2l-.2.2H207.3h-.1-.1c-.1 0-.1 0-.2-.1h-.1c-.1 0-.2-.1-.3-.2 0 0-.1 0-.1-.1-.1-.1-.2-.1-.3-.2l-.1-.1c-.1-.1-.2-.1-.3-.2-.1 0-.1-.1-.2-.1l-.3-.3-.2-.2-.3-.3-.2-.2-.5-.5-.1-.1-.4-.4c-1 .1-1.9.1-2.8.2 3.3 3.6 5 4.9 6.6 4.9.9 0 1.8-.4 2.3-1.2.4-.6.8-1.1.2-4.3-.8 0-1.5.1-2.3.1.1.4.1.6.2.8z"/>
+ <path fill="url(#ay)" fill-rule="nonzero" d="M207.7 223.7v.2c0 .2.1.4.1.6v.2c0 .2.1.4.1.6v.5c0 .1 0 .2-.1.2l-.2.2H207.3h-.1-.1c-.1 0-.1 0-.2-.1h-.1c-.1 0-.2-.1-.3-.2 0 0-.1 0-.1-.1-.1-.1-.2-.1-.3-.2l-.1-.1c-.1-.1-.2-.1-.3-.2-.1 0-.1-.1-.2-.1l-.3-.3-.2-.2-.3-.3-.2-.2-.5-.5-.1-.1-.4-.4c-1 .1-1.9.1-2.8.2 3.3 3.6 5 4.9 6.6 4.9.9 0 1.8-.4 2.3-1.2.4-.6.8-1.1.2-4.3-.8 0-1.5.1-2.3.1.1.4.1.6.2.8z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M231.2 223.1c-.1.1-.1.2-.2.3-.1.2-.2.3-.3.4 0 .1-.1.2-.1.2-.1.2-.2.4-.4.5v.1c-.1.2-.3.4-.4.5 0 .1-.1.1-.1.1-.1.1-.2.2-.2.3 0 .1-.1.1-.1.1l-.2.2-.1.1c-.1.1-.1.1-.2.1l-.1.1c-.1 0-.1.1-.2.1 0 0-.1 0-.1.1h-.2-.1-.1-.1c-.1 0-.2-.1-.2-.1l-.1-.1c-.1-.1-.1-.3-.2-.6s-.1-.6-.1-1c0-.3-.1-.7-.1-1.1v-.9h-2.2c.2 4.5.8 4.9 1.4 5.4.5.4 1.2.6 1.8.6 2.3 0 4.3-2.8 5.8-5.9-.8 0-1.6 0-2.5-.1-.3.4-.4.5-.4.6z"/>
+ <path fill="url(#az)" fill-rule="nonzero" d="M231.2 223.1c-.1.1-.1.2-.2.3-.1.2-.2.3-.3.4 0 .1-.1.2-.1.2-.1.2-.2.4-.4.5v.1c-.1.2-.3.4-.4.5 0 .1-.1.1-.1.1-.1.1-.2.2-.2.3 0 .1-.1.1-.1.1l-.2.2-.1.1c-.1.1-.1.1-.2.1l-.1.1c-.1 0-.1.1-.2.1 0 0-.1 0-.1.1h-.2-.1-.1-.1c-.1 0-.2-.1-.2-.1l-.1-.1c-.1-.1-.1-.3-.2-.6s-.1-.6-.1-1c0-.3-.1-.7-.1-1.1v-.9h-2.2c.2 4.5.8 4.9 1.4 5.4.5.4 1.2.6 1.8.6 2.3 0 4.3-2.8 5.8-5.9-.8 0-1.6 0-2.5-.1-.3.4-.4.5-.4.6z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M167.7 80.6c-.1.2-.1.4-.2.6h.7c-.1-.2-.2-.4-.2-.6 0-.2-.3-.2-.3 0z"/>
+ <path fill="url(#aA)" fill-rule="nonzero" d="M167.7 80.6c-.1.2-.1.4-.2.6h.7c-.1-.2-.2-.4-.2-.6 0-.2-.3-.2-.3 0z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M118.4 58.7c.1.2.2.3.4.3h.1c.3-.1.4-.3.4-.6v-.1l-1.9-5.3c-.1-.3-.4-.4-.6-.3-.3.1-.4.4-.3.6l1.9 5.4z"/>
+ <path fill="url(#aB)" fill-rule="nonzero" d="M118.4 58.7c.1.2.2.3.4.3h.1c.3-.1.4-.3.4-.6v-.1l-1.9-5.3c-.1-.3-.4-.4-.6-.3-.3.1-.4.4-.3.6l1.9 5.4z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M134.3 121.9c.2-.2.5-.4.9-.2v.1l2.4-1.5v-3.5l-3.4 2.1v3h.1zM137.7 164.3c-.2.2-.4.6-.4.9 0 .9.1 1.8.4 2.6v-3.5z"/>
+ <path fill="url(#aC)" fill-rule="nonzero" d="M137.7 164.3c-.2.2-.4.6-.4.9 0 .9.1 1.8.4 2.6v-3.5z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M115.5 59c.3 0 .5-.2.5-.5v-5.3c0-.3-.2-.5-.5-.5s-.5.2-.5.5v5.3c0 .3.2.5.5.5z"/>
+ <path fill="url(#aD)" fill-rule="nonzero" d="M115.5 59c.3 0 .5-.2.5-.5v-5.3c0-.3-.2-.5-.5-.5s-.5.2-.5.5v5.3c0 .3.2.5.5.5z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M112.6 59c.3 0 .5-.2.5-.5v-5.8c0-.3-.2-.5-.5-.5s-.5.2-.5.5v5.8c0 .3.2.5.5.5z"/>
+ <path fill="url(#aE)" fill-rule="nonzero" d="M112.6 59c.3 0 .5-.2.5-.5v-5.8c0-.3-.2-.5-.5-.5s-.5.2-.5.5v5.8c0 .3.2.5.5.5z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M114 59c.3 0 .5-.2.5-.5v-4.8c0-.3-.2-.5-.5-.5s-.5.2-.5.5v4.8c0 .3.3.5.5.5z"/>
+ <path fill="url(#aF)" fill-rule="nonzero" d="M114 59c.3 0 .5-.2.5-.5v-4.8c0-.3-.2-.5-.5-.5s-.5.2-.5.5v4.8c0 .3.3.5.5.5z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M129.1 125.6l4.1-2.6v-.5c0-.1-.1-.1-.1-.2 0 0 .1 0 .1.1v-2.9l-5.6 3.6c-.8.3-1.1 1.2-.8 2 .2.6.8.9 1.3.9.2 0 .4 0 .6-.1.1-.1.2-.2.4-.3z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M139 115.8l-1.3.9v3.5l2.2-1.4v-8.3c-.5.7-.9 1.5-1.1 2.3-.1.5-.1 1-.1 1.4.1.6.1 1.1.3 1.6zM139.9 165.2c0-.7-.6-1.3-1.3-1.3-.4 0-.7.1-.9.4v3.5c.3 1.1.7 2.1 1.3 3 .6-.9.9-1.9.9-3v-2.6z"/>
+ <path fill="url(#aG)" fill-rule="nonzero" d="M139.9 165.2c0-.7-.6-1.3-1.3-1.3-.4 0-.7.1-.9.4v3.5c.3 1.1.7 2.1 1.3 3 .6-.9.9-1.9.9-3v-2.6z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M138.7 159.7c-.1.3 0 .7.4.8l.8.3v-4.4l-1.2 3.3z"/>
+ <path fill="url(#aH)" fill-rule="nonzero" d="M138.7 159.7c-.1.3 0 .7.4.8l.8.3v-4.4l-1.2 3.3z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M198 217c.5.6.9 1.3 1.5 1.9-.5-.7-1-1.3-1.5-1.9z"/>
+ <path fill="url(#aI)" fill-rule="nonzero" d="M198 217c.5.6.9 1.3 1.5 1.9-.5-.7-1-1.3-1.5-1.9z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M207.8 226l-.2.2c.1-.1.2-.1.2-.2z"/>
+ <path fill="url(#aJ)" fill-rule="nonzero" d="M207.8 226l-.2.2c.1-.1.2-.1.2-.2z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M224.1 117.6c1.4 0 2.5.5 3.2 1.1-.7-.5-1.8-1.1-3.2-1.1z"/>
+ <path fill="url(#aK)" fill-rule="nonzero" d="M224.1 117.6c1.4 0 2.5.5 3.2 1.1-.7-.5-1.8-1.1-3.2-1.1z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M224.1 119.9c1.1 0 1.9.5 2.3.9-.4-.4-1.2-.9-2.3-.9z"/>
+ <path fill="url(#aL)" fill-rule="nonzero" d="M224.1 119.9c1.1 0 1.9.5 2.3.9-.4-.4-1.2-.9-2.3-.9z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M134.3 121.9v-3.1l-1.1.7v2.9s-.1 0-.1-.1c0 .1.1.1.1.2v.5l2.1-1.3v-.1c-.5-.1-.8 0-1 .3z"/>
+ <path fill="url(#aM)" fill-rule="nonzero" d="M150.7 112.6l-4.5 2.7c-.3.2-.7.3-1 .3-.6 0-1.3-.3-1.6-.9-.4-.6-.4-1.3-.1-1.8.1-.4.4-.7.8-1l4.2-2.7c-.7-.5-1.5-.9-2.3-1.1-.4-.1-.8-.1-1.3-.1-2 0-3.8 1-4.9 2.5-.5.7-.9 1.5-1.1 2.3-.1.5-.1 1-.1 1.4 0 .5.1 1 .3 1.5v.1l-1.3.8-3.4 2.1-1.1.7-5.6 3.6c-.8.3-1.1 1.2-.8 2 .2.6.8.9 1.3.9.2 0 .4 0 .6-.1.1-.1.3-.1.4-.2l4.1-2.6 2.1-1.3 2.4-1.5 2.2-1.4.7-.5c.8.8 1.7 1.3 2.8 1.6.5.1.9.2 1.4.2 1.4 0 2.7-.5 3.7-1.3s1.8-2 2.1-3.4c.2-1 .2-1.9 0-2.8z"/>
+ <path fill="#FFFEFE" fill-rule="nonzero" d="M143.5 114.7c.4.6 1 .9 1.6.9.4 0 .7-.1 1-.3l4.5-2.7c.2.9.2 1.9 0 2.8-.3 1.4-1.1 2.6-2.1 3.4 1.1-.8 1.9-2.1 2.2-3.5.2-.9.2-1.9 0-2.8l-4.6 2.7c-.3.2-.7.3-1 .3-.6 0-1.3-.3-1.7-.9-.3-.5-.4-1.2-.2-1.7-.1.5-.1 1.2.3 1.8z"/>
+ <path fill="url(#aN)" fill-rule="nonzero" d="M143.5 114.7c.4.6 1 .9 1.6.9.4 0 .7-.1 1-.3l4.5-2.7c.2.9.2 1.9 0 2.8-.3 1.4-1.1 2.6-2.1 3.4 1.1-.8 1.9-2.1 2.2-3.5.2-.9.2-1.9 0-2.8l-4.6 2.7c-.3.2-.7.3-1 .3-.6 0-1.3-.3-1.7-.9-.3-.5-.4-1.2-.2-1.7-.1.5-.1 1.2.3 1.8z"/>
+ <path fill="#FFFEFE" fill-rule="nonzero" d="M126.8 125.1c-.3-.8 0-1.7.8-2l5.6-3.6 1.1-.7 3.4-2.1 1.3-.8v-.1l-11.5 7.3c-.8.3-1.1 1.3-.8 2 .3.6.8.9 1.4.9h.1c-.7 0-1.2-.3-1.4-.9z"/>
+ <path fill="url(#aO)" fill-rule="nonzero" d="M126.8 125.1c-.3-.8 0-1.7.8-2l5.6-3.6 1.1-.7 3.4-2.1 1.3-.8v-.1l-11.5 7.3c-.8.3-1.1 1.3-.8 2 .3.6.8.9 1.4.9h.1c-.7 0-1.2-.3-1.4-.9z"/>
+ <path fill="#FFFEFE" fill-rule="nonzero" d="M139.9 110.5c1.1-1.5 2.9-2.5 4.9-2.5.4 0 .8 0 1.3.1.8.2 1.6.6 2.3 1.1l.2-.1c-.7-.6-1.5-1-2.4-1.2-.4-.1-.8-.1-1.3-.1-2.8 0-5.4 2-6 4.9-.1.5-.1 1-.1 1.6 0-.5 0-1 .1-1.4.1-1 .5-1.7 1-2.4z"/>
+ <path fill="url(#aP)" fill-rule="nonzero" d="M139.9 110.5c1.1-1.5 2.9-2.5 4.9-2.5.4 0 .8 0 1.3.1.8.2 1.6.6 2.3 1.1l.2-.1c-.7-.6-1.5-1-2.4-1.2-.4-.1-.8-.1-1.3-.1-2.8 0-5.4 2-6 4.9-.1.5-.1 1-.1 1.6 0-.5 0-1 .1-1.4.1-1 .5-1.7 1-2.4z"/>
+ <path fill="url(#aQ)" fill-rule="nonzero" d="M106.4 207.6c.1 0 .1 0 0 0h.1c1-.3 1.9-.9 2.7-1.6-1.1-.3-2 .2-3.1.7-1 .2-2 .3-2.7 1l-.2.2c1.2.2 2.3 0 3.2-.3z"/>
+ <path fill="url(#aR)" fill-rule="nonzero" d="M118.3 196.1c.7-1.4.9-3 .6-4.6-.4-2.1-1.5-3.9-3.3-5.1-1.4-1-3-1.4-4.6-1.4-1.5 0-3 .5-4.2 1.3-.2-.2-.4-.3-.6-.5-1.2-.8-2.5-1.2-4-1.2-2.1 0-4 1-5.3 2.6h-.7c-2.7 0-5.2 1.4-6.8 3.6-1.8 2.6-1.9 5.9-.6 8.6-.7.5-1.2 1.1-1.7 1.8-1.3 1.8-1.8 4.1-1.4 6.3.4 2.2 1.6 4.1 3.5 5.4 1.2.9 2.6 1.4 4.1 1.5.4 1.1 1.2 2.1 2.2 2.8 1 .7 2.2 1.1 3.5 1.1 1 .9 2.2 1.6 3.7 2.2l1 5.5h2.3l-1.3-7.2c-1.3-.4-2.7-1-3.8-1.8-.4-.3-.7-.6-1-1h-.1l-.1-.1c-.4-.4-.7-1-.9-1.6v-.1c-.3-.9-.2-1.7.1-1.8.2-.1.4-.1.5 0 .1.1.2.3.2.4v.2c0 .2.1.4.1.6V213.9c.3.9 1 2 2.2 2.7.1 0 .2.1.3.1.6.4 1.3.6 1.9.9 0 0 .1 0 .1.1l-.5-3h-.1-.1c-.1-.1-.3-.1-.4-.2-.3-.1-.6-.3-.9-.5 0 0-.1 0-.1-.1-.1.3-.2.5-.4.7l-.3.3s0-.1-.1-.1c-.6-.7-.9-1.5-.9-2-.1-.6-.3-1-.8-1.3-.4-.3-1-.3-1.5-.1-.5.2-1.4.8-.7 3.2.1.5.4 1 .6 1.4l.1.1c-.6-.1-1.2-.3-1.7-.6-.6-.4-1-1-1.3-1.6-.1-.2-.2-.4-.2-.6v-.1c-.1-.3-.1-.6-.1-.9-.3.1-.7.1-1 .1-1.2 0-2.5-.3-3.6-1.1-2.2-1.5-3-4.1-2.4-6.5l.3-.9v-.1c.2-.4.4-.7.6-1.1.8-1.2 2-2 3.2-2.4l-.
1-.1c-2.1-2.1-2.5-5.4-.8-7.9.5-.7 1-1.2 1.6-1.6 1-.7 2.2-1 3.3-1 .6 0 1.2.1 1.8.2 0-.1.1-.1.1-.2.1-.3.2-.5.4-.7.7-1 1.8-1.6 2.9-1.8.3 0 .5-.1.8-.1.9 0 1.8.2 2.7.8.7.5 1.3 1.2 1.6 2 .1-.1.1-.2.2-.2 1.1-1.4 2.7-2.1 4.3-2.1.7 0 1.3.1 2 .3.5.2.9.4 1.3.7 2.6 1.8 3.2 5.3 1.4 7.9-.2.2-.3.4-.5.6.1 0 .1.1.2.1.3.1.5.3.8.4.2.2.4.3.7.5 2.4 2.2 2.9 5.8 1 8.5-1.2 1.8-3.2 2.8-5.3 2.8h-.6c-.1 1.1-.4 2.1-1.1 3-.1.1-.1.2-.2.3-.1.2-.3.3-.5.5l-.4.4-.1.1c-.4.3-.8.6-1.2.8h-.1c-.1 0-.2.1-.3.1-1 .4-2 .3-2 .3-.2 0-.3.1-.4.2-.1.1-.2.2-.2.3 0 .3.2.6.5.6h.4c.5 0 1.3-.1 2.2-.4h.1l.6 3.3c.2-.1.4-.1.5-.2.6-.3 1.2-.7 1.6-1.1l.1-.1c.1-.1.1-.3 0-.9-.1-.6-.4-1.2-.6-1.6-.1-.2-.1-.3-.2-.5s0-.4.1-.6l.2-.2h.2c.2 0 .5.1.6.4 0 .1.1.2.2.4.2.4.4.9.5 1.4v.1c.6-1.2.9-2.5 1.1-3.7v-.1c.1-.3.3-.5.6-.5h.1c.3.1.5.4.5.7-.4 1.9-1 4.2-2.4 5.8l-.1.1c-.6.6-1.3 1.2-2.1 1.5-.2.1-.5.2-.7.2h-.1l1 5.4c.1.3-.2.7-.7.9l2.7.3c.2-.5.3-1 .2-1.6l-.7-3.6c.8-.4 1.4-1 2.1-1.7l.1-.1c1.8-2.1 2.5-4.9 2.8-6.8.1-.8 0-1.5-.5-2.1 1.2-.6 2.2-1.5 3-2.7 1.3-1.9
1.8-4.2 1.4-6.5.2-2.4-.8-4.2-2.2-5.4z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M107.9 226.5h-.4c-.8 0-1.5-.2-1.5-.6v-.1h-2.3l.1.5c.2 1.2 1.3 2.5 3.8 2.5 1.5 0 3.5-.5 4.6-1.8.2-.2.3-.5.4-.7l-2.7-.3c-.5.2-1.3.4-2 .5z"/>
+ <path fill="url(#aS)" fill-rule="nonzero" d="M107.9 226.5h-.4c-.8 0-1.5-.2-1.5-.6v-.1h-2.3l.1.5c.2 1.2 1.3 2.5 3.8 2.5 1.5 0 3.5-.5 4.6-1.8.2-.2.3-.5.4-.7l-2.7-.3c-.5.2-1.3.4-2 .5z"/>
+ <path d="M-30-28h352v303H-30z"/>
+ </g>
+</svg>
diff --git a/browser/extensions/onboarding/content/img/figure_default.svg b/browser/extensions/onboarding/content/img/figure_default.svg
new file mode 100644
index 000000000000..c52e4b8500f7
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_default.svg
@@ -0,0 +1 @@
+<svg width="272" height="247" viewBox="0 0 272 247" xmlns="http://www.w3.org/2000/svg"><title>default-browser</title><defs><linearGradient x1="-12.708%" y1="-28.803%" x2="102.994%" y2="115.824%" id="a"><stop stop-color="#FFCCD7" offset="40.06%"/><stop stop-color="#EDBEE2" offset="100%"/></linearGradient><linearGradient x1="-78.121%" y1="-55.724%" x2="136.609%" y2="135.651%" id="b"><stop stop-color="#FFE900" offset="28.07%"/><stop stop-color="#FFCC07" offset="32.21%"/><stop stop-color="#FF8119" offset="41.22%"/><stop stop-color="#FF0B36" offset="54.35%"/><stop stop-color="#FF0039" offset="55.5%"/><stop stop-color="#ED00B5" offset="85.24%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-36-18h352v303H-36z"/><g fill-rule="nonzero"><g fill="#D7D7DB"><path d="M116.6 201.9H42.1c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h74.6c.6 0 1.1.5 1.1 1.1-.1.6-.6 1.1-1.2 1.1zM104 195.9H71c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h33c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zM109.7 206.7h-3.3c-.3 0-.6-.
2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-12.2 0H84.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-23.5 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6H74c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-5.5 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.3 0H42.8c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-23.4 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.3 0H1.5c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6z"/></g><path d="M138.8 171.9c-2.8 0-5-2.1-5-4.8V49.7c0-2.9 2.4-5.3 5.3-5.3h126.1c2.9 0 5.3 2.4 5.3 5.3v117.4c0 2.6-2.2 4.8-5 4.8H138.8z" fill="#FFF"/><path d="M265.2 45.4c2.3 0 4.2 1.9 4.2 4.2V167c0 2-1.7 3.7-3.9 3.7H138.8c-2.2 0-3.9-1.6-3.9-3.7V49.7c0-2.3 1.9-4.2 4.2-4.2h126.1v-.1zm0-2.2H139.1c-3.5 0-6.4 2.9-6.4 6.4V167c0 3.2 2.8 5.9 6.1 5.9h126.7c3.4 0 6.1-2.6 6.1-5.9V49.7c0-3.
6-2.9-6.5-6.4-6.5z" fill="#D7D7DB"/><path d="M264.8 66.4V165c0 .9-.1 1.2-.1 1.2s-.3.1-1.2.1H140.8c-.9 0-1.2-.1-1.2-.1s-.1-.3-.1-1.2V66.4h125.3zm1.1-1.1H138.3V165c0 2 .4 2.4 2.4 2.4h122.7c2 0 2.4-.4 2.4-2.4V65.3h.1z" fill="#D7D7DB"/><g fill="#D7D7DB"><circle cx="2.9" cy="3.3" r="2.8" transform="translate(143 52)"/><circle cx="3.1" cy="3.3" r="2.8" transform="translate(152 52)"/><path d="M233.8 58.5h-63.4c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1h63.4c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1z"/><g><circle cx="3.2" cy="3.3" r="2.8" transform="translate(246 52)"/><circle cx="3.4" cy="3.3" r="2.8" transform="translate(255 52)"/></g></g><path d="M21.8 23.4h23.9S38.2 6.7 54.1 4.5c14.2-1.9 19.8 12.6 19.8 12.6s1.7-8.4 10.1-6.8c8.3 1.6 14.5 15 14.5 15h20.8" fill="#F9F9FA"/><path d="M119.7 21.4h-5.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h5.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-15.3 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.5-.1c-.2 0-.4-.1-.5-.3-.2-.3-.7-1.
4-1.7-2.9-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2 1 1.5 1.6 2.6 1.7 2.9.1.3 0 .6-.2.8-.2.1-.3.1-.3.1zm-52.8-.6h-1.6c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h.8c-.1-.2-.2-.5-.3-.9-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.6.6 1.6.1.2.1.4 0 .5-.2.2-.4.3-.6.3zm-10.5 0H22.2c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm8.9-6c-.3 0-.5-.2-.6-.5 0-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.3-.1.6-.5.6.1 0 0 0 0 0zM73.6 13c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.4.4.7.5 1 .1.3 0 .6-.2.8-.1 0-.2.1-.3.1zm17.9-1.5c-.1 0-.3 0-.4-.1-2.3-2.1-4.6-3.4-6.8-3.8-.7-.1-1.4-.2-2-.2-1 0-2 .2-2.8.5-.3.1-.6 0-.7-.3-.1-.3 0-.6.3-.7 1-.4 2.1-.6 3.3-.6.7 0 1.4.1 2.2.2 2.4.5 4.9 1.8 7.3 4 .2.2.2.6 0 .8-.1.2-.3.2-.4.2zM70.6 8.3c-.2 0-.3-.1-.4-.2-.7-.9-1.5-1.6-2.3-2.3-.2-.2-.3-.6-.1-.8.2-.2.6-.3.8-.1.8.7 1.6 1.6 2.4 2.5.2.2.2.6-.1.8-.1.1-.2.1-.3.1zm-23-3.8c-.2 0-.3-.1-.4-.2-.2-.2-.2-.6.1-.8C49.1 2 51.5 1.1 54.5.6c2.1-.3 4.1-.2 6 .1.3.1.5.4.4.7-.1.3-.3.5-.7.4-1.8-.4-3.7-
.4-5.6-.1-2.8.4-5 1.3-6.6 2.6-.1.2-.2.2-.4.2z" fill="#D7D7DB"/><path d="M120.4 25.6H21.8c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h98.6c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z" fill="#F9F9FA"/><path d="M15.2 181.9c-2.8 0-5-2.1-5-4.8V59.7c0-2.9 2.4-5.3 5.3-5.3h126.1c2.9 0 5.3 2.4 5.3 5.3v117.4c0 2.6-2.2 4.8-5 4.8H15.2z" fill="#FFF"/><path d="M141.6 55.5c2.3 0 4.2 1.9 4.2 4.2V177.1c0 2-1.7 3.7-3.9 3.7H15.2c-2.2 0-3.9-1.6-3.9-3.7V59.7c0-2.3 1.9-4.2 4.2-4.2h126.1zm0-2.2H15.5c-3.5 0-6.4 2.9-6.4 6.4V177.1c0 3.2 2.8 5.9 6.1 5.9h126.7c3.4 0 6.1-2.6 6.1-5.9V59.7c0-3.5-2.9-6.4-6.4-6.4z" fill="#D7D7DB"/><path d="M141.2 76.4V175c0 .9-.1 1.2-.1 1.2s-.3.1-1.2.1H17.2c-.9 0-1.2-.1-1.2-.1s-.1-.3-.1-1.2V76.4h125.3zm1.1-1.1H14.8V175c0 2 .4 2.4 2.4 2.4h122.7c2 0 2.4-.4 2.4-2.4V75.3z" fill="#D7D7DB"/><g fill="#D7D7DB"><circle cx="3.3" cy="3.3" r="2.8" transform="translate(19 62)"/><circle cx="3.5" cy="3.3" r="2.8" transform="translate(28 62)"/><path d="M110.2 68.6H46.9c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4
-3.1 3.1-3.1h63.4c1.7 0 3.1 1.4 3.1 3.1v.3c-.1 1.7-1.5 3.1-3.2 3.1z"/><g><circle cx="3.6" cy="3.3" r="2.8" transform="translate(122 62)"/><circle cx="2.8" cy="3.3" r="2.8" transform="translate(132 62)"/></g></g><path d="M210 28.8h13.3s-4.2-9.3 4.7-10.5c7.9-1.1 11 7 11 7s.9-4.7 5.6-3.8c4.6.9 8 8.3 8 8.3h11.6" fill="#F9F9FA"/><path d="M223.7 27.3h-13.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.3v.5l.5-.2c.1.2.1.4 0 .6-.2.2-.3.3-.5.3zm36.5-.2h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-20.8-3.3h-.1c-.3-.1-.5-.4-.4-.7.1-.4 1.1-4.3 5-4.3.4 0 .8 0 1.2.1 1.7.3 3.5 1.4 5.2 3.1.2.2.2.6 0 .8-.2.2-.6.2-.8 0-1.6-1.6-3.1-2.5-4.6-2.8-.4-.1-.7-.1-1-.1-3 0-3.8 2.8-3.9 3.4-.1.3-.4.5-.6.5zm-15.3-5.1c-.1 0-.3 0-.4-.1-.2-.2-.2-.6 0-.8.8-.8 1.8-1.5 3.1-1.8.3-.1.6.1.7.4.1.3-.1.6-.4.7-1.1.3-2 .8-2.6 1.5-.1.1-.3.1-.4.1zm8.3-1.6h-.2c-.3-.1-.7-.2-1-.2-.3-.1-.5-.3-.5-.6.1-.3.3-.5.6-.5l1.2.3c.3.1.5.4.4.7 0 .1-.2.3-.5.3z" fill="#D7D7DB"/><path d="M265.1 31h-54.9c-.6 0-1.1-.5-1.1-1.1 0-.6.
5-1.1 1.1-1.1h54.9c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1zM237.9 58H87.8c-5.8 0-10.6 4.8-10.6 10.6v139.9c0 5.5 4.6 9.9 10.2 9.9h150.9c5.6 0 10.2-4.5 10.2-9.9V68.6c0-5.8-4.7-10.6-10.6-10.6z" fill="#F9F9FA"/><ellipse fill="#EDEDF0" cx="164.5" cy="239.7" rx="82" ry="6.8"/><path d="M148.2 68.3c-.5.4-1.1.6-1.8.6s-1.3-.2-1.8-.6l-6.3-5.1-.2-.2H87.7c-2.8 0-5 2.2-5 5v140c0 2.4 2.1 4.4 4.6 4.4h150.9c2.6 0 4.6-1.9 4.6-4.4V68.1c0-2.8-2.2-5-5-5h-83.3c-.1 0-.1.1-.2.2l-6.1 5zm-41.4 3.1c1.9 0 3.4 1.5 3.4 3.4s-1.5 3.4-3.4 3.4-3.4-1.5-3.4-3.4 1.5-3.4 3.4-3.4zm-10.9 0c1.9 0 3.4 1.5 3.4 3.4s-1.5 3.4-3.4 3.4-3.4-1.5-3.4-3.4 1.5-3.4 3.4-3.4zm133.9 0c1.9 0 3.4 1.5 3.4 3.4s-1.5 3.4-3.4 3.4-3.4-1.5-3.4-3.4 1.6-3.4 3.4-3.4zm-10.9 0c1.9 0 3.4 1.5 3.4 3.4s-1.5 3.4-3.4 3.4-3.4-1.5-3.4-3.4 1.6-3.4 3.4-3.4zm-18.3-.4c2 0 3.7 1.6 3.7 3.7v.3c0 2-1.6 3.7-3.7 3.7h-5.8c.9 2.6.9 5.5-.2 8h44.3v118.7c0 2.4-.5 2.9-2.9 2.9H89.8c-2.4 0-2.9-.5-2.9-2.9V86.7h73.3c-1.1-2.6-1.1-5.5-.2-8h-34.9c-2 0-3.7-1.6-3.7-3.7v-.3c0-2 1.6-3.7
3.7-3.7h75.5z" fill="#FFF"/><path d="M190.6 91.5l-11.1 9c-.6.5-1.3.7-2.1.7s-1.5-.3-2.1-.7l-11.1-9c-1.3-.8-2.3-1.9-3.1-3.1-.4-.6-.7-1.1-.9-1.7H86.9v118.7c0 2.4.5 2.9 2.9 2.9H236c2.4 0 2.9-.5 2.9-2.9V86.7h-44.3c-.3.6-.6 1.2-1 1.8-.8 1.2-1.8 2.2-3 3zm10.1 24c7.4 8.8 8.2 21.5 1.8 31.1-1.9 2.9-4.3 5.3-7.2 7.3l-30.2 24.7c-.9.7-2.1 1.1-3.3 1.1-1.2 0-2.4-.4-3.3-1.2l-30.4-24.6c-3-2-5.6-4.5-7.5-7.5-6.7-10.3-5.3-24 3.4-32.7 4.9-4.9 11.4-7.6 18.3-7.6 7 0 13.5 2.7 18.4 7.6.3.3.6.4.8.4.2 0 .5-.1.9-.4 4.9-4.9 11.4-7.6 18.3-7.6 7.8.2 15 3.5 20 9.4z" fill="url(#a)"/><path d="M162.5 113.8c-.3.3-.7.4-.9.4-.2 0-.5-.1-.8-.4-4.9-4.9-11.4-7.6-18.4-7.6-6.9 0-13.4 2.7-18.3 7.6-8.7 8.6-10.1 22.4-3.4 32.7 1.9 3 4.4 5.5 7.5 7.5l30.4 24.6c.9.7 2.1 1.2 3.3 1.2 1.2 0 2.3-.4 3.3-1.1l30.2-24.7c2.9-2 5.3-4.4 7.2-7.3 6.3-9.6 5.6-22.3-1.8-31.1-5-5.9-12.2-9.3-19.9-9.3-7 0-13.5 2.7-18.4 7.5zM199 117c6.7 8 7.4 19.7 1.6 28.4-1.8 2.8-4.2 5-6.7 6.7l-30.3 24.7c-.6.4-1.2.7-1.9.7s-1.3-.2-1.9-.7l-30.5-24.7c-2.6-1.7-5-4-6.9-6.9-
6.1-9.3-4.8-22 3.1-29.9 4.6-4.6 10.7-6.9 16.8-6.9 6.1 0 12.2 2.3 16.8 7 .7.7 1.5 1 2.4 1 .9 0 1.7-.3 2.4-1 4.6-4.6 10.7-6.9 16.8-6.9 6.8 0 13.5 2.8 18.3 8.5z" fill="#FFF"/><path d="M138 115.4c-7.6 1.7-13.2 8.1-13.8 15.8-.2 2.2 1.5 4.1 3.6 4.3h.3c2.1 0 3.8-1.6 3.9-3.6.4-4.3 3.4-7.8 7.6-8.7 2.2-.5 3.5-2.6 3-4.7-.3-2.2-2.4-3.6-4.6-3.1z" fill="#F9F9FA"/><path d="M184.5 71.4c-2.6 0-5.1.9-7.1 2.6-2-1.7-4.5-2.6-7.1-2.6-2.9 0-5.7 1.1-7.7 3.2-1.2 1.2-2 2.5-2.6 4-.9 2.6-.9 5.5.2 8 .3.6.6 1.2.9 1.7.8 1.2 1.8 2.3 3.1 3.1l11.1 9c.6.5 1.3.7 2.1.7s1.5-.3 2.1-.7l11.1-9c1.2-.8 2.2-1.8 3-3 .4-.6.7-1.2 1-1.8 1.1-2.6 1.1-5.5.2-8-.4-1.2-1.1-2.3-1.9-3.3-2.1-2.5-5.2-3.9-8.4-3.9zm7.3 15.8c-.7 1-1.5 1.8-2.5 2.5l-11.2 9.1c-.2.2-.4.2-.7.2-.2 0-.5-.1-.7-.2l-11.2-9.1c-1-.6-1.9-1.5-2.6-2.5-2.2-3.4-1.8-8.1 1.1-11 1.7-1.7 3.9-2.5 6.2-2.5 2.2 0 4.5.9 6.2 2.6.2.2.6.4.9.4.3 0 .6-.1.9-.4 1.7-1.7 3.9-2.6 6.2-2.6 2.5 0 4.9 1 6.7 3.1 2.5 2.9 2.8 7.2.7 10.4z" fill="#FFF"/><path d="M168.7 76.2c-2.8.6-4.8 3-5.1 5.8-.1.8.5 1
.5 1.3 1.6h.1c.8 0 1.4-.6 1.5-1.3.1-1.6 1.3-2.9 2.8-3.2.8-.2 1.3-1 1.1-1.7-.1-.9-.9-1.4-1.7-1.2zM138.1 63l.2.2 6.3 5.1c.5.4 1.1.6 1.8.6.6 0 1.3-.2 1.8-.6l6.2-5.1c.1 0 .1-.1.2-.2.7-.5 1.3-1.1 1.7-1.8.1-.1.2-.3.2-.4 1.5-2.6 1.2-5.9-.7-8.1-1.4-1.6-3.4-2.6-5.5-2.6-1.4 0-2.8.4-4 1.2-1.2-.8-2.6-1.2-4-1.2-1.9 0-3.7.7-5.1 2.1-2.3 2.3-2.7 5.8-1.2 8.6.1.1.1.3.2.4.6.7 1.2 1.3 1.9 1.8zm.8-9.2c1-1 2.2-1.4 3.5-1.4 1.3 0 2.5.5 3.5 1.5.1.1.3.2.5.2s.4-.1.5-.2c1-1 2.2-1.4 3.5-1.4 1.4 0 2.8.6 3.8 1.8 1.4 1.7 1.5 4.1.3 5.9-.4.6-.9 1-1.4 1.4l-6.3 5.1c-.1.1-.3.1-.4.1-.1 0-.3 0-.4-.1l-6.3-5.1c-.5-.4-1-.8-1.4-1.4-1.3-2.2-1.1-4.8.6-6.4z" fill="#F9F9FA"/><path d="M139.3 58c.1 0 .1 0 0 0 .5 0 .9-.3.9-.8.1-.9.7-1.6 1.6-1.8.4-.1.7-.5.6-1-.1-.4-.5-.7-1-.6-1.6.4-2.7 1.7-2.9 3.3 0 .4.4.8.8.9z" fill="#F9F9FA"/><path d="M245.2 68.1V208c0 3.6-3.1 6.6-6.9 6.6H87.4c-3.8 0-6.9-3-6.9-6.6V68.1c0-4 3.2-7.2 7.2-7.2h48.4c.1.1.1.3.2.4.5.7 1.1 1.3 1.8 1.8H87.7c-2.8 0-5 2.2-5 5V208c0 2.4 2.1 4.4 4.6 4.4h150.9c2.6 0 4.6-1.9 4.6-
4.4V68.1c0-2.8-2.2-5-5-5h-83.3c.7-.5 1.3-1.1 1.7-1.8.1-.1.2-.3.2-.4h81.4c4.1-.1 7.4 3.2 7.4 7.2zM95.9 78.2c1.9 0 3.4-1.5 3.4-3.4s-1.5-3.4-3.4-3.4-3.4 1.5-3.4 3.4 1.5 3.4 3.4 3.4zm10.9 0c1.9 0 3.4-1.5 3.4-3.4s-1.5-3.4-3.4-3.4-3.4 1.5-3.4 3.4 1.5 3.4 3.4 3.4zm14.6-3.6v.3c0 2 1.6 3.7 3.7 3.7H160c.5-1.5 1.4-2.8 2.6-4 2.1-2.1 4.8-3.2 7.7-3.2 2.6 0 5.1.9 7.1 2.6 2-1.7 4.5-2.6 7.1-2.6 3.2 0 6.3 1.4 8.4 3.9.8 1 1.5 2.1 1.9 3.3h5.8c2 0 3.7-1.6 3.7-3.7v-.3c0-2-1.6-3.7-3.7-3.7h-75.5c-2 .1-3.7 1.7-3.7 3.7zm97.5 3.6c1.9 0 3.4-1.5 3.4-3.4s-1.5-3.4-3.4-3.4-3.4 1.5-3.4 3.4 1.6 3.4 3.4 3.4zm10.9 0c1.9 0 3.4-1.5 3.4-3.4s-1.5-3.4-3.4-3.4-3.4 1.5-3.4 3.4 1.6 3.4 3.4 3.4zm-49 30.3c6.7 0 13.4 2.8 18.2 8.5 6.7 8 7.4 19.7 1.6 28.4-1.8 2.8-4.2 5-6.7 6.7l-30.3 24.7c-.6.4-1.2.7-1.9.7s-1.3-.2-1.9-.7l-30.5-24.7c-2.6-1.7-5-4-6.9-6.9-6.1-9.3-4.8-22 3.1-29.9 4.6-4.6 10.7-6.9 16.8-6.9 6.1 0 12.2 2.3 16.8 7 .7.7 1.5 1 2.4 1 .9 0 1.7-.3 2.4-1 4.8-4.6 10.9-6.9 16.9-6.9zm-38 9.9c-.5-2.2-2.6-3.5-4.7-3-7.6 1.7-13.2 8.1-1
3.8 15.8-.2 2.2 1.5 4.1 3.6 4.3h.3c2.1 0 3.8-1.6 3.9-3.6.4-4.3 3.4-7.8 7.6-8.7 2.2-.5 3.6-2.7 3.1-4.8zm48.4-41.6c2.5 2.9 2.7 7.3.6 10.5-.7 1-1.5 1.8-2.5 2.5l-11.2 9.1c-.2.2-.4.2-.7.2-.2 0-.5-.1-.7-.2l-11.2-9.1c-1-.6-1.9-1.5-2.6-2.5-2.2-3.4-1.8-8.1 1.1-11 1.7-1.7 3.9-2.5 6.2-2.5 2.2 0 4.5.9 6.2 2.6.2.2.6.4.9.4.3 0 .6-.1.9-.4 1.7-1.7 3.9-2.6 6.2-2.6 2.5-.1 5 .9 6.8 3zm-20.7.5c-.2-.8-1-1.3-1.7-1.1-2.8.6-4.8 3-5.1 5.8-.1.8.5 1.5 1.3 1.6h.1c.8 0 1.4-.6 1.5-1.3.1-1.6 1.3-2.9 2.8-3.2.7-.2 1.2-1 1.1-1.8zM138.2 60c-1.3-1.9-1-4.6.6-6.2 1-1 2.2-1.4 3.5-1.4 1.3 0 2.5.5 3.5 1.5.1.1.3.2.5.2s.4-.1.5-.2c1-1 2.2-1.4 3.5-1.4 1.4 0 2.8.6 3.8 1.8 1.4 1.7 1.5 4.1.3 5.9-.4.6-.9 1-1.4 1.4l-6.3 5.1c-.1.1-.3.1-.4.1-.1 0-.3 0-.4-.1l-6.3-5.1c-.5-.5-1-1-1.4-1.6zm.4-2.9c0 .5.3.9.8.9h.1c.4 0 .8-.3.8-.8.1-.9.7-1.6 1.6-1.8.4-.1.7-.5.6-1-.1-.4-.5-.7-1-.6-1.6.3-2.8 1.7-2.9 3.3zM158 42.4c-2.1-3.2-1.6-7.5 1.1-10.2 1.6-1.6 3.6-2.4 5.7-2.4s4.2.8 5.7 2.4c.2.2.5.3.8.3.3 0 .6-.1.8-.3 1.6-1.6 3.7-2.4 5.7-2.4 2.3 0 4.6 1 6.2
2.9 2.3 2.7 2.5 6.7.6 9.7-.6 1-1.4 1.7-2.3 2.3L172 53.2c-.2.2-.4.2-.6.2-.2 0-.5-.1-.6-.2l-10.4-8.4c-1-.7-1.8-1.4-2.4-2.4zm.6-4.8c-.1.7.5 1.4 1.2 1.5h.1c.7 0 1.3-.5 1.3-1.2.1-1.5 1.2-2.7 2.6-3 .7-.2 1.2-.9 1-1.6-.2-.7-.9-1.2-1.6-1-2.5.5-4.4 2.6-4.6 5.3z" fill="url(#b)"/><path d="M159 46.5l10.3 8.4c.6.5 1.3.7 2 .7s1.5-.3 2-.7l10.3-8.4c1.1-.8 2.1-1.7 2.8-2.8 2.5-3.8 2.2-8.9-.7-12.4-2-2.3-4.9-3.7-7.9-3.7-2.4 0-4.7.8-6.6 2.3-1.9-1.5-4.2-2.4-6.6-2.4-2.8 0-5.3 1.1-7.3 3-3.5 3.4-4 8.9-1.4 13 1 1.3 1.9 2.2 3.1 3zm0-14.3c1.6-1.6 3.6-2.4 5.7-2.4s4.2.8 5.7 2.4c.2.2.5.3.8.3.3 0 .6-.1.8-.3 1.6-1.6 3.7-2.4 5.7-2.4 2.3 0 4.6 1 6.2 2.9 2.3 2.7 2.5 6.7.6 9.7-.6 1-1.4 1.7-2.3 2.3L172 53.2c-.2.2-.4.2-.6.2-.2 0-.5-.1-.6-.2l-10.4-8.4c-.9-.6-1.7-1.4-2.4-2.4-2.1-3.2-1.7-7.5 1-10.2z" fill="#F9F9FA"/><path d="M159.8 39.1h.1c.7 0 1.3-.5 1.3-1.2.1-1.5 1.2-2.7 2.6-3 .7-.2 1.2-.9 1-1.6-.2-.7-.9-1.2-1.6-1-2.6.6-4.5 2.8-4.7 5.4 0 .6.6 1.3 1.3 1.4z" fill="#F9F9FA"/></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_library.svg b/browser/extensions/onboarding/content/img/figure_library.svg
new file mode 100644
index 000000000000..aad20181b996
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_library.svg
@@ -0,0 +1,689 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="267" height="240">
+ <defs>
+ <linearGradient id="a" x1="-287.251713%" x2="363.382118%" y1="-127.999431%" y2="247.172106%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="b" x1="-8347.28%" x2="11424.26%" y1="-8337.33%" y2="11434.21%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="c" x1="-2354.3122%" x2="2468.01463%" y1="-738.5544%" y2="843.1688%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="d" x1="-11316.73%" x2="8454.81%" y1="-5346.60952%" y2="4068.40952%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="e" x1="-156.148629%" x2="205.305484%" y1="-480.49483%" y2="430.938303%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="f" x1="-11777.11%" x2="7994.43%" y1="-1542.90541%" y2="1128.92432%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="g" x1="-1966.10678%" x2="1385.00169%" y1="-2646.49545%" y2="1847.03636%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="h" x1="-1259.26087%" x2="945.558937%" y1="-1283.95691%" y2="942.373333%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="i" x1="-4828.28387%" x2="3895.46452%" y1="-2550.56897%" y2="2112.12414%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="j" x1="-1420.34388%" x2="1159.68716%" y1="-3565.4194%" y2="2819.67133%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="k" x1="-6578.28%" x2="13193.26%" y1="-6566.33%" y2="13205.21%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="l" x1="-690.589109%" x2="1266.98911%" y1="-1068.60597%" y2="1882.37015%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="m" x1="-3693.78418%" x2="6240.18862%" y1="-1360.99327%" y2="2373.67085%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="n" x1="-51.4002563%" x2="99.3496099%" y1="-59.6430664%" y2="133.087695%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="o" x1="-47.4074974%" x2="121.810771%" y1="-106.87209%" y2="132.306567%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="p" x1="-701.943676%" x2="609.202314%" y1="-537.964802%" y2="487.22249%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="q" x1="-1074.53%" x2="834.91%" y1="-358.218519%" y2="348.981481%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="r" x1="-5230.64688%" x2="3222.21875%" y1="-2856.73793%" y2="1806.91207%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="s" x1="-1536.40601%" x2="955.898444%" y1="-3896.2795%" y2="2345.49035%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="t" x1="-2573.03736%" x2="4141.82528%" y1="-7694%" y2="12077.54%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="u" x1="-105.756%" x2="253.726545%" y1="-959.543678%" y2="1313.04713%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="v" x1="-113.495628%" x2="246.641894%" y1="-1951.93556%" y2="2441.74%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="w" x1="-203.741261%" x2="362.77851%" y1="-8794.04%" y2="10977.5%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="x" x1="-8901.65455%" x2="9072.47273%" y1="-4629.9%" y2="4785.11905%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="y" x1="-135.885507%" x2="273.463147%" y1="-6854.87692%" y2="8354%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="z" x1="-237.240755%" x2="222.496119%" y1="-950.902381%" y2="659.16369%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="A" x1="-323.294457%" x2="276.418625%" y1="-16784.12%" y2="10262.94%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="B" x1="-324.50885%" x2="273.863496%" y1="-16876.15%" y2="10170.29%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="C" x1="-8757.43409%" x2="-13250.9636%" y1="-25788.3267%" y2="-38969.3533%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="D" x1="-4977.81154%" x2="-7512.62308%" y1="-21732.3667%" y2="-32716.5611%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="E" x1="-778.197863%" x2="-1200.66709%" y1="-2873.70382%" y2="-4382.98244%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="F" x1="-3162.7925%" x2="-4810.42083%" y1="-25654.4533%" y2="-38835.4867%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="G" x1="-1053.32338%" x2="1514.40909%" y1="-4984.71765%" y2="6645.6%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="H" x1="-5039.72338%" x2="-7607.45714%" y1="-23040.7706%" y2="-34671.0941%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="I" x1="143.631333%" x2="-4.86%" y1="790.352632%" y2="-381.952632%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="J" x1="-2552.41333%" x2="-3870.516%" y1="-20494.2053%" y2="-30900.2789%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="K" x1="-1250.60304%" x2="-1918.56115%" y1="-38487.33%" y2="-58258.87%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="L" x1="-37598.9%" x2="-57370.44%" y1="-17879.1857%" y2="-27294.2048%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="M" x1="-882.727251%" x2="-1363.78637%" y1="-29434.6846%" y2="-44643.5692%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="N" x1="-268.313828%" x2="273.677355%" y1="-882.118713%" y2="699.481287%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="O" x1="-420.455862%" x2="943.098621%" y1="-4784.28571%" y2="9338.24286%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="P" x1="-587.656122%" x2="1429.84796%" y1="-3859.74375%" y2="8497.475%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="Q" x1="-597.567708%" x2="1461.96771%" y1="-6217.96%" y2="13553.58%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="R" x1="-989.3%" x2="1835.20571%" y1="-6563.19091%" y2="11410.9364%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="S" x1="-1683.03158%" x2="3520.00526%" y1="-4061.93125%" y2="8295.28125%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="T" x1="-289.56383%" x2="551.778298%" y1="-736.619802%" y2="1220.95842%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="U" x1="-8102.24%" x2="11669.3%" y1="-8112.37%" y2="11659.17%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="V" x1="-527.27218%" x2="959.309774%" y1="-7671.89%" y2="12099.65%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="W" x1="-563.298261%" x2="1155.96609%" y1="-4360.425%" y2="7996.7875%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="X" x1="-595.656881%" x2="1218.24587%" y1="-7031.95%" y2="12739.59%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="Y" x1="-4261.16471%" x2="7369.15294%" y1="-5186.16429%" y2="8936.36429%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="Z" x1="-7291.52%" x2="12480.03%" y1="-7323.1%" y2="12448.44%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aa" x1="-46.8866667%" x2="106.777333%" y1="-610.354545%" y2="437.354545%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="ab" x1="-954.992%" x2="1681.21333%" y1="-6801.97273%" y2="11172.1545%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ac" x1="-53.1965517%" x2="108.827586%" y1="-138.8375%" y2="154.825%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="ad" x1="-2268.40345%" x2="4549.36897%" y1="-4153.9%" y2="8203.3125%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ae" x1="-134.196822%" x2="349.214914%" y1="-7485.96%" y2="12285.58%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="af" x1="-203.129153%" x2="467.092542%" y1="-7412.3%" y2="12359.24%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ag" x1="-8254.16%" x2="11517.38%" y1="-4829.67647%" y2="6800.64118%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ah" x1="-261.207831%" x2="281.860241%" y1="-1137.19462%" y2="943.173846%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="ai" x1="-353.298433%" x2="352.892428%" y1="-15403.61%" y2="11643.5%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aj" x1="-355.267885%" x2="350.914099%" y1="-15487.8%" y2="11558.97%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="ak" x1="-2084.69358%" x2="-3141.99572%" y1="-5548.86479%" y2="-8333.58732%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="al" x1="-2136.94011%" x2="-3223.28791%" y1="-39758.41%" y2="-59529.95%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="am" x1="-8671.43111%" x2="-13065.1111%" y1="-39159.26%" y2="-58930.8%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="an" x1="42.05%" x2="39.02%" y1="40.85%" y2="37.83%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ao" x1="-1655.02189%" x2="-2503.58541%" y1="-18008.5045%" y2="-26995.5636%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ap" x1="26.16%" x2="23.82%" y1="17.93%" y2="15.58%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aq" x1="-7321.04%" x2="-10915.8655%" y1="-26976.66%" y2="-40157.6867%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ar" x1="-3806.45143%" x2="-5689.45619%" y1="-33702.4583%" y2="-50178.75%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="as" x1="-719.07449%" x2="1298.42959%" y1="-4375.10588%" y2="7255.21176%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="at" x1="-4193.87653%" x2="-6211.37959%" y1="-24406.3118%" y2="-36036.6294%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="au" x1="-524.679508%" x2="1095.93852%" y1="-4333.45%" y2="8023.7625%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="av" x1="-3315.91393%" x2="-4936.53115%" y1="-25616.6063%" y2="-37973.8188%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aw" x1="-1422.94082%" x2="2612.06735%" y1="-5115.85714%" y2="9006.67143%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ax" x1="-8372.54082%" x2="-12407.5531%" y1="-29439.4643%" y2="-43561.9929%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="ay" x1="-2040.6303%" x2="3950.74545%" y1="-6860.53%" y2="12911.01%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="az" x1="-12359.7364%" x2="-18351.1091%" y1="-40913.58%" y2="-60685.12%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aA" x1="-1005.75152%" x2="1989.93788%" y1="-6296.96364%" y2="11677.1727%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aB" x1="-6165.30303%" x2="-9160.98939%" y1="-37254.2727%" y2="-55228.4%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aC" x1="-2871.84%" x2="5036.776%" y1="-4515.63125%" y2="7841.58125%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aD" x1="-16493.056%" x2="-24401.672%" y1="-25798.7875%" y2="-38156%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aE" x1="-4836.46667%" x2="8344.56%" y1="-7269.91%" y2="12501.63%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aF" x1="-27538.4933%" x2="-40719.52%" y1="-41322.96%" y2="-61094.5%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aG" x1="123.979381%" x2="7.09896907%" y1="645.125%" y2="-299.65%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aH" x1="-4143.41443%" x2="-6181.71959%" y1="-33849.65%" y2="-50325.925%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aI" x1="110.22963%" x2="13.6574074%" y1="263.406667%" y2="-84.2533333%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aJ" x1="-7493.57037%" x2="-11154.9667%" y1="-27110.28%" y2="-40291.3067%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aK" x1="-1314.06588%" x2="-1982.02331%" y1="-40374.36%" y2="-60145.89%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aL" x1="-39504.49%" x2="-59276.05%" y1="-23215.4176%" y2="-34845.7353%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aM" x1="-935.697066%" x2="-1419.10856%" y1="-40260.71%" y2="-60032.24%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aN" x1="-239.365731%" x2="302.59479%" y1="-1057.81832%" y2="1006.59618%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aO" x1="-195.98196%" x2="188.238494%" y1="-262.20413%" y2="218.292299%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aP" x1="-148.239568%" x2="156.504317%" y1="-236.10625%" y2="205.1375%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aQ" x1="-684.479137%" x2="737.933813%" y1="-1012.53646%" y2="1046.99896%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="aR" x1="-802.736152%" x2="689.739334%" y1="-1056.80385%" y2="890.777014%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aS" x1="-1124.88665%" x2="549.535228%" y1="-1423.71471%" y2="673.128094%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aT" x1="-465.885211%" x2="339.528169%" y1="-152.931663%" y2="157.298039%">
+ <stop stop-color="#FFE900" offset="28.07%"/>
+ <stop stop-color="#FFCC07" offset="32.21%"/>
+ <stop stop-color="#FF8119" offset="41.22%"/>
+ <stop stop-color="#FF0B36" offset="54.35%"/>
+ <stop stop-color="#FF0039" offset="55.5%"/>
+ <stop stop-color="#ED00B5" offset="85.24%"/>
+ </linearGradient>
+ <linearGradient id="aU" x1="-632.473239%" x2="759.889437%" y1="-217.098158%" y2="319.212821%">
+ <stop stop-color="#FFCCD7" offset="40.06%"/>
+ <stop stop-color="#EDBEE2" offset="100%"/>
+ </linearGradient>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <path d="M150.1 145.9v-.2.2zM152.6 147.1c0 .9.3 1.9.9 2.8-.6-.9-.9-1.9-.9-2.8zM149.7 154.2c0-.2-.1-.5-.3-.6.2.2.3.4.3.6 0 0-.1.7.8 1.8-.9-1-.8-1.8-.8-1.8zM229.2 188.9c.4-1.5.7-3 .8-4.4 0-.5.1-1 .1-1.5 0 .5-.1 1-.1 1.5-.1 1.4-.4 2.9-.8 4.4zM103.1 216.7h.8l-.3-.3c-.1.2-.3.3-.5.3zM235.1 153.6v.2c.4.1.8.3 1.1.6.8.7 1 1.8.7 2.7.1-.2.1-.4.1-.6.1-1.3-.7-2.5-2-2.9v-.2l-.1-.9c-1.5-.1-3-.2-4.6-.4l-.3 3.3 5.1-1.8zM245.1 143.8c6.7-3.5 11.1-12.3 10.9-20.8.3 8.5-4.2 17.3-10.9 20.8-3.5 1.8-8.8 2.6-14.2 2.7 5.4-.1 10.7-.8 14.2-2.7zM228.5 173.5l-.1 1.1c.6.3 1.3.5 1.9.8v.1c.1 0 .1.1.2.1-.1-1.3-.2-2.8-.4-4.3.1 1 .1 2 .2 2.9-.6-.2-1.2-.4-1.8-.7zM147.3 150.3l1-2.8-.1.1-.9 2.7c-.2.3 0 .6.3.7h.1c-.4-.1-.5-.4-.4-.7zM210.1 73.1c.5.1 1 .2 1.6.4-.5-.1-1-.3-1.6-.4zM155.1 180c0 .1.5 2.8 1.3 6.9h.1c-.8-4.1-1.3-6.9-1.3-7 0-.2.1-.4.2-.5-.2.1-.4.3-.3.6zM160 204.4h.2c-1.2-5.1-2.3-10.7-3.2-15.3h-.1c.8 4.6 1.9 10.2 3.1 15.3z"/>
+ <path d="M239.9 150.3c-.8.1-1.6.2-2.4.2-.1-.1-.3-.1-.4-.1-2.1-.1-4.3-.2-6.4-.4v.1c2.1.2 4.2.4 6.3.5.1 0 .3 0 .4.1.8 0 1.6-.1 2.4-.2 6.9-.9 11-3.2 15.3-8.7 1.4-1.7 3-4.6 4.1-7.8-1.2 3.2-2.7 5.9-4.1 7.7-4.3 5.4-8.4 7.7-15.2 8.6zM104 200.6c0-.1 0-.1 0 0 0-.1 0-.1 0 0zM145.8 157.9l-.2-.3v-.1l.1.1M140.7 165.2h-.1l-.6.9v.1M252 110.6c-2.8-4.7-6.4-9.1-8.6-11.7 2.2 2.6 5.8 7 8.6 11.7zM206.9 117.5c-.2-.3-.5-.5-.7-.7-.6-.5-1.4-.7-2.1-.7 1 0 2.1.5 2.8 1.4.5.8 1.5 1 2.3.5.1-.1.2-.1.3-.2-.1.1-.2.1-.3.2-.8.5-1.8.3-2.3-.5zM218.4 218.6c-.2 3.3-.2 5.7-.2 7.4h.1c-.1-1.7 0-4.1.1-7.4-6.4 1.4-13 2.3-19.7 2.4-7.5.1-14.9-.8-22.2-2.6v.1c7.2 1.8 14.6 2.7 22.1 2.6 6.7-.2 13.3-1 19.8-2.5zM209 117.5h-.1.1zM244.8 117.2c-.5.4-1.2.3-1.6-.2-.2-.3-.4-.5-.7-.7-.7.4-1.4.6-2.2.6-1 0-1.9-.3-2.6-.9-.4.3-.8.6-1.1 1-.1.2-.3.4-.6.4.2.2.5.4.7.6 2.9 2 6.8 1.3 8.8-1.6.3-.5.2-1.2-.3-1.5-.3-.2-.6-.2-1-.1.3.3.6.6.8 1 .4.5.2 1.1-.2 1.4zM241.5 113.3c.3-.3.4-.6.4-1.1v-3.5c0-.7-.4-1.3-1.1-1.5.4.3.7.8.7 1.3v3.5c0 .2-.1.5-.2.7-.5-.
1-1.1-.2-1.6-.2-.3 0-.6 0-.9.1.1.2.1.4.3.5.7 0 1.6 0 2.4.2zM200.6 117.5l.3-.3.6-.6c-.2.2-.4.4-.6.7 0 0-.1.1-.3.2zM208.1 114.6c-.1 0-.1-.1-.2-.2-1.5-1.1-3.3-1.4-5-1 1.8-.4 3.7.1 5.2 1.2zM209.5 116.7c0-.2 0-.5-.1-.7l-.3-.3.3.3c.1.2.2.5.1.7zM159.7 206.8c.7 3.1 1.5 6.2 2.6 9.2.3.9 2.2 6 4.6 10.2h.1c-2.5-4.2-4.3-9.3-4.7-10.3-1-3-1.9-6-2.6-9.1-1.2.1-2.5.1-3.8.1-4-.1-7.9-.5-11.8-1.2v.1c3.9.7 7.8 1.1 11.7 1.1 1.3 0 2.6 0 3.9-.1zM198.4 115.7c1.1-1.5 2.7-2.5 4.4-2.8-.1-.2-.1-.4-.1-.6v-3.5c0-.9.7-1.6 1.6-1.6-.9 0-1.6.7-1.6 1.6v3.5c0 .2 0 .4.1.6-1.8.2-3.4 1.3-4.4 2.8-.5.7-.3 1.5.2 2.1-.6-.6-.7-1.5-.2-2.1zM156.8 110.8c.3-.1.4-.4.3-.7l-1.2-2.9V106.9l-.3-1 .3.9v.1l-.3-1 .4 1.1v.2l1.2 2.9c0 .3-.1.6-.4.7h-.3c.2.1.3.1.3 0zM164.8 90.6l-.1 4.1M164.9 97.3l-.3-2.4c.1.8.2 1.7.3 2.5V97.3zM184.8 79.4l.2-.2 2.6-1.1h-.1l-2.4 1c-.2.1-.3.2-.3.3z"/>
+ <path d="M214.8 223.5v-.9c-1.3.2-2.6.4-3.8.6-4.1.6-8.2 1-12.4 1-6.3 0-12.6-.5-18.8-1.7 0 1.3 0 2.3-.1 3.3 4.7-.1 9.6-.2 14.7-.2 7.1 0 13.9.1 20.4.3v-2.4zM159.1 216.9c-.7-1.9-1.3-4.2-2-6.8h-1.3c-3.9-.1-7.9-.4-11.7-1.1v1.9h1c1 0 1.9 1 1.9 2.2v1.4c0 1.2-.8 2.1-1.7 2.2h.2l.4.3c.2-.2.4-.3.7-.3h.8c1.9.1 3.1.4 3.6.9 1.6 1.3 2.6 4.2 2.6 7.5 0 .5-.1 1.2-.2 1.9 3.1-.2 6.3-.4 9.8-.6-.6-1-1.1-2.1-1.6-3.2-.9-1.9-1.8-4.1-2.5-6.3zM235.4 114.9c-.2.1-.3.3-.3.4.1-.1.2-.2.3-.4.1 0 .1 0 0 0zM150.3 134.7c0-12.6 1.1-21.9 3.3-27.6l-.2-.5c-.4-1.2.3-2.4 1.5-2.8l.3-.1c2-3.6 4.4-6.9 7.3-9.9l.1-3.3c0-1.2 1-2.2 2.2-2.2l3.5.1c3.3-2.6 6.8-5 10.5-7.1l1.4-5.3c.3-1.2 1.5-1.8 2.6-1.6h-.1c-1.2-.3-2.4.4-2.7 1.6l-1.4 5.3c-3.7 2-7.2 4.4-10.5 7.1l-3.5-.1c-1.2 0-2.2 1-2.2 2.2l-.1 3.3c-2.8 3-5.3 6.3-7.3 9.9l-.3.1c-1.2.4-1.8 1.6-1.5 2.8l.2.5c-2.2 5.7-3.3 15-3.3 27.6-.6 3.6-1.3 7.2-2.2 10.6l-4.8 2.9 5-2.8c.9-3.5 1.6-7.1 2.2-10.7zM149.2 158.3c.7.7 1.6 1.5 2.8 2.1-1.2-.6-2.1-1.3-2.8-2.1zM206.5 72.8c.6 0 1.3.1 1.9.1.6 0 1.1.
1 1.7.2-.7-.1-1.3-.2-1.9-.3-.6-.1-1.2-.1-1.9-.1-5.7.2-11.4 1.3-16.7 3.4l.2.1c5.3-2 10.9-3.2 16.7-3.4zM140.8 153.8c-.5-.9-.6-1.9-.4-2.8-.3.9-.2 1.9.4 2.8l2.6 4.3-2.6-4.3zM227.3 212.8c-1.9 1.7-4.1 3-6.5 4v.1c2.3-1 4.5-2.3 6.5-4.1-.1.1-.1.1 0 0zM162.3 170.7l-.1-1.2c-2.4.6-4.8 1.4-7.2 2.3-.4-2.9-.8-5.5-1.1-7.6.3 2.1.7 4.8 1.1 7.7-.1 0-.2.1-.4.2.4 2.2 1.1 5.1 1.5 7.4-.3-2.2-.7-4.4-1-6.4 2.4-1.1 4.7-1.9 7.2-2.4zM174.5 205.9v2.9"/>
+ <path d="M152.3 147.3c-.2-3.1-.3-6.4-.4-9.8.2-1 .4-1.9.5-2.8 0-10.7.9-20.1 2.9-26v-.1c-2 5.9-2.9 15.3-2.9 26.1-.2.9-.3 1.8-.5 2.8v.2c0-.1 0-.2.1-.3 0 3.5.1 6.8.3 9.9 0 .1 0 .1 0 0zM236.4 182.5c-.4 15.2-3.8 25.4-5.2 29-.3 1.4-.7 2.7-1.1 3.8-1.6 4.5-3.5 8.5-5.2 11.1 1.7-2.6 3.7-6.6 5.3-11.2.4-1.1.7-2.4 1.1-3.8 1.4-3.6 4.8-13.7 5.2-29v-2.3s-.1 0-.1-.1v2.5zM149 153.6c.1-.6.3-1.3.6-1.9-.3.6-.6 1.2-.6 1.9h.2c-.1-.1-.2-.1-.2 0zM174.2 215.2v.2h-.1l.1-.2-.1.3c.1 2.1.1 4.1.1 6 0 1.7 0 3.2-.1 4.5h.1c.1-1.3.1-2.9.1-4.6 0-1.9-.1-3.9-.1-6h.1v-.2l-.2-5.8c0-.1 0-.2.1-.3-.1.1-.2.3-.2.4l.2 5.7zM236.5 172.8v-2.2c-.1-.7-.1-1.6-.2-2.4.1 1.5.2 3 .2 4.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M7.7 72.3v98.1c0 1 .1 1.2.1 1.2s.2.1 1.2.1h121.1l-.6-1.9c-.9-3.1.3-6.3 2.9-7.9V72.3H7.7zm45.8 65.5c0 1.8-1.5 3.3-3.3 3.3-1.8 0-3.3-1.5-3.3-3.3V98.4c0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3v39.4zm9.8 0c0 1.8-1.5 3.3-3.3 3.3-1.8 0-3.3-1.5-3.3-3.3V105c0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3v32.8zm9.9 0c0 1.8-1.5 3.3-3.3 3.3-1.8 0-3.3-1.5-3.3-3.3v-36.1c0-1.8 1.5-3.3 3.3-3.3 1.8 0 3.3 1.5 3.3 3.3v36.1zm20.8 3.1c-.4.1-.8.2-1.1.2-1.3 0-2.6-.8-3.1-2.2l-13.1-36.1c-.6-1.7.3-3.6 2-4.2 1.7-.6 3.6.3 4.2 2L96 136.7c.6 1.7-.3 3.5-2 4.2zM133.5 171.4c-.1 0-.1 0 0 0l.5 1.7-.5-1.7z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M127.3 173.2l1.8.1c.1-.2.3-.4.5-.5H9c-2 0-2.5-.4-2.5-2.5V71.2h127v90.2c.2-.1.4-.2.7-.2l3.6-1.1v-4.8c-1.3-2.3-1.2-5 0-7.1V55.4c0-2.3-1.9-4.2-4.2-4.2H6.5c-2.3 0-4.2 1.9-4.2 4.2v118.3c0 2 1.8 3.7 3.9 3.7h90c.3-.6.6-1.2 1.1-1.5.9-.7 2.6-.8 3.8-.8.5 0 .9.2 1.2.5l.5-.4h19.1c1.3-1.2 3-2 4.9-2h.5zm9.1-13.5l-.1-.2.1.2zm-.1-.3v.4l-.3-.9.3.5zm-9.6-101.2c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9zm-9.2 0c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9zM35 61c0-1.7 1.4-3.1 3.1-3.1H102c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1H38.1c-1.7 0-3.1-1.4-3.1-3.1V61zm-12.4-2.8c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.3-2.9 2.9-2.9zm-9.3 0c1.6 0 2.9 1.3 2.9 2.9 0 1.6-1.3 2.9-2.9 2.9-1.6 0-2.9-1.3-2.9-2.9 0-1.6 1.4-2.9 2.9-2.9zM136.4 173.1l-.1-.3-.2-.6-1.1-3.7c-.2-.8.2-1.6 1-1.8-.8.2-1.2 1.1-1 1.8l1.1 3.7.3.9.1.5c-.5.6-.9 1.1-1.4 1.7.5-.6 1-1
.1 1.4-1.7l-.1-.5z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M138.7 159.7c.3-.5.6-1.1.8-1.7l-1.7-2.8v4.7l.9-.2zM6.2 177.5c-2.2 0-3.9-1.6-3.9-3.7V55.4c0-2.3 1.9-4.2 4.2-4.2h127.1c2.3 0 4.2 1.9 4.2 4.2V148c.5-.9 1.3-1.7 2.2-2.3V55.4c0-3.6-2.9-6.5-6.5-6.5H6.5c-3.6 0-6.5 2.9-6.5 6.5v118.3c0 3.3 2.8 5.9 6.2 5.9h89.2c.2-.8.4-1.5.7-2.2H6.2v.1zM139 167.8l1.1-1.6v-.1l-1.1 1.7c-.2.1-.2.4 0 .5-.1-.1-.1-.3 0-.5z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M6.5 71.2v99.2c0 2 .4 2.5 2.5 2.5h120.5c.2-.2.4-.5.7-.7l-.1-.4H9c-1 0-1.2-.1-1.2-.1s-.1-.2-.1-1.2V72.3h124.7V162c.3-.2.7-.4 1.1-.6V71.2H6.5zM132.8 169.2c-.2-.7-.2-1.4 0-2.1-.3.6-.3 1.4 0 2.1l.7 2.3v-.1l-.7-2.2zM13.3 64c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9 0 1.6 1.4 2.9 2.9 2.9zM22.6 64c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9 0 1.6 1.3 2.9 2.9 2.9zM38.1 64.3H102c1.7 0 3.1-1.4 3.1-3.1V61c0-1.7-1.4-3.1-3.1-3.1H38.1c-1.7 0-3.1 1.4-3.1 3.1v.3c0 1.7 1.4 3 3.1 3zM117.5 64c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9 0 1.6 1.3 2.9 2.9 2.9zM126.7 64c1.6 0 2.9-1.3 2.9-2.9 0-1.6-1.3-2.9-2.9-2.9-1.6 0-2.9 1.3-2.9 2.9 0 1.6 1.3 2.9 2.9 2.9z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M60 101.6c-1.8 0-3.3 1.5-3.3 3.3v32.8c0 1.8 1.5 3.3 3.3 3.3 1.8 0 3.3-1.5 3.3-3.3v-32.8c0-1.8-1.4-3.3-3.3-3.3zM69.9 98.4c-1.8 0-3.3 1.5-3.3 3.3v36.1c0 1.8 1.5 3.3 3.3 3.3 1.8 0 3.3-1.5 3.3-3.3v-36.1c0-1.9-1.5-3.3-3.3-3.3zM50.2 95.1c-1.8 0-3.3 1.5-3.3 3.3v39.4c0 1.8 1.5 3.3 3.3 3.3 1.8 0 3.3-1.5 3.3-3.3V98.4c0-1.8-1.5-3.3-3.3-3.3zM82.8 100.5c-.6-1.7-2.5-2.6-4.2-2-1.7.6-2.6 2.5-2 4.2l13.1 36.1c.5 1.3 1.7 2.2 3.1 2.2.4 0 .8-.1 1.1-.2 1.7-.6 2.6-2.5 2-4.2l-13.1-36.1zM122.5 21.4h1.1c.3 0 .6-.2.6-.6 0-.4-.2-.6-.6-.6h-1.1c-.3 0-.6.2-.6.6 0 .4.3.6.6.6zM133.7 21.4h4.5c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-4.5c-.3 0-.6.2-.6.6 0 .3.2.6.6.6zM116.9 21.1c.1.2.3.3.5.3h.6c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-.3c-.2-.4-.6-1.2-1.2-2.1-.2-.3-.5-.3-.8-.2-.3.2-.3.5-.2.8.9 1.3 1.3 2.1 1.4 2.4zM66.7 4.5c.1 0 .2 0 .3-.1 1.6-1.2 3.7-2.1 6.4-2.4 2.1-.3 4-.2 5.9.2.3.1.6-.1.7-.4.1-.3-.1-.6-.4-.7-2-.4-4.1-.5-6.3-.2-2.9.4-5.2 1.3-6.9 2.7-.2.2-.3.5-.1.8.1 0 .3.1.4.1zM41.3
20.7h13.4c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6H41.3c-.3 0-.6.2-.6.6 0 .3.3.6.6.6zM98.6 7.9c1.3-.4 2.7-.5 4.3-.2 2.3.4 4.8 1.8 7.2 4.1.1.1.2.2.4.2.1 0 .3-.1.4-.2.2-.2.2-.6 0-.8-2.6-2.5-5.2-3.9-7.7-4.4-1.8-.3-3.4-.3-4.9.2-.3.1-.4.4-.4.7.1.3.5.5.7.4zM92.1 13.1c.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.3-.7-.1-.3-.3-.6-.5-1-.1-.3-.5-.4-.8-.2-.3.1-.4.5-.2.8.2.3.3.6.5.9zM89.1 8.5c.1.1.3.2.4.2.1 0 .2 0 .3-.1.2-.2.3-.5.1-.8-.7-.9-1.5-1.8-2.3-2.5-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.9.7 1.6 1.5 2.3 2.4zM63.4 14.6s.1 0 0 0c.4 0 .6-.3.6-.6 0-.4-.1-.7-.1-1.1 0-.3-.3-.5-.6-.5h-.1c-.2.1-.4.3-.4.6 0 .4.1.8.1 1.1 0 .1 0 .1.1.2 0 .2.2.3.4.3zM65.5 20.4c.1-.2.1-.4 0-.5 0 0-.3-.7-.6-1.7-.1-.3-.4-.5-.7-.4-.3.1-.5.4-.4.7.1.4.3.8.4 1h-.7c-.2.1-.4.3-.4.5 0 .3.2.6.6.6H65.1c.1.1.3 0 .4-.2z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M40.9 25.6h97.9c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1H116c-2-3.7-7.1-11.7-13.4-12.9-8.4-1.6-10 6.7-10 6.7S87 2.7 73 4.6c-6.5.9-9 4.2-9.8 7.8h.1c.3 0 .6.2.6.5 0 .4.1.7.1 1.1 0 .3-.2.6-.5.6h-.1c-.2 0-.4-.1-.5-.3-.1 1.9.1 3.8.5 5.3h.7c-.1-.3-.2-.6-.4-1-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.7.6 1.7.1.2.1.4 0 .5-.1.2-.3.3-.5.3h-1.3c.4 1.5.9 2.5.9 2.7H40.7c-.6 0-1.1.5-1.1 1.1.1.5.6 1 1.3 1z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M229.2 52.9c.3-1 1.2-3.2 3.8-3.2.3 0 .7 0 1 .1 1.6.3 3.2 1.3 4.8 3 .2.2.6.2.8 0 .2-.2.2-.6 0-.8-1.8-1.9-3.6-3-5.4-3.4-.4-.1-.8-.1-1.2-.1-3.5 0-4.6 3-4.9 4-.1.3.1.6.4.7h.2c.1 0 .2 0 .3-.1.1 0 .2-.1.2-.2zM213.5 48.4c.1 0 .3-.1.4-.2.6-.7 1.5-1.1 2.6-1.4.3-.1.5-.4.4-.7-.1-.3-.4-.5-.7-.4-1.3.4-2.4.9-3.1 1.7-.2.2-.2.6 0 .8.1.2.3.2.4.2zM246.3 56.9h3.3c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-3.3c-.3 0-.6.2-.6.6 0 .3.3.6.6.6zM220.7 46.6c.4.1.7.2 1 .3h.2c.2 0 .5-.1.5-.4.1-.3-.1-.6-.4-.7-.4-.1-.8-.2-1.1-.3-.3-.1-.6.1-.7.4 0 .4.2.7.5.7zM213.5 56.8c.1-.2.1-.4 0-.5l-.1-.1c-.1-.3-.4-.4-.7-.3-.1 0-.1.1-.2.1h-12.7c-.3 0-.6.2-.6.6 0 .3.2.6.6.6H213c.2-.2.4-.3.5-.4z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M199.6 60.7h54.5c.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1h-12.9c-1.1-2.1-3.9-6.5-7.4-7.2-2.4-.5-3.8.5-4.6 1.6 0 .1-.1.2-.2.3-.6 1-.8 1.9-.8 1.9s-3.1-8-10.9-7c-5.8.8-6 5-5.4 7.8h.7s.1-.1.2-.1c.3-.1.6 0 .7.3l.1.1c.1.2.1.4 0 .5-.1.2-.3.3-.5.3h-.9c.2.9.5 1.4.5 1.5h-13.2.2c-.6 0-1.1.5-1.1 1.1-.1.6.4 1.1 1 1.1z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M173.7 229.1c-.1.2-.1.4-.2.5 0 0-.1 0-.1.1.1 0 .2-.1.3-.1.3-.3.5-1.6.6-3.6h-.1c-.2 1.5-.3 2.6-.5 3.1zM173.1 232c.5 0 1-.1 1.5-.4-.4.2-.9.4-1.5.4-2.1 0-4.3-2.7-6.1-5.8h-.1c1.8 3.2 4 5.8 6.2 5.8z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M231.1 226.7c-2.6 4.8-5.9 8.5-9.7 8.5-1.4 0-2.9-.5-4-1.4-1.7-1.4-2.5-2.9-2.6-7.8-6.4-.2-13.3-.3-20.4-.3-5 0-9.9.1-14.7.2-.2 5.1-1 6.6-2.7 7.9-1.1.9-2.5 1.4-4 1.4-4 0-6.8-3.6-8.7-6.8-.4-.6-.8-1.3-1.1-2-3.4.2-6.7.4-9.8.6-.3 2-1.1 4.5-2.2 5.4-1.1.9-3.1 1.1-4.5 1.1-.6 0-1-.3-1.4-.6l-.6.6H97.4c-1 0-1.9-.7-2.2-1.7l-.3-1.1v-.2c-5.9.7-9.4 1.5-9.4 2.4 0 2.1 17.6 3.7 39.4 3.7 3.5 0 6.8 0 10-.1 12.2 2.1 34.3 3.4 59.5 3.4 38.5 0 69.7-3.2 69.7-7.1 0-2.6-13.2-4.8-33-6.1z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M219.5 231.3c.5.4 1.2.7 1.9.7.6 0 1.3-.2 1.9-.6-.6.4-1.2.6-1.8.6-.7 0-1.4-.3-2-.7-.6-.6-1.2-1.1-1.3-5.3h-.1c.2 4.3.8 4.8 1.4 5.3zM223.3 228.4c.5-.5 1-1.2 1.5-2-.5.8-1 1.4-1.5 2z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M102.1 188.2l-.3-.2c-.1.2-.3.3-.6.3h-.7c-1.6-.1-2.6-.3-3.1-.7l-.6-.6H83c-.6 0-1.1.5-1.1 1.1 0 .6.5 1.1 1.1 1.1h19.4c.1-.4.2-.7.5-.9h-.8v-.1zM156.8 189.1h.1c-.2-.8-.3-1.5-.4-2.2h-.1c.1.7.3 1.4.4 2.2zM27.3 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6H24c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h3.3zM19.5 193h-1.1c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h1.1c.3 0 .6-.2.6-.6 0-.3-.3-.6-.6-.6zM68.5 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-3.3c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h3.3zM49.6 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6H36.2c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h13.4zM102 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-1.1c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h1.1zM60.7 194.1c.3 0 .6-.2.6-.6 0-.3-.2-.6-.6-.6h-1.1c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h1.1zM91.4 193.6c0-.3-.2-.6-.6-.6H77.4c-.3 0-.6.2-.6.6 0 .3.2.6.6.6h13.4c.3-.1.6-.3.6-.6z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M65.7 230.4c-.3.9-.6 1.7-1.1 2.1-.8.8-2.3.9-3.4.9-.4 0-.8-.3-1-.6l-.5.5H24.5h-.1c2.2 1.6 12.1 2.7 24 2.7 13.5 0 24.4-1.5 24.4-3.4 0-.7-2.7-1.6-7.1-2.2z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M28.3 224.9h32.9c.1 0 .1 0 .2.1-.1-.4-.1-.7-.3-1H27.2v4.6h33.7c.2-.3.3-.7.4-1.1h-33c-.2 0-.4-.2-.4-.4s.2-.4.4-.4h32.9c.1 0 .2 0 .2.1v-1.1c-.1.1-.2.1-.3.1H28.3c-.2 0-.4-.2-.4-.4s.2-.5.4-.5z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M59.2 231.8l.8-.9.3.1c.3.1.5.3.6.5.1.1.2.3.3.3 1.2 0 2.1-.2 2.5-.6.6-.5 1.3-3.3 1.3-5.1 0-2.6-.7-4.6-1.4-5.2-.1-.1-.8-.3-1.9-.4-.1.4-.2.7-.7.8h-.3l-.9-.9H24.3c-.1 0-.3.1-.3.3v1.2c0 .2.1.3.3.3H62l.2.4c1.3 2.4.8 5.9-.4 7.3l-.2.2H24.3c-.1 0-.2 0-.2.1s-.1.2 0 .3l.2 1c0 .1.1.2.2.2h34.7v.1z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M59.7 233.4l.5-.5c.2.3.6.6 1 .6 1.1 0 2.6-.2 3.4-.9.4-.4.8-1.2 1.1-2.1.5-1.5.7-3.3.7-4.3 0-2.8-.8-5.4-1.9-6.5-.4-.4-1.3-.7-2.7-.8h-.6c-.3 0-.4.1-.5.3l-.3-.3h-36c-.9 0-1.7.9-1.7 2v1.2c0 1.1.7 2 1.7 2h.9v4.6h-.9c-.5 0-1 .3-1.3.8-.3.5-.4 1.1-.3 1.7l.2 1c.2.8.8 1.4 1.5 1.5h35.2v-.3zm-35.5-1.8l-.2-1v-.3c0-.1.1-.1.2-.1h37.2l.2-.2c1.3-1.4 1.7-4.9.4-7.3l-.2-.4H24.3c-.1 0-.3-.1-.3-.3v-1.2c0-.2.1-.3.3-.3h35.5l.9.9h.3c.4-.1.6-.5.7-.8 1.2.1 1.8.3 1.9.4.7.7 1.4 2.7 1.4 5.2 0 1.8-.7 4.6-1.3 5.1-.4.3-1.3.6-2.5.6-.1-.1-.2-.3-.3-.3-.2-.2-.3-.5-.6-.5l-.3-.1-.8.9H24.5l-.3-.3zm4.1-5.9h32.9c.1 0 .2-.1.3-.1v1.1c-.1-.1-.1-.1-.2-.1h-33c-.2 0-.4.2-.4.4s.2.4.4.4h33c-.1.4-.2.8-.4 1.1H27.2v-4.6h33.9c.1.3.2.7.3 1-.1 0-.1-.1-.2-.1H28.3c-.2 0-.4.2-.4.4s.2.5.4.5z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M174.2 215.4v-.2M236.7 157.9c.2-.2.3-.4.3-.6.1-.2.1-.5.1-.7 0 .2-.1.4-.1.6-.1.2-.2.4-.3.7zM161.3 204.2v.1h.1v-.1h-.1zM173.7 229.1c-.1.1-.1.2-.2.3-.4.3-1 .1-1.7-.5-.1 0-.1-.1-.2-.2-.3-.2-.5-.5-.8-.9.9 1.1 1.7 1.8 2.3 1.8h.2s.1 0 .1-.1c.1 0 .2-.1.3-.4z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M233.4 212.2c-.3 1.4-.7 2.7-1.1 3.8-.5 1.4-4.6 12.7-9 15.4-.6.4-1.3.6-1.9.6-.7 0-1.3-.2-1.9-.7-.7-.5-1.3-1-1.3-5.3 0-1.7 0-4.1.2-7.4-6.5 1.5-13.1 2.3-19.7 2.4-7.4.1-14.9-.7-22.1-2.6.2 11.4-.6 12-1.5 12.8-.1.1-.3.2-.5.3-.5.3-1 .4-1.5.4-2.2 0-4.4-2.6-6.2-5.8-2.5-4.2-4.3-9.3-4.6-10.2-1-3-1.9-6.1-2.6-9.2-1.3.1-2.6.1-3.9.1-3.9-.1-7.9-.5-11.7-1.1v3.2c3.9.7 7.8 1 11.7 1.1h1.3c.7 2.7 1.3 5 2 6.8.8 2.2 1.6 4.3 2.6 6.3.5 1.1 1 2.1 1.6 3.2.4.7.7 1.3 1.1 2 2 3.2 4.7 6.8 8.7 6.8 1.4 0 2.9-.5 4-1.4 1.6-1.3 2.4-2.9 2.7-7.9 0-1 .1-2.1.1-3.3 6.2 1.2 12.5 1.8 18.8 1.7 4.1 0 8.3-.4 12.4-1 1.2-.2 2.5-.4 3.8-.6v3.4c.1 4.9.9 6.4 2.6 7.8 1.1.9 2.5 1.4 4 1.4 3.8 0 7.1-3.7 9.7-8.5.2-.4.5-.8.7-1.3 1.4-2.8 2.6-5.6 3.6-8.5.4-1.1.8-2.4 1.2-3.9 1.5-4 4.8-14.1 5.4-29-1-1.2-2.1-2.3-3.3-3.3v1.8c-.5 15.4-3.9 25.8-5.4 29.7z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M137.8 148.1c-1.2 2.1-1.3 4.8 0 7.1v.1l1.7 2.8c-.3.6-.6 1.1-.8 1.7l-.8.3-3.6 1.1c-.2.1-.5.2-.7.2-.4.2-.8.4-1.1.6-2.5 1.7-3.8 4.9-2.9 7.9l.6 1.9.1.4c-.2.3-.4.5-.7.7-.2.2-.3.4-.5.5l-1.8-.1h-.6c-1.9 0-3.6.8-4.9 2h10.3l1.8-2.1-.5-1.7-.7-2.2c-.2-.7-.2-1.5 0-2.2.3-1.1 1.2-2.1 2.4-2.5l5.8-1.8c.8-1.4 1.6-3 2.3-4.7l-2.6-4.3c-.5-.9-.7-1.9-.4-2.8.2-.9.8-1.8 1.7-2.3l1.1-.7 4.8-2.9c.9-3.3 1.7-6.9 2.2-10.6 0-12.6 1.1-21.9 3.3-27.6l-.2-.5c-.4-1.2.3-2.4 1.5-2.8l.3-.1c2-3.6 4.4-6.9 7.3-9.9l.1-3.3c0-1.2 1-2.2 2.2-2.2l3.5.1c3.3-2.6 6.8-5 10.5-7.1l1.4-5.3c.3-1.2 1.6-1.9 2.7-1.6h.2l6.5 1.8c5.3-2.1 11-3.2 16.7-3.4.6 0 1.3 0 1.9.1.6 0 1.3.1 1.9.3h.1c.5.1 1 .2 1.6.4 3.9 1.1 8.5 3.5 13.9 7.2 6.2 4.5 12.1 9.4 17.5 14.7.7 0 1.3.3 1.8.8 3.5 3.3 6.7 7 9.7 10.8 3 3.2 6.8 8.1 8.1 13.3 2 7.8-2.2 17.9-5.9 22.5-4.7 5.9-9.2 8.5-16.7 9.5-.7.1-1.5.2-2.4.2 1.9 1.8 2.1 4.8.5 6.9 1 1.5 1.1 3.3.2 4.8-.1.1-.1.3-.2.5.2 4.9.4 10.9.4 14.4 1.1.9 2.2 1.9 3.2 3 .2-6.2 0-12.5-.4-18.7
l-.3.1c-.3 0-.5-.2-.5-.5s.2-.6.5-.6c.2 0 .4-.1.5-.2 0-.6-.1-1.2-.1-1.8 1-1.6 1.5-3.6 1.3-5.5l1-.2c.2-.3.5-.3.8-.2.9-.2 1.7-.4 2.5-.7 0-.3.2-.6.5-.6.2 0 .4.1.5.2 4.5-1.7 8.1-4.5 11.6-9 3.8-4.7 8.8-15.6 6.6-25 0-.1 0-.3-.1-.4-.1-.1-.1-.5-.2-.7-.6-1.8-1.3-3.5-2.2-5.2-.4-.7-.8-1.5-1.3-2.2-1.2-1.8-2.5-3.6-3.9-5.2-.3-.4-.6-.7-1-1.1l-.1-.2c-3-4-6.3-7.7-9.9-11.1-.7-.7-1.6-1.2-2.5-1.4-8-7.7-24.5-22.1-36.2-22.9-.7 0-1.4-.1-2.1-.1-5.8.1-11.5 1.2-16.9 3.2l-5.7-1.6c-3-.8-6 .9-6.8 3.9l-1.1 3.9c-3 1.8-6 3.7-8.7 5.9H165c-3 0-5.5 2.4-5.6 5.4v2c-2.4 2.6-4.5 5.5-6.3 8.5-2.1 1.2-3.3 3.6-2.8 5.9-2.1 6.1-3.2 15.3-3.2 27.5-.5 3-1.1 5.9-1.8 8.7l-4.8 2.9c-.1 0-.1.1-.2.1-1.2 1.2-2 2-2.5 3z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M136.3 159.7v-.3l-.2-.5.2.9M155.9 106.8l-.3-.9.3 1"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M230.3 174.3c0-1-.1-2-.2-2.9-.1-.7-.2-1.4-.2-2.1-.3-.1-.6-.1-1-.2l-.4 4.5c.6.2 1.2.4 1.8.7zM242.5 116.3c-.7-.6-1.6-.9-2.6-1-.8 0-1.6.2-2.3.7.7.6 1.7.9 2.6.9.9 0 1.7-.2 2.3-.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M174.5 205.9c9.6 4.4 20.4 5.7 30.8 3.8 14.7-2.9 21.6-12.6 23.9-20.8.4-1.5.7-3 .8-4.4 0-.5.1-1 .1-1.5.2-2.5.2-5 .2-7.5v-.1c-.6-.3-1.3-.6-1.9-.8l-1.1 11.7c-.1.9-.8 1.5-1.7 1.5l-22.1 3.1c-.9.9-2.9 2.3-6.5 2.5h-.8c-3.3 0-5.3-1.4-6.2-2.3l-24.9-3.6c-.9 0-1.6-.7-1.6-1.5l-1.2-15.4c-2.4.6-4.8 1.4-7.1 2.3.3 2 .6 4.2 1 6.4.1.1.2.2.2.4l.2.9c.6 3.2 2.6 14.1 4.8 23.4v.1h.1v.1h.1c.8 3.7 1.7 7.3 2.9 10.9 2 5.6 4.5 10.3 6.4 12.7.3.3.6.6.8.9.1 0 .1.1.2.2.7.6 1.3.8 1.7.5.1 0 .1-.1.2-.3.2-.5.3-1.6.4-3.2.1-1.3.1-2.8.1-4.5 0-1.9 0-3.9-.1-6v-.2h.1l-.2-5.8c0-.2.1-.3.2-.4.1-.1.2-.2.3-.2l-.1-2.9z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M152 137.6c.1 3.3.2 6.6.4 9.8l.3-.3v.1c-.1.9.3 1.9.8 2.9.8 1.4 2.1 2.7 3.2 3.7 1.8-1 3.3-1.2 4-1.2l-.3-4.3c0-.5.1-1 .5-1.3.3-.3.8-.5 1.3-.5h.3l1.4-6.1c.1-.4.4-.8.8-.8.4-.1 10.5-2.3 19.1 1.5 7.1 3.1 11.3 7.9 13.1 10.5 1.5-2.6 5.2-7.4 12.7-11 6.3-3.1 15.5-3.4 16.7-2.9.3.1.6.4.7.7.2.6 1.3 4.5 1.9 7.1h.2c.5 0 1 .1 1.3.5.2.2.4.5.4.8 5.4-.1 10.7-.9 14.2-2.7 6.7-3.5 11.1-12.3 10.9-20.7 0-1.2-.2-2.4-.4-3.6-.6-2.9-2-5.9-3.7-8.9-2.8-4.7-6.4-9.1-8.6-11.7-.3-.3-.5-.6-.8-.9 0 0-.1 0-.1.1C231 87.2 216.6 76.1 208 75.5c-.6 0-1.1-.1-1.7-.1-5.7.2-11.3 1.4-16.6 3.5l-.5-.1-3.8 1.7h-.1c-.3.1-.6 0-.7-.3-.1-.2 0-.4.1-.6 0-.1.1-.2.2-.3l2.4-1-5.1-1.4-1.7 6.2c-4.1 2.2-8 4.8-11.6 7.8l-4.3-.1-.1 4.1v.1l-.1.1.3 2.4v.3c0 .2-.2.4-.4.5h-.2c-.2 0-.4-.2-.5-.4l-.3-1.8c-2.7 2.9-5 6.1-6.8 9.6l-1.1.3.3 1V107.3l1.2 2.9c.1.3 0 .6-.3.7h-.3c-.2 0-.4-.1-.5-.4l-.7-1.7c-2 5.9-2.9 15.3-2.9 26 .1.9 0 1.8-.2 2.8zm82.7-21.8c.1-.2.2-.3.4-.4.1-.2.2-.3.3-.4.3-.2.5-.5.8-.7.8-.6 1.8-.9 2.
7-1.1-.1-.2-.2-.3-.3-.5h-.3c-.1-.2-.1-.4-.1-.6v-3.5c0-.9.7-1.6 1.6-1.6.3 0 .6.1.9.3.6.2 1.1.8 1.1 1.5v3.5c0 .4-.2.8-.4 1.1 1 .3 2 .8 2.8 1.5.3-.1.7-.1 1 .1.5.3.7 1 .3 1.5-2 2.9-5.9 3.6-8.8 1.6-.3-.2-.5-.4-.7-.6-.3.1-.7.1-1-.1-.5-.4-.6-1.1-.3-1.6zm-36.4-.2c1.1-1.5 2.7-2.5 4.5-2.8-.1-.2-.1-.4-.1-.6v-3.5c0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6v3.5c0 .2-.1.5-.2.7 1.6.4 3 1.4 4 2.7.4.7.3 1.6-.2 2.1-.1.1-.2.2-.3.2-.8.5-1.8.3-2.3-.5-.7-.9-1.7-1.4-2.8-1.5H203.5c-.2 0-.4.1-.5.1h-.1c-.6.2-1.2.6-1.6 1.2-.5.8-1.5 1-2.3.5-.1-.1-.2-.1-.3-.2-.7-.3-.8-1.2-.4-1.9zM236.2 154.4c-.3-.3-.7-.5-1.1-.6v-.2l-5 1.9v.1h.4c.1 0 3-.3 6.2 2.3.1-.2.2-.5.3-.7.3-1 0-2-.8-2.8z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M161.7 166.1c-3.6.4-6.2-.6-7.8-1.9.3 2.1.7 4.7 1.1 7.6 2.3-.9 4.7-1.7 7.2-2.3l-.1-.8c-.2-.9-.4-1.7-.4-2.6z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M136.4 159.7l-.1-.3"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M156.4 186.9H145c-.1.3-.2.5-.4.7h.8l.3.2c.1-.2.3-.3.6-.3h.7c1.6.1 2.6.3 3.1.7.3.2.5.5.8.8h6c-.2-.7-.4-1.4-.5-2.1zM150.2 182.9c0-.3-.2-.6-.6-.6h-7.5v1.1h7.5c.3 0 .6-.2.6-.5z"/>
+ <path fill="url(#a)" fill-rule="nonzero" d="M252 110.6c1.7 3 3.1 6 3.7 8.9.2 1.2.4 2.4.4 3.6.2 8.5-4.2 17.3-10.9 20.8-3.5 1.9-8.8 2.6-14.2 2.7v.5l-.3 2.9c2.1.2 4.2.4 6.4.4.1 0 .3 0 .4.1.8 0 1.6-.1 2.4-.2 6.9-.9 11-3.2 15.3-8.7 1.4-1.7 2.9-4.5 4.1-7.7 1.5-4.1 2.4-8.8 1.3-12.8-1.2-4.7-4.7-9.3-7.7-12.5-2.9-3.8-6-7.3-9.5-10.6-.1-.1-.3-.2-.5-.2-.1 0-.3.1-.4.1.2.3.5.6.8.9 2.3 2.7 5.9 7.1 8.7 11.8z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M242.6 98c.2.3.5.6.8.9-.3-.3-.6-.6-.8-.9z"/>
+ <path fill="url(#b)" fill-rule="nonzero" d="M242.6 98c.2.3.5.6.8.9-.3-.3-.6-.6-.8-.9z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M252 110.6c1.7 3 3.1 6 3.7 8.9.2 1.2.4 2.4.4 3.6 0-1.2-.2-2.4-.4-3.6-.6-2.9-2-6-3.7-8.9z"/>
+ <path fill="url(#c)" fill-rule="nonzero" d="M252 110.6c1.7 3 3.1 6 3.7 8.9.2 1.2.4 2.4.4 3.6 0-1.2-.2-2.4-.4-3.6-.6-2.9-2-6-3.7-8.9z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M229.9 169.3c.1.7.1 1.4.2 2.1 0-.8-.1-1.5-.2-2.1z"/>
+ <path fill="url(#d)" fill-rule="nonzero" d="M229.9 169.3c.1.7.1 1.4.2 2.1 0-.8-.1-1.5-.2-2.1z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M220.4 226.2c0 1.8.2 3.1.5 3.3.1.1.3.2.5.2.5 0 1.2-.5 1.9-1.3.5-.5 1-1.2 1.5-2-1.4-.1-2.9-.2-4.4-.2z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M205.3 209.7c-10.4 1.9-21.2.6-30.8-3.8 9.6 4.4 20.3 5.8 30.8 3.8 14.7-2.8 21.6-12.5 23.9-20.8-2.3 8.3-9.2 17.9-23.9 20.8z"/>
+ <path fill="url(#e)" fill-rule="nonzero" d="M205.3 209.7c-10.4 1.9-21.2.6-30.8-3.8 9.6 4.4 20.3 5.8 30.8 3.8 14.7-2.8 21.6-12.5 23.9-20.8-2.3 8.3-9.2 17.9-23.9 20.8z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M230.1 183c.2-2.5.3-5 .2-7.4 0 2.4 0 4.9-.2 7.4z"/>
+ <path fill="url(#f)" fill-rule="nonzero" d="M230.1 183c.2-2.5.3-5 .2-7.4 0 2.4 0 4.9-.2 7.4z"/>
+ <path fill="url(#g)" fill-rule="nonzero" d="M236.4 180.1v-1c-1.9-1.3-3.9-2.4-5.9-3.4 0 .7.1 1.3.1 1.8 2 .8 3.9 1.4 5.8 2.6z"/>
+ <path fill="url(#h)" fill-rule="nonzero" d="M236.5 172.8c-.1-1.6-.1-3.1-.2-4.6-1.4 1-3.6 1.6-6.4 1.1.1.7.2 1.4.2 2.1.2 1.5.3 3 .4 4.3-.1 0-.1-.1-.2-.1 0 2.5 0 5-.2 7.4 0 .5-.1 1-.1 1.5-.1 1.4-.4 2.9-.8 4.4-2.3 8.3-9.2 18-23.9 20.8-10.4 1.9-21.2.6-30.8-3.8v2.9h.1c.3 0 .6.2.6.5l.3 6.4c2.9.9 10.8 3 23.3 3 7.3-.2 14.5-1.1 21.5-2.9 2.3-.9 4.4-2.2 6.3-3.8.2-.2.6-.2.8 0 .2.2.2.6 0 .8h-.1v.1c-1.9 1.7-4.1 3-6.4 4-.2 2.9-.3 5.7-.3 7.9v1.4c0 1.8.2 3.1.5 3.3.1.1.3.2.5.2.5 0 1.2-.5 1.9-1.3.5-.5 1-1.2 1.5-2 1.7-2.6 3.6-6.5 5.2-11.1.4-1.1.8-2.4 1.1-3.8 1.4-3.6 4.8-13.8 5.2-29V180s.1 0 .1.1v-1.2c-.2-1.5-.1-4.1-.1-6.1z"/>
+ <path fill="url(#i)" fill-rule="nonzero" d="M202.7 108.7v3.5c0 .2 0 .4.1.6.4-.1.8-.1 1.2-.1.5 0 1.1.1 1.6.2.1-.2.2-.5.2-.7v-3.5c0-.9-.7-1.6-1.6-1.6-.8 0-1.5.7-1.5 1.6z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M202.8 112.8c-1.8.3-3.4 1.3-4.5 2.8-.4.7-.3 1.5.2 2.1.1.1.2.2.3.2.8.5 1.8.3 2.3-.5.4-.6 1-1 1.6-1.2h.1c.2-.1.4-.1.5-.1H203.9c.7 0 1.5.2 2.1.7.3.2.5.4.7.7.5.8 1.5 1 2.3.5.1-.1.2-.1.3-.2.6-.5.7-1.4.2-2.1-1-1.4-2.4-2.3-4-2.7-.5-.1-1.1-.2-1.6-.2-.3-.1-.7 0-1.1 0zm5.1 1.6c.1 0 .1.1.2.2s.3.2.4.4c.2.1.3.3.5.5.1.1.2.2.2.3l.3.3c.1.2.1.5.1.7v.1c0 .1-.1.2-.1.2 0 .1 0 .1-.1.2 0 .1-.1.1-.1.1l-.1.1h-.1-.1c-.1 0-.2.1-.2.1h-.1c-.4 0-.7-.1-1-.4-.8-1-2-1.7-3.3-1.7H203.8c-.2 0-.4.1-.6.1-.1 0-.3.1-.4.2-.1.1-.3.1-.4.2-.2.1-.4.2-.5.4l-.1.1-.6.6-.3.3c-.4.3-.9.3-1.2 0-.5-.3-.7-1-.3-1.5.2-.3.4-.5.6-.7l.1-.1c.2-.2.5-.5.8-.7h.1c.1-.1.3-.2.5-.3h.1c.2-.1.3-.2.5-.2h.1c.2-.1.3-.1.5-.2s.4-.1.6-.2c1.3-.4 3.1-.1 4.6.9z"/>
+ <path fill="url(#j)" fill-rule="nonzero" d="M202.9 113.4c-.2 0-.4.1-.6.2-.2.1-.4.1-.5.2h-.1c-.2.1-.3.2-.5.2h-.1c-.2.1-.3.2-.5.3h-.1c-.3.2-.5.4-.8.7l-.1.1c-.2.2-.4.5-.6.7-.3.5-.2 1.2.3 1.5.4.3.9.2 1.2 0l.3-.3c.2-.2.4-.5.6-.7l.1-.1c.2-.1.4-.3.5-.4.1-.1.2-.1.4-.2.1-.1.3-.1.4-.2.2-.1.4-.1.6-.1H204c1.3 0 2.5.6 3.3 1.7.2.3.6.4 1 .4h.1c.1 0 .2 0 .2-.1.1 0 .1 0 .2-.1h.1l.1-.1.1-.1s.1-.1.1-.2.1-.1.1-.2v-.1c0-.2 0-.5-.1-.7l-.3-.3c-.1-.1-.1-.2-.2-.3-.1-.2-.3-.3-.5-.5-.1-.1-.3-.2-.4-.4-1.2-.8-3.1-1.3-4.9-.9z"/>
+ <path fill="url(#k)" fill-rule="nonzero" d="M140 165.4v.7l.6-.9"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M137.8 166.1l-1.9.6c-.8.2-1.2 1.1-1 1.8l1.1 3.7.2.6.1.2v.1l.1.4c-.5.6-1 1.1-1.4 1.7h2.4c.2-.4.3-.9.3-1.4v-7.7h.1z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M140 168.2l-.1.2c-.2.3-.5.3-.8.2l-.2-.2c-.1-.2-.1-.4 0-.6l1.1-1.6v-.7l-2.2.7v7.7c0 .5-.1 1-.3 1.4h2.3c.1-.5.2-.9.2-1.4v-5.7z"/>
+ <path fill="url(#l)" fill-rule="nonzero" d="M154.4 170.6c-3.5 1.5-6.8 3.4-9.9 5.6.1.1.1.2.2.4l.2.7c3.1-2 6.3-3.8 9.7-5.2-.1-.6-.1-1.1-.2-1.5z"/>
+ <path fill="url(#m)" fill-rule="nonzero" d="M156.8 189.1c-.2-.8-.3-1.5-.4-2.2-.8-4.1-1.3-6.9-1.3-6.9 0-.3.1-.5.4-.6.1-.1.2-.1.2-.1.2 0 .3 0 .4.1-.4-2.2-1.1-5.2-1.5-7.4.1-.1.2-.1.4-.2-.4-2.9-.8-5.5-1.1-7.7-1.5-1.3-2.1-2.8-2-3.7v-.1c-1.2-.6-2.1-1.4-2.8-2.1-1.4-1.5-1.7-3-1.7-3.2v-.4c.1-.4.5-.8.9-.8h.3l.2-.2c.1-.6.3-1.3.6-1.9.8-1.9 2.1-3.5 2.7-4.3-.1-3.2-.2-6.5-.3-9.9 0 .1 0 .2-.1.3l-.6 3c-.1.2-.1.5-.2.7-.3 1.1-.5 2.3-.9 3.5-.1.2-.1.4-.2.6v.2l-.1.2-.1.5h-.1l-1.5 4.1c-.1.2-.3.4-.6.3h-.1-.1c-.3-.1-.4-.4-.3-.7l1-2.7-.3.2-4.7 2.9c-.7.4-.9 1.3-.5 2l2.9 4.7.1.1.1.1.2.3v.1c-1 2.3-2.1 4.5-3.3 6.7h-.1l-2.4 3.5-.1.2c-.2.3-.5.3-.8.2l-.2-.2c-.1-.2-.1-.4 0-.6l1.1-1.6v-.7l-2.2.7-1.9.6c-.8.2-1.2 1.1-1 1.8l1.1 3.7.2.6.1.2v.1l.1.4c-.5.6-1 1.1-1.4 1.7H142.6c.7 0 1.3.4 1.7.9.1.1.1.2.2.4l.2.7.1.2c.1.5 0 1.1-.3 1.5-.4.4-.9.7-1.5.7h-1v4h1c1 0 1.9.8 1.9 1.7v1.1c0 .1 0 .3-.1.4-.1.3-.2.5-.4.7h.8l.3.2c.1-.2.3-.3.6-.3h.7c1.6.1 2.6.3 3.1.7.3.2.5.5.8.8.9 1.2 1.4 3 1.4 5 0 1.5-.7 4.7-2 5.7-.9.7-2.6.8-3.8.8h-.2c.
2.3.4.6.5 1.1l.2 1.1c.1.4.1.7 0 1.1 3 .4 6 .7 9 .7 1.4 0 2.8-.1 4.1-.2-1.1-4.9-2.2-10.5-3.1-15.1z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M149.2 153.6s0-.1 0 0c.2 0 .2 0 .3.1.2.1.3.3.3.6 0 0-.1.7.8 1.8.5.6 1.3 1.2 2.5 1.9.2-.9.7-1.7 1.5-2.5s1.5-1.3 2.3-1.7c-1.2-1.1-2.4-2.4-3.2-3.7-.6-.9-.9-1.9-.9-2.8v-.1l-.3.3c-.6.7-1.9 2.4-2.7 4.3-.3.6-.5 1.3-.6 1.9-.2-.2-.1-.2 0-.1z"/>
+ <path fill="url(#n)" fill-rule="nonzero" d="M136.3 173.1l-.3-.9-1.1-3.7c-.2-.8.2-1.6 1-1.8l1.9-.6 2.2-.7.6-.2h.1l-.7 1-1.1 1.6c-.1.2-.1.4 0 .5 0 .1.1.2.2.2.3.2.6.1.8-.2l.1-.2 2.4-3.5h.1c1.2-2.2 2.4-4.4 3.3-6.7v-.1l-.2-.3-.1-.2-.1-.1-2.9-4.7c-.4-.7-.2-1.6.5-2l4.7-2.9.3-.2.1-.1-1 2.8c-.1.3.1.6.3.7h.1c.2 0 .5-.1.6-.3l1.5-4.1h.1l.1-.5.1-.2v-.2c.1-.2.1-.4.2-.6.3-1.2.6-2.3.9-3.5.1-.2.1-.5.2-.7l.6-3v-.2c.2-.9.3-1.9.5-2.8 0-10.8.9-20.2 2.9-26.1v.1l.7 1.7c.1.2.3.3.5.4h.2c.3-.1.4-.4.3-.7l-1.2-2.9v-.2l-.4-1.1 1.1-.3c1.8-3.5 4.1-6.7 6.8-9.6 0 .6.1 1.2.3 1.8.1.2.3.4.5.4h.2c.2-.1.4-.3.4-.5v-.2c-.1-.8-.2-1.7-.3-2.5l.1-.1v-.1l.1-4.1 4.3.1c3.6-3 7.5-5.6 11.6-7.8l1.7-6.2 5.1 1.4h.1l-2.6 1.1c-.1 0-.2.1-.2.2-.1.1-.2.4-.1.6.1.3.4.4.7.3h.1l3.8-1.7.5.1c5.3-2.1 10.9-3.3 16.6-3.5.6 0 1.2 0 1.7.1 8.6.6 23 11.7 34.3 22.9 0 0 .1 0 .1-.1.1-.1.3-.1.4-.1.2 0 .4.1.5.2 3.4 3.3 6.6 6.8 9.5 10.6 2.9 3.2 6.5 7.7 7.7 12.5 1 4 .2 8.7-1.3 12.8-1.2 3.2-2.8 6-4.1 7.8-4.3 5.5-8.4 7.8-15.3 8.7-.8.1-1.6.2-2.4.2-.1-.1-.3-.
1-.4-.1-2.1-.1-4.2-.2-6.3-.5l-.2 2.1c1.5.2 3 .3 4.6.4l.1.9v.2c1.3.4 2.1 1.6 2 2.9 0 .2 0 .5-.1.7l-.3.6.6.6c.3.3.6.7.9 1.1 1.6-2.1 1.5-5-.5-6.9.8 0 1.6-.1 2.4-.2 7.5-1 12.1-3.6 16.7-9.5 3.7-4.6 7.9-14.7 5.9-22.5-1.3-5.2-5.1-10.1-8.1-13.3-2.9-3.9-6.1-7.5-9.7-10.8-.5-.5-1.2-.8-1.8-.8-5.4-5.4-11.3-10.3-17.5-14.7-5.4-3.7-10-6.2-13.9-7.2-.5-.2-1.1-.3-1.6-.4h-.1c-.6-.1-1.2-.2-1.7-.2-.6 0-1.2-.1-1.9-.1-5.7.2-11.4 1.3-16.7 3.4l-.2-.1-6.5-1.8h-.1c-1.2-.3-2.3.4-2.6 1.6l-1.4 5.3c-3.7 2-7.2 4.4-10.5 7.1l-3.5-.1c-1.2 0-2.2 1-2.2 2.2l-.1 3.3c-2.8 3-5.3 6.3-7.3 9.9l-.3.1c-1.2.4-1.8 1.6-1.5 2.8l.2.5c-2.2 5.7-3.3 15-3.3 27.6-.6 3.6-1.4 7.2-2.2 10.6l-5 2.8-1.1.7c-.9.5-1.4 1.4-1.7 2.3-.2.9-.1 1.9.4 2.8l2.6 4.3c-.7 1.6-1.5 3.2-2.3 4.7l-5.8 1.8c-1.2.4-2.1 1.3-2.4 2.5-.2.7-.2 1.4 0 2.1l.7 2.2.5 1.7-1.8 2.1h2.9c.5-.6 1-1.1 1.4-1.7l-.2-.8z"/>
+ <path fill="url(#o)" fill-rule="nonzero" d="M237.3 167.2c-.2.3-.6.7-1 1 0 .9.1 1.7.2 2.4.1.5 0 1.3 0 2.2 0 2-.2 4.6 0 6.1v3.5c-.4 15.3-3.8 25.4-5.2 29-.4 1.4-.7 2.6-1.1 3.8-1.6 4.6-3.6 8.6-5.3 11.2-.5.8-1.1 1.5-1.5 2-.7.8-1.4 1.3-1.9 1.3-.2 0-.3-.1-.5-.2-.3-.3-.5-1.5-.5-3.3v-1-.3-.1c0-2.2.2-5.1.3-7.9v-.1c2.4-.9 4.6-2.3 6.5-4h.1c.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0-1.9 1.6-4 2.9-6.3 3.8-7.1 1.8-14.3 2.7-21.5 2.9-12.5 0-20.4-2.1-23.3-3l-.3-6.4c0-.3-.3-.5-.6-.5h-.1c-.1 0-.2.1-.3.2-.1.1-.1.2-.1.3l.2 5.8v.2h-.1c0 2.1.1 4.1.1 6 0 1.7 0 3.3-.1 4.6-.1 2-.3 3.3-.6 3.6-.1.1-.2.1-.3.1h-.2c-.6 0-1.4-.6-2.3-1.8-2-2.4-4.5-7.1-6.4-12.7-1.2-3.6-2.1-7.2-2.9-10.9h-.2v-.2c-2.2-9.3-4.2-20.2-4.8-23.4l-.2-.9c0-.1-.1-.3-.2-.4-.1-.1-.3-.1-.4-.1-.1 0-.2.1-.2.1-.2.1-.2.3-.2.5 0 .1.5 2.9 1.3 7 .1.7.3 1.5.4 2.2.9 4.6 2 10.2 3.2 15.3h-.2c-1.4.1-2.7.2-4.1.2-3 0-6-.3-9-.7-.1.3-.2.6-.3.8-.4.5-.9.9-1.5.9h-1v.2c3.9.7 7.8 1.1 11.8 1.2 1.3 0 2.6 0 3.9-.1.7 3.1 1.5 6.2 2.6 9.2.3.9 2.2 6.1 4.7 10.3 1.8 3.1 4 5.7 6.2 5.7
.5 0 1-.1 1.4-.4.2-.1.3-.2.5-.3.9-.8 1.7-1.4 1.5-12.8v-.1c7.2 1.8 14.7 2.7 22.2 2.6 6.6-.1 13.3-.9 19.7-2.4-.2 3.3-.3 5.7-.2 7.5.1 4.2.7 4.7 1.3 5.2.5.4 1.2.7 1.9.7.6 0 1.2-.2 1.8-.6 4.4-2.7 8.5-14 9-15.4.4-1.1.8-2.4 1.1-3.8 1.5-3.9 4.9-14.2 5.3-29.7v-1.8-1.3c-.1-3.6-.2-9.6-.4-14.4-.4.6-.7 1.7-1.1 2.2z"/>
+ <path fill="url(#p)" fill-rule="nonzero" d="M152 160.4c.2-.2 1.1.2 1-.1-.2-.8-.2-1.6 0-2.4-1.2-.7-2-1.3-2.5-1.9-.9-1-.8-1.8-.8-1.8 0-.2-.1-.4-.2-.6-.1 0-.1-.1-.2-.1H149c-.1 0-.2.1-.2.2h-.3c-.5.1-.8.4-.9.8v.4c0 .2.3 1.7 1.7 3.2.6 1 1.5 1.7 2.7 2.3z"/>
+ <path fill="url(#q)" fill-rule="nonzero" d="M161.9 166s-.1 0-.2.1c.1.9.2 1.8.4 2.6l-.2-2.7z"/>
+ <path fill="url(#r)" fill-rule="nonzero" d="M241.3 112.7c.1-.2.2-.5.2-.7v-3.5c0-.5-.3-1-.7-1.3-.3-.2-.6-.3-.9-.3-.9 0-1.6.7-1.6 1.6v3.5c0 .2 0 .4.1.6h.3c.3 0 .6-.1.9-.1.6 0 1.2.1 1.7.2z"/>
+ <path fill="url(#s)" fill-rule="nonzero" d="M235.1 117.3c.3.2.7.2 1 .1.2-.1.4-.2.6-.4.3-.4.7-.7 1.1-1 .7-.4 1.4-.7 2.3-.7 1 0 1.9.4 2.6 1 .3.2.5.4.7.7.4.5 1.1.6 1.6.2.4-.3.6-.9.3-1.4-.2-.4-.5-.7-.8-1-.8-.8-1.8-1.3-2.8-1.5-.8-.2-1.6-.2-2.4-.1-1 .1-1.9.5-2.7 1.1-.3.2-.6.4-.8.7l-.4.4-.4.4c-.6.5-.5 1.2.1 1.5z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M102.5 224.6c-.3 0-.5-.2-.5-.5s.2-.5.5-.5h44.2c.1 0 .2 0 .2.1-.1-.4-.2-.8-.4-1.2H101v5.2h45.2c.2-.3.4-.8.6-1.3H102.4c-.3 0-.5-.2-.5-.5s.2-.5.5-.5h44.2c.1 0 .2 0 .3.1.1-.4.1-.8 0-1.3-.1.1-.2.2-.3.2h-44.1v.2z"/>
+ <path fill="url(#t)" fill-rule="nonzero" d="M96.8 230.3c.9-.1 1.9-.2 2.9-.3v-.3h-2.6c-.1 0-.2 0-.3.1 0 .2-.1.3 0 .5z"/>
+ <path fill="url(#u)" fill-rule="nonzero" d="M151.8 225.1c0-2.9-1-5.2-1.9-6-.2-.1-1-.4-2.6-.5-.1.4-.3.9-.9.9l-.4.1-1.2-1H97.1c-.2 0-.3.2-.3.3v1.4c0 .2.2.3.3.3h15.6l34.2-.6.6.6h.1l.2.3 1.1 1.1-.2 1.1c.3 1.4.2 3-.2 4.2l3-.3c.2-.6.3-1.3.3-1.9z"/>
+ <path fill="#EDEDF0" fill-rule="nonzero" d="M142.6 230.1h-43v-.1c-1 .1-2 .2-2.9.3l.3 1c0 .2.2.3.3.3H144l1.1-1 .5.1c.4.1.6.3.8.6l.4.4c1.6 0 2.8-.3 3.3-.7.5-.4 1.1-2.1 1.5-3.8l-3 .3c-.2.5-.4 1-.6 1.4l-.2 1-5.2.2z"/>
+ <path fill="url(#v)" fill-rule="nonzero" d="M142.6 230.1h-43v-.1c-1 .1-2 .2-2.9.3l.3 1c0 .2.2.3.3.3H144l1.1-1 .5.1c.4.1.6.3.8.6l.4.4c1.6 0 2.8-.3 3.3-.7.5-.4 1.1-2.1 1.5-3.8l-3 .3c-.2.5-.4 1-.6 1.4l-.2 1-5.2.2z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M112.7 220.7h34.9l-.7-.6"/>
+ <path fill="url(#w)" fill-rule="nonzero" d="M112.7 220.7h34.9l-.7-.6"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M147.9 221l.1.1c.4.6.7 1.3.8 2l.2-1.1-1.1-1z"/>
+ <path fill="url(#x)" fill-rule="nonzero" d="M147.9 221l.1.1c.4.6.7 1.3.8 2l.2-1.1-1.1-1z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M99.7 230.1h43l5.1-.3.2-1c-.2.3-.4.5-.6.7l-.3.3H99.7v.3z"/>
+ <path fill="url(#y)" fill-rule="nonzero" d="M99.7 230.1h43l5.1-.3.2-1c-.2.3-.4.5-.6.7l-.3.3H99.7v.3z"/>
+ <path fill="url(#z)" fill-rule="nonzero" d="M95.2 231.8c.2 1 1.1 1.7 2.2 1.7h47.3l.6-.6c.3.3.8.6 1.4.6 1.5 0 3.4-.2 4.5-1.1 1.1-.9 1.9-3.4 2.2-5.4.1-.7.2-1.4.2-1.9 0-3.2-1-6.2-2.6-7.5-.6-.4-1.8-.7-3.6-.9h-.8c-.3 0-.6.1-.7.3l-.4-.3H97c-1.2 0-2.2 1-2.2 2.2v1.4c0 1.2 1 2.2 2.2 2.2h1.2v5.2H97c-.7 0-1.3.3-1.8.9-.4.5-.5 1.1-.4 1.7v.2l.4 1.3zm1.6-1.9c.1-.1.2-.1.3-.1h50l.3-.3c.2-.2.4-.4.6-.7.3-.4.5-.9.6-1.4.4-1.3.5-2.8.2-4.2-.2-.7-.4-1.4-.8-2l-.1-.1-.2-.3H97.2c-.2 0-.3-.2-.3-.3v-1.4c0-.2.2-.3.3-.3h47.7l1.2 1 .4-.1c.6-.1.8-.5.9-.9 1.6.1 2.4.4 2.6.5.9.8 1.9 3.1 1.9 6 0 .6-.1 1.4-.2 2.1-.3 1.7-.9 3.4-1.5 3.8-.5.4-1.8.6-3.3.7l-.4-.4c-.2-.3-.4-.5-.8-.6l-.5-.1-1.1 1H97.5c-.2 0-.3-.1-.3-.3l-.3-1v-.1c-.2-.3-.1-.4-.1-.5zm50.2-4.1c.1.1.2.2.2.4s-.1.4-.3.4c-.1.5-.3.9-.6 1.3H101v-5.2h45.5c.2.4.3.8.4 1.2.1.1.2.2.2.4 0 .1-.1.2-.1.3.1.3.1.8 0 1.2z"/>
+ <path fill="url(#A)" fill-rule="nonzero" d="M147 223.8c-.1 0-.2-.1-.2-.1h-44.2c-.3 0-.5.2-.5.5s.2.5.5.5h44.2c.1 0 .3-.1.3-.2.1-.1.1-.2.1-.3 0-.2-.1-.3-.2-.4z"/>
+ <path fill="url(#B)" fill-rule="nonzero" d="M102.5 225.6c-.3 0-.5.2-.5.5s.2.5.5.5H146.9c.2-.1.3-.2.3-.4 0-.1-.1-.3-.2-.4-.1-.1-.2-.1-.3-.1h-44.2v-.1z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M103 210.8h38.8v-5.2h-38.5c-.8 1.1-1 3.5-.3 5.2z"/>
+ <path fill="url(#C)" fill-rule="nonzero" d="M134.5 203.4c-1.4-.5-2.8-.9-4.2-1.5h-.2l4.2 1.5h.2z"/>
+ <path fill="url(#D)" fill-rule="nonzero" d="M145.3 203.6c-2.5-.5-5.1-1-7.6-1.8h-.2c2.5.8 5.1 1.4 7.8 1.8z"/>
+ <path fill="url(#E)" fill-rule="nonzero" d="M103.2 213.9l.4-.1 1 1h40.6c.2 0 .3-.2.3-.3v-1.4c0-.2-.1-.3-.3-.3h-13.3l-29.1.6-.5-.6h-.1l-.2-.3-.9-1.1.1-1.1c-.4-2-.1-4.2.7-5.6l.1-1 4.4-.3h18.5c-.8-.4-1.7-.9-2.6-1.5h-17.1l-.9 1-.4-.1c-.3-.1-.5-.3-.7-.6-.1-.1-.2-.3-.3-.4-1.3 0-2.4.3-2.8.7-.7.6-1.4 3.8-1.4 5.9 0 2.9.8 5.2 1.6 6 .1.1.9.4 2.2.5 0-.5.2-.9.7-1z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M134.3 203.4c-1.4-.5-2.8-.9-4.2-1.5h-7.8c.9.6 1.8 1.1 2.6 1.5h9.4z"/>
+ <path fill="url(#F)" fill-rule="nonzero" d="M134.3 203.4c-1.4-.5-2.8-.9-4.2-1.5h-7.8c.9.6 1.8 1.1 2.6 1.5h9.4z"/>
+ <path fill="url(#G)" fill-rule="nonzero" d="M145.3 203.6c.1-.1.1-.2.1-.3l-.2-1.1c0-.2-.1-.3-.3-.3h-7.2c2.5.7 5 1.3 7.6 1.7z"/>
+ <path fill="url(#H)" fill-rule="nonzero" d="M145.3 203.6c.1-.1.1-.2.1-.3l-.2-1.1c0-.2-.1-.3-.3-.3h-7.2c2.5.7 5 1.3 7.6 1.7z"/>
+ <path fill="url(#I)" fill-rule="nonzero" d="M142.9 203.4v.3h2.2c.1 0 .1 0 .2-.1-2.6-.4-5.2-1-7.8-1.8h-7.2l4.2 1.5h8.4v.1z"/>
+ <path fill="url(#J)" fill-rule="nonzero" d="M142.9 203.4v.3h2.2c.1 0 .1 0 .2-.1-2.6-.4-5.2-1-7.8-1.8h-7.2l4.2 1.5h8.4v.1z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M131.8 212.7h-29.6l.5.7"/>
+ <path fill="url(#K)" fill-rule="nonzero" d="M131.8 212.7h-29.6l.5.7"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M101.9 212.4l-.1-.1c-.3-.6-.6-1.3-.7-2l-.1 1.1.9 1z"/>
+ <path fill="url(#L)" fill-rule="nonzero" d="M101.9 212.4l-.1-.1c-.3-.6-.6-1.3-.7-2l-.1 1.1.9 1z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M134.5 203.4h-28.1l-4.4.3-.1 1c.1-.3.3-.5.5-.7l.2-.3H143v-.3h-8.5z"/>
+ <path fill="url(#M)" fill-rule="nonzero" d="M134.5 203.4h-28.1l-4.4.3-.1 1c.1-.3.3-.5.5-.7l.2-.3H143v-.3h-8.5z"/>
+ <path fill="url(#N)" fill-rule="nonzero" d="M103 216.8h.2c.2 0 .4-.1.5-.3l.3.3H145.4c1-.1 1.7-1.1 1.7-2.2v-1.4c0-1.2-.9-2.2-1.9-2.2h-1v-5.5h1c.6 0 1.1-.3 1.5-.9.2-.3.3-.5.3-.8.1-.3.1-.7 0-1.1l-.2-1.1c-.1-.4-.3-.8-.5-1.1-.4-.1-.7-.3-1-.5l-.5.4h-40.1c-.2 0-.3 0-.5-.1-.4-.1-.7-.3-.9-.6h-.2c-1.2 0-2.9.2-3.9 1.1-1.3 1.3-2 5.5-2 7.4 0 3.2.9 6.2 2.2 7.5.5.4 1.5.7 3.1.9.1.1.3.2.5.2zm-2.8-2.5c-.8-.8-1.6-3.1-1.6-6 0-2.1.8-5.3 1.4-5.9.4-.4 1.5-.6 2.8-.7.1.1.3.3.3.4.2.3.4.5.7.6l.4.1.9-1H144.8c.1 0 .2.1.3.3l.2 1.1c0 .1 0 .2-.1.3l-.1.1s-.1.1-.2.1h-42.6l-.2.3c-.2.2-.3.4-.5.7-.8 1.4-1.1 3.6-.7 5.6.1.7.4 1.4.7 2l.1.1.2.3h43c.2 0 .3.2.3.3v1.4c0 .2-.1.3-.3.3h-40.6l-1-1-.4.1c-.5.1-.7.5-.8.9-1 0-1.8-.2-1.9-.4zm41.5-8.7v5.2H103c-.7-1.7-.5-4.1.3-5.2h38.4z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M108.9 193.8c-.2 0-.4-.2-.4-.4s.2-.4.4-.4h37.5c.1 0 .1 0 .2.1l-.3-.9h-38.6v4.1H146c.2-.3.4-.6.5-1h-37.6c-.2 0-.4-.2-.4-.4s.2-.4.4-.4h37.5c.1 0 .2 0 .3.1 0-.3.1-.7 0-1-.1.1-.2.1-.3.1h-37.5v.1z"/>
+ <path fill="url(#O)" fill-rule="nonzero" d="M104.3 198.9c0 .1.1.2.3.2h13.9c-.4-.4-.9-.8-1.3-1.1h-10.7v-.3h-2.2c-.1 0-.2 0-.2.1-.1.1-.1.1-.1.2l.3.9z"/>
+ <path fill="url(#P)" fill-rule="nonzero" d="M104.2 189.1c-.1 0-.2.1-.2.2v1.1c0 .1.1.3.3.3h9.3c0-.6.1-1.1.2-1.6h-9.6z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M113.8 189.1h-9.5-.1 9.6z"/>
+ <path fill="url(#Q)" fill-rule="nonzero" d="M113.8 189.1h-9.5-.1 9.6z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M117.2 198c.4.4.8.8 1.3 1.1h5.7c-.7-.4-1.4-.7-2-1.1h-5z"/>
+ <path fill="url(#R)" fill-rule="nonzero" d="M117.2 198c.4.4.8.8 1.3 1.1h5.7c-.7-.4-1.4-.7-2-1.1h-5z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M113.8 189.1c-.1.5-.2 1.1-.2 1.6h3.4c.1-.6.2-1.1.4-1.6h-3.6z"/>
+ <path fill="url(#S)" fill-rule="nonzero" d="M113.8 189.1c-.1.5-.2 1.1-.2 1.6h3.4c.1-.6.2-1.1.4-1.6h-3.6z"/>
+ <path fill="url(#T)" fill-rule="nonzero" d="M142.9 198h-15.8c.9.4 1.7.8 2.6 1.1h14.4l.9-.8.4.1c.3.1.5.3.7.5.1.1.2.3.3.3 1.3 0 2.4-.2 2.8-.5.7-.5 1.4-2.9 1.4-4.6 0-2.3-.8-4-1.6-4.6-.1-.1-.8-.3-2-.4h-.2c-.1.3-.3.6-.7.7h-.3l-1-.7h-13.3c-.4.5-.7.9-1.1 1.4l16.2-.3.5.5h.1l.2.2.9.8-.1.9c.4 1.6.1 3.2-.7 4.3l-.1.8-4.5.3z"/>
+ <path fill="url(#T)" fill-rule="nonzero" d="M142.9 198h-15.8c.9.4 1.7.8 2.6 1.1h14.4l.9-.8.4.1c.3.1.5.3.7.5.1.1.2.3.3.3 1.3 0 2.4-.2 2.8-.5.7-.5 1.4-2.9 1.4-4.6 0-2.3-.8-4-1.6-4.6-.1-.1-.8-.3-2-.4h-.2c-.1.3-.3.6-.7.7h-.3l-1-.7h-13.3c-.4.5-.7.9-1.1 1.4l16.2-.3.5.5h.1l.2.2.9.8-.1.9c.4 1.6.1 3.2-.7 4.3l-.1.8-4.5.3z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M146.8 189.1h.2-.2z"/>
+ <path fill="url(#U)" fill-rule="nonzero" d="M146.8 189.1h.2-.2zM146.8 189.1h.2-.2z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M144.8 189.1h-13.3 13.3z"/>
+ <path fill="url(#V)" fill-rule="nonzero" d="M144.8 189.1h-13.3 13.3zM144.8 189.1h-13.3 13.3z"/>
+ <path fill="url(#W)" fill-rule="nonzero" d="M119.8 189.1c-.3.5-.5 1-.6 1.6l10.5-.2c.3-.5.7-.9 1-1.4h-10.9z"/>
+ <path fill="url(#W)" fill-rule="nonzero" d="M119.8 189.1c-.3.5-.5 1-.6 1.6l10.5-.2c.3-.5.7-.9 1-1.4h-10.9z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M130.8 189.1h-10.9 10.9z"/>
+ <path fill="url(#X)" fill-rule="nonzero" d="M130.8 189.1h-10.9 10.9zM130.8 189.1h-10.9 10.9z"/>
+ <path fill="url(#Y)" fill-rule="nonzero" d="M129.7 190.5h.6c.4-.5.7-.9 1.1-1.4h-.7c-.3.5-.6.9-1 1.4z"/>
+ <path fill="url(#Y)" fill-rule="nonzero" d="M129.7 190.5h.6c.4-.5.7-.9 1.1-1.4h-.7c-.3.5-.6.9-1 1.4z"/>
+ <path fill="url(#Y)" fill-rule="nonzero" d="M129.7 190.5h.6c.4-.5.7-.9 1.1-1.4h-.7c-.3.5-.6.9-1 1.4z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M131.5 189.1h-.7.7z"/>
+ <path fill="url(#Z)" fill-rule="nonzero" d="M131.5 189.1h-.7.7zM131.5 189.1h-.7.7zM131.5 189.1h-.7.7z"/>
+ <path fill="url(#aa)" fill-rule="nonzero" d="M122.2 198c.6.4 1.3.8 2 1.1h5.5c-.9-.4-1.8-.7-2.6-1.1h-4.9z"/>
+ <path fill="url(#ab)" fill-rule="nonzero" d="M122.2 198c.6.4 1.3.8 2 1.1h5.5c-.9-.4-1.8-.7-2.6-1.1h-4.9z"/>
+ <path fill="url(#ac)" fill-rule="nonzero" d="M119.8 189.1h-2.5c-.2.5-.3 1-.4 1.6h2.3c.1-.6.3-1.1.6-1.6z"/>
+ <path fill="url(#ad)" fill-rule="nonzero" d="M119.8 189.1h-2.5c-.2.5-.3 1-.4 1.6h2.3c.1-.6.3-1.1.6-1.6z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M117.2 198H142.9l4.4-.2.1-.8c-.1.2-.3.4-.5.5l-.2.2h-40.2v.3h10.7z"/>
+ <path fill="url(#ae)" fill-rule="nonzero" d="M117.2 198H142.9l4.4-.2.1-.8c-.1.2-.3.4-.5.5l-.2.2h-40.2v.3h10.7z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M130.3 190.5h-.6l-10.5.2h-1.6 29.5l-.5-.5"/>
+ <path fill="url(#af)" fill-rule="nonzero" d="M130.3 190.5h-.6l-10.5.2h-1.6 29.5l-.5-.5"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M147.4 191l.1.1c.3.5.6 1 .7 1.6l.1-.9-.9-.8z"/>
+ <path fill="url(#ag)" fill-rule="nonzero" d="M147.4 191l.1.1c.3.5.6 1 .7 1.6l.1-.9-.9-.8z"/>
+ <path fill="url(#ah)" fill-rule="nonzero" d="M104.1 200.5c.2 0 .3.1.5.1h40.1l.5-.4c.2.2.6.4 1 .5h.2c1.2 0 2.9-.2 3.8-.8 1.3-1 2-4.2 2-5.7 0-2-.6-3.8-1.4-5-.2-.3-.5-.6-.8-.8-.5-.3-1.5-.6-3.1-.7h-.7c-.3 0-.5.1-.6.3l-.3-.2h-.8c-.3.4-.8.6-1.4.6h-40.2c-.2.3-.4.6-.5.9v1.3c0 1 .8 1.7 1.9 1.7h1v4.1h-1c-.6 0-1.1.2-1.5.7-.4.4-.5 1-.3 1.5l.2.9c.1.3.2.5.4.7.2 0 .5.2 1 .3-.1 0-.1 0 0 0zm0-2.7c.1-.1.1-.1.2-.1H146.7l.2-.2.5-.5c.8-1.1 1.1-2.8.7-4.3-.1-.6-.4-1.1-.7-1.6l-.1-.1-.2-.2h-42.8c-.2 0-.3-.1-.3-.3v-1.1c0-.1.1-.2.2-.2h40.6l1 .7h.3c.5-.1.7-.4.7-.7h.2c1.2.1 1.9.3 2 .4.8.6 1.6 2.4 1.6 4.6 0 1.6-.8 4.1-1.4 4.6-.4.3-1.5.5-2.8.5-.1-.1-.3-.2-.3-.3-.2-.2-.4-.4-.7-.5l-.4-.1-.9.8h-39.5c-.1 0-.2-.1-.3-.2l-.3-1s0-.1.1-.2zm42.5-3.2c.1.1.1.2.1.3 0 .2-.1.3-.3.3-.1.4-.3.7-.5 1h-38.4v-4.1h38.6l.3.9c.1.1.2.2.2.3 0 .1 0 .2-.1.3.2.4.2.7.1 1z"/>
+ <path fill="url(#ai)" fill-rule="nonzero" d="M146.6 193.1c-.1 0-.1-.1-.2-.1h-37.5c-.2 0-.4.2-.4.4s.2.4.4.4h37.5c.1 0 .2 0 .3-.1.1-.1.1-.2.1-.3 0-.1-.1-.2-.2-.3z"/>
+ <path fill="url(#aj)" fill-rule="nonzero" d="M108.9 194.6c-.2 0-.4.2-.4.4s.2.4.4.4h37.6c.2 0 .3-.2.3-.3 0-.1-.1-.2-.1-.3-.1-.1-.2-.1-.3-.1h-37.5v-.1z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M101.1 183.6h38.6v-4.1h-38.4c-.6 1-.8 2.8-.2 4.1z"/>
+ <path fill="url(#ak)" fill-rule="nonzero" d="M98.4 186.4c.1.1.9.3 2.2.4.1-.3.3-.7.8-.7h.3l1 .8h11.9c.2-.5.5-1 .8-1.4l-14.6.2-.5-.5h-.1l-.2-.2-.9-.8.1-.9c-.3-1.2-.2-2.5.2-3.5H97c-.2.7-.3 1.4-.3 2 .1 2.2.9 4 1.7 4.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M120.7 176.7h-17.3l-.9.8h17.9c0-.3.1-.5.3-.8z"/>
+ <path fill="url(#al)" fill-rule="nonzero" d="M120.7 176.7h-17.3l-.9.8h17.9c0-.3.1-.5.3-.8z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M102 177.4c-.3-.1-.5-.3-.7-.5-.1-.1-.2-.3-.3-.3-1.3 0-2.4.2-2.8.5l-.3.3h4.5-.4z"/>
+ <path fill="url(#am)" fill-rule="nonzero" d="M102 177.4c-.3-.1-.5-.3-.7-.5-.1-.1-.2-.3-.3-.3-1.3 0-2.4.2-2.8.5l-.3.3h4.5-.4z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M133 177.5c.2-.3.5-.5.8-.8l-.8.8z"/>
+ <path fill="url(#an)" fill-rule="nonzero" d="M133 177.5c.2-.3.5-.5.8-.8l-.8.8z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M100 178.9l.1-.8 4.4-.2h15.6c0-.1.1-.2.2-.4H97.9c-.3.5-.7 1.3-.9 2.2h2.5c.2-.3.3-.6.5-.8z"/>
+ <path fill="url(#ao)" fill-rule="nonzero" d="M100 178.9l.1-.8 4.4-.2h15.6c0-.1.1-.2.2-.4H97.9c-.3.5-.7 1.3-.9 2.2h2.5c.2-.3.3-.6.5-.8z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M133 177.5c-.2.1-.3.2-.4.4l.4-.4z"/>
+ <path fill="url(#ap)" fill-rule="nonzero" d="M133 177.5c-.2.1-.3.2-.4.4l.4-.4z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M120.2 185.3l-4.7.1c-.3.4-.6.9-.8 1.4h4.1c.3-.6.8-1.1 1.4-1.5z"/>
+ <path fill="url(#aq)" fill-rule="nonzero" d="M120.2 185.3l-4.7.1c-.3.4-.6.9-.8 1.4h4.1c.3-.6.8-1.1 1.4-1.5z"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M120.1 177.9h4c.7-.7 1.6-1.1 2.6-1.1h.3l3.3.3c.1-.1.2-.2.3-.4h-10c-.1.3-.3.5-.4.8 0 .1 0 .2-.1.4z"/>
+ <path fill="url(#ar)" fill-rule="nonzero" d="M120.1 177.9h4c.7-.7 1.6-1.1 2.6-1.1h.3l3.3.3c.1-.1.2-.2.3-.4h-10c-.1.3-.3.5-.4.8 0 .1 0 .2-.1.4z"/>
+ <path fill="url(#as)" fill-rule="nonzero" d="M143.1 186.7c.2 0 .3-.1.3-.3v-1.1c0-.1-.1-.3-.3-.3h-7.9l-1.6 1.6h9.5v.1z"/>
+ <path fill="url(#at)" fill-rule="nonzero" d="M143.1 186.7c.2 0 .3-.1.3-.3v-1.1c0-.1-.1-.3-.3-.3h-7.9l-1.6 1.6h9.5v.1z"/>
+ <path fill="url(#au)" fill-rule="nonzero" d="M122 186.7h10.7c.3-.3.6-.6.8-.9l.7-.7h-4.4l-5.8.1c-.7.6-1.4 1.1-2 1.5z"/>
+ <path fill="url(#av)" fill-rule="nonzero" d="M122 186.7h10.7c.3-.3.6-.6.8-.9l.7-.7h-4.4l-5.8.1c-.7.6-1.4 1.1-2 1.5z"/>
+ <path fill="url(#aw)" fill-rule="nonzero" d="M140.9 177.9v.3h1c.4-.3.9-.7 1.3-1l-.1-.2c0-.1-.1-.2-.3-.2h-3.6c-.2.4-.5.8-.9 1.1h2.6z"/>
+ <path fill="url(#ax)" fill-rule="nonzero" d="M140.9 177.9v.3h1c.4-.3.9-.7 1.3-1l-.1-.2c0-.1-.1-.2-.3-.2h-3.6c-.2.4-.5.8-.9 1.1h2.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M133.9 177.5c.9 0 1.7-.3 2.4-.8h-2.5c-.2.3-.5.5-.8.8h.9z"/>
+ <path fill="url(#ay)" fill-rule="nonzero" d="M133.9 177.5c.9 0 1.7-.3 2.4-.8h-2.5c-.2.3-.5.5-.8.8h.9z"/>
+ <path fill="url(#az)" fill-rule="nonzero" d="M133.9 177.5c.9 0 1.7-.3 2.4-.8h-2.5c-.2.3-.5.5-.8.8h.9z"/>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M133 177.5l-.4.4h5.7c.3-.3.6-.7.9-1.1h-3c-.7.5-1.5.8-2.4.8h-.8v-.1z"/>
+ <path fill="url(#aA)" fill-rule="nonzero" d="M133 177.5l-.4.4h5.7c.3-.3.6-.7.9-1.1h-3c-.7.5-1.5.8-2.4.8h-.8v-.1z"/>
+ <path fill="url(#aB)" fill-rule="nonzero" d="M133 177.5l-.4.4h5.7c.3-.3.6-.7.9-1.1h-3c-.7.5-1.5.8-2.4.8h-.8v-.1z"/>
+ <path fill="url(#aC)" fill-rule="nonzero" d="M132.7 186.7h.9c.5-.6 1.1-1.1 1.6-1.6h-.9l-.7.7-.9.9z"/>
+ <path fill="url(#aC)" fill-rule="nonzero" d="M132.7 186.7h.9c.5-.6 1.1-1.1 1.6-1.6h-.9l-.7.7-.9.9z"/>
+ <path fill="url(#aD)" fill-rule="nonzero" d="M132.7 186.7h.9c.5-.6 1.1-1.1 1.6-1.6h-.9l-.7.7-.9.9z"/>
+ <path fill="url(#aE)" fill-rule="nonzero" d="M143.1 178.1c.1 0 .2 0 .2-.1.1-.1.1-.1.1-.2l-.2-.7c-.4.3-.9.7-1.3 1h1.2z"/>
+ <path fill="url(#aE)" fill-rule="nonzero" d="M143.1 178.1c.1 0 .2 0 .2-.1.1-.1.1-.1.1-.2l-.2-.7c-.4.3-.9.7-1.3 1h1.2z"/>
+ <path fill="url(#aF)" fill-rule="nonzero" d="M143.1 178.1c.1 0 .2 0 .2-.1.1-.1.1-.1.1-.2l-.2-.7c-.4.3-.9.7-1.3 1h1.2z"/>
+ <path fill="url(#aG)" fill-rule="nonzero" d="M127 176.8h-.3c-1 0-1.9.4-2.6 1.1h8.5l.4-.4c.2-.3.5-.5.8-.8h-3c-.1.1-.2.2-.3.4l-3.5-.3z"/>
+ <path fill="url(#aH)" fill-rule="nonzero" d="M127 176.8h-.3c-1 0-1.9.4-2.6 1.1h8.5l.4-.4c.2-.3.5-.5.8-.8h-3c-.1.1-.2.2-.3.4l-3.5-.3z"/>
+ <path fill="url(#aI)" fill-rule="nonzero" d="M120.2 185.3c-.6.5-1.1 1-1.5 1.5h3.4c.6-.5 1.3-1 2-1.5h-3.9z"/>
+ <path fill="url(#aJ)" fill-rule="nonzero" d="M120.2 185.3c-.6.5-1.1 1-1.5 1.5h3.4c.6-.5 1.3-1 2-1.5h-3.9z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M115.4 185.3h4.8l3.9-.1 5.8-.1h-29.6l.6.5"/>
+ <path fill="url(#aK)" fill-rule="nonzero" d="M115.4 185.3h4.8l3.9-.1 5.8-.1h-29.6l.6.5"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M100.1 184.9l-.1-.1c-.3-.5-.6-1-.7-1.6l-.1.9.9.8z"/>
+ <path fill="url(#aL)" fill-rule="nonzero" d="M100.1 184.9l-.1-.1c-.3-.5-.6-1-.7-1.6l-.1.9.9.8z"/>
+ <path fill="#FAFAFA" fill-rule="nonzero" d="M138.4 177.9h-33.8l-4.4.2-.1.8c.1-.2.3-.4.5-.5l.2-.2H141v-.3h-2.6z"/>
+ <path fill="url(#aM)" fill-rule="nonzero" d="M138.4 177.9h-33.8l-4.4.2-.1.8c.1-.2.3-.4.5-.5l.2-.2H141v-.3h-2.6z"/>
+ <path fill="url(#aN)" fill-rule="nonzero" d="M97.4 187.5c.5.3 1.5.6 3.1.7h.7c.3 0 .5-.1.6-.3l.3.2h41c.6 0 1.1-.2 1.4-.6.2-.2.4-.5.4-.7 0-.1.1-.3.1-.4v-1.1c0-1-.8-1.7-1.9-1.7h-1v-4h1c.6 0 1.1-.2 1.5-.7.4-.4.5-1 .3-1.5l-.1-.2-.2-.7c0-.1-.1-.3-.2-.4-.3-.6-.9-.9-1.7-.9h-40l-.5.4c-.3-.2-.7-.5-1.2-.5-1.2 0-2.9.2-3.8.8-.4.3-.8.8-1.1 1.5-.3.7-.6 1.5-.7 2.2-.2.8-.3 1.5-.3 2 0 2.1.6 4 1.6 5.2.2.3.4.5.7.7zm-.4-7.8c.2-.9.5-1.8.9-2.2l.3-.3c.4-.3 1.5-.5 2.8-.5.1.1.3.2.3.3.2.2.4.4.7.5l.4.1.9-.8h39.4c.1 0 .2.1.3.2l.1.2.2.7c0 .1 0 .2-.1.2-.1.1-.1.1-.2.1H100.6l-.2.2-.5.5c-.2.3-.3.5-.5.8-.4 1-.5 2.3-.2 3.5.1.6.4 1.1.7 1.6l.1.1.2.2H143c.2 0 .3.1.3.3v1.1c0 .1-.1.3-.3.3h-40.4l-1-.8h-.3c-.5.1-.7.4-.8.7-1.3-.1-2.1-.3-2.2-.4-.8-.6-1.6-2.4-1.6-4.6.1-.6.2-1.3.3-2zm42.8-.1v4.1h-38.6c-.7-1.3-.5-3.2.3-4.1h38.3z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M190.1 151.1c-8.6-5.4-23.3-5.4-23.5-5.4-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6.1 0 7.6-.1 15.1 1.8 5.8 1.5 10 3.7 12.6 6.7h.2c-9.2-10.9-26.7-9.7-26.9-9.6-.3 0-.6-.2-.6-.5s.2-.6.5-.6c.2 0 15.7-1.1 25.6 7.7-2.1-2.3-5.5-5.2-10.1-7.3-6.7-2.9-14.7-1.9-17-1.5l-1.2 5.3 25.1 4.3c0 .3.1.3.2.3zM210.5 142.3c-5 2.4-8.1 5.4-10 7.7 8.8-8.7 22.6-8.9 22.7-8.9.3 0 .6.2.6.6 0 .3-.2.6-.6.6-.2 0-15.1.2-23.3 10 .2-.1.4-.2.6-.4 2.3-2.2 5.4-4 9.5-5.5 6.9-2.5 14.1-3.1 14.2-3.1.3 0 .6.2.6.5s-.2.6-.5.6c-.2 0-12 1-19.8 5.9l22.3-4.7c-.7-2.4-1.4-5-1.7-6.2-2.1 0-9.4.4-14.6 2.9z"/>
+ <path fill="url(#aO)" fill-rule="nonzero" d="M230.9 147v-.5c-.1-.3-.2-.6-.4-.8-.3-.4-.8-.5-1.3-.5h-.2c-.7-2.6-1.7-6.5-1.9-7.1-.1-.3-.4-.6-.7-.7-1.2-.5-10.5-.2-16.7 2.9-7.5 3.7-11.2 8.5-12.7 11-1.8-2.6-6-7.4-13.1-10.5-8.6-3.7-18.7-1.6-19.1-1.5-.4.1-.8.4-.8.8l-1.4 6.1h-.3c-.5 0-.9.2-1.3.5-.3.3-.5.8-.5 1.3l.3 4.3h.5l.4.1.5 4.9c1.6-.1 6-.5 6.5-.5.8 0 1.3.5 1.4 1.4.2 1.9-1.9 5-7.1 6.2-.3.1-.9.6-1.1.8-.1.1.2.6-.1.8l.2 2.7.1.8.1 1.2 1.2 15.4c.1.9.8 1.5 1.6 1.5l24.9 3.6c.9.9 2.9 2.3 6.2 2.3h.8c3.6-.2 5.6-1.6 6.5-2.5l22.1-3.1c.9 0 1.6-.7 1.7-1.5l1.1-11.7.1-1.1.4-4.5c-.3-.1-.7-.2-1-.3-.8-.3 1.5-.1.4-.3-3.5-.8-5.4-2.9-6.2-4.7l-10.6 1.6h-.2c-.3 0-.5-.1-.7-.3-.2-.2-.4-.5-.4-.9l.1-5.5c0-.5.4-1 .9-1.1l11.5-1.8c.3 0 .7 0 .9.3.2.2.4.5.4.9l.1 3c1.5.1 4.3.3 5.5.5l.5-4.9h.1v-.1l.3-3.3.2-2.1v-.1l.3-3zm-66.3-.2l1.2-5.3c2.4-.4 10.3-1.4 17 1.5 4.7 2 8 4.9 10.1 7.3-9.9-8.9-25.4-7.8-25.6-7.7-.3 0-.5.3-.5.6s.3.5.6.5c.2 0 17.7-1.3 26.9 9.6h-.2c-2.6-2.9-6.8-5.2-12.6-6.7-7.5-1.9-15-1.8-15.1-1.8-.3 0-.6.3-.6.
6s.3.5.6.6c.2 0 14.9-.1 23.5 5.4-.1 0-.2-.1-.3-.1l-25-4.5zm38.5 40.8s-1.4 3.6-6.7 3.1c-5.3-.5-6.4-2.8-6.4-2.8l-.3-33.2s3.3 2 7.5 1.7c4.2-.3 6.7-2.5 6.7-2.5l-.8 33.7zm1.3-37.2c7.9-4.9 19.6-5.9 19.8-5.9.3 0 .5-.3.5-.6s-.3-.5-.6-.5c-.1 0-7.2.6-14.2 3.1-4.1 1.5-7.2 3.3-9.5 5.5-.2.1-.4.2-.6.4 8.2-9.8 23.1-10 23.3-10 .3 0 .6-.3.6-.6s-.3-.6-.6-.6c-.2 0-14 .2-22.7 8.9 1.9-2.3 5.1-5.3 10-7.7 5.2-2.5 12.4-2.9 14.5-2.8.3 1.2 1 3.8 1.7 6.2l-22.2 4.6z"/>
+ <path fill="url(#aP)" fill-rule="nonzero" d="M223.7 156.1c-.2-.2-.6-.3-.9-.3l-11.5 1.8c-.5.1-.9.5-.9 1.1l-.1 5.5c0 .3.1.6.4.9.2.2.5.3.7.3h.2l10.6-1.6c-.4-.9-.5-1.8-.4-2.4.1-.8.6-1.4 1.4-1.4.1 0 .5 0 .9.1l.1-3.1c-.2-.4-.3-.7-.5-.9z"/>
+ <path fill="url(#aQ)" fill-rule="nonzero" d="M223.7 156.1c-.2-.2-.6-.3-.9-.3l-11.5 1.8c-.5.1-.9.5-.9 1.1l-.1 5.5c0 .3.1.6.4.9.2.2.5.3.7.3h.2l10.6-1.6c-.4-.9-.5-1.8-.4-2.4.1-.8.6-1.4 1.4-1.4.1 0 .5 0 .9.1l.1-3.1c-.2-.4-.3-.7-.5-.9z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M162.8 163.3c4.7-1 6.4-3.7 6.3-5 0-.4-.2-.4-.3-.4-.4 0-4.4.3-6.9.6h-.5l-.6-5.1c-.9 0-3.2.4-5.5 2.6-1.4 1.3-1.7 3.1-.9 4.6.9 2 3.7 3.8 8.4 2.7z"/>
+ <path fill="url(#aR)" fill-rule="nonzero" d="M161.7 166.1c.1 0 .2 0 .2-.1.3-.2 0-.7.1-.8.2-.2.8-.7 1.1-.8 5.2-1.1 7.3-4.3 7.1-6.2-.1-.8-.6-1.4-1.4-1.4-.5 0-4.9.4-6.5.5l-.5-4.9-.4-.1h-.5c-.8 0-2.3.2-4 1.2-.7.4-1.5 1-2.3 1.7-.8.7-1.3 1.6-1.5 2.5-.2.8-.2 1.6 0 2.4.1.3-.8-.1-1 .1v.1c-.1.9.5 2.4 2 3.7 1.4 1.5 3.9 2.5 7.6 2.1zm-6.5-9.9c2.3-2.3 4.6-2.6 5.5-2.6l.6 5.1h.5c2.6-.2 6.5-.6 6.9-.6.1 0 .2 0 .3.4.1 1.2-1.6 3.9-6.3 5-4.7 1-7.5-.7-8.5-2.5-.7-1.7-.3-3.4 1-4.8z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M231.1 156.6l-.6 5.1h-.5c-2.6-.2-6.5-.6-6.9-.6-.1 0-.2 0-.3.4-.1 1.2 1.6 3.9 6.3 5 4.7 1 7.5-.7 8.5-2.5.8-1.5.5-3.3-.9-4.6-2.5-2.4-4.7-2.7-5.6-2.8z"/>
+ <path fill="url(#aS)" fill-rule="nonzero" d="M236.7 157.9c-3.2-2.7-6.1-2.4-6.2-2.4h-.5l-.5 4.9c-1.2-.1-4-.3-5.5-.5-.5 0-.8-.1-.9-.1-.8 0-1.3.5-1.4 1.4-.1.6.1 1.5.4 2.4.8 1.9 2.7 4 6.2 4.7 1 .2-1.2 0-.4.3.4.1.7.2 1 .3.3.1.6.2 1 .2 2.8.5 5.1-.1 6.4-1.1.4-.3.8-.6 1-1 .4-.5.7-1.6.9-2.2.1-.2.2-.4.2-.5.8-1.6.7-3.3-.2-4.8-.2-.4-.5-.7-.9-1.1-.2-.1-.4-.3-.6-.5zm.8 6c-1 1.8-3.8 3.5-8.5 2.5s-6.4-3.7-6.3-5c0-.4.2-.4.3-.4.4 0 4.4.3 6.9.6h.5l.6-5.1c.9 0 3.2.4 5.5 2.6 1.5 1.5 1.8 3.2 1 4.8z"/>
+ <path fill="url(#aT)" fill-rule="nonzero" d="M189.7 154.7l.3 33.2s1.1 2.2 6.4 2.8c5.3.6 6.7-3.1 6.7-3.1l.8-33.7s-2.5 2.2-6.7 2.5c-4.2.3-7.5-1.7-7.5-1.7z"/>
+ <path fill="url(#aU)" fill-rule="nonzero" d="M189.7 154.7l.3 33.2s1.1 2.2 6.4 2.8c5.3.6 6.7-3.1 6.7-3.1l.8-33.7s-2.5 2.2-6.7 2.5c-4.2.3-7.5-1.7-7.5-1.7z"/>
+ <path d="M-31-22h352v303H-31z"/>
+ </g>
+</svg>
diff --git a/browser/extensions/onboarding/content/img/figure_performance.svg b/browser/extensions/onboarding/content/img/figure_performance.svg
new file mode 100644
index 000000000000..f7c5c219aada
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_performance.svg
@@ -0,0 +1 @@
+<svg width="297" height="245" viewBox="0 0 297 245" xmlns="http://www.w3.org/2000/svg"><title>performance</title><defs><linearGradient x1="-920.838%" y1="-294.992%" x2="891.374%" y2="366.984%" id="a"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-162.81%" y1="-242.422%" x2="179.364%" y2="239.183%" id="b"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-347.431%" y1="-836.5%" x2="1777.43%" y2="3692.808%" id="c"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-494.697%" y1="-397.029%" x2="2194.58%" y2="1809.556%" id="d"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-358.927%" y1="-240.795%" x2="1727.185%" y2="1250.312%" id="e"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="1
00%"/></linearGradient><linearGradient x1="-626.22%" y1="-1767.938%" x2="1375.102%" y2="3610.616%" id="f"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-2092.13%" y1="-2092.3%" x2="2102.26%" y2="2102.09%" id="g"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-10687.27%" y1="-10695.62%" x2="6524.09%" y2="6515.75%" id="h"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-235.943%" y1="-613.083%" x2="463.706%" y2="1010.631%" id="i"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-10998.63%" y1="-10974.25%" x2="6212.73%" y2="6237.11%" id="j"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-73.995%" y1="-65.306%" x2="120.692%" y2="159.00
8%" id="k"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-21.918%" y1="-53.508%" x2="187.863%" y2="264.044%" id="l"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-489.211%" y1="-179.924%" x2="521.605%" y2="253.611%" id="m"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-7695.347%" y1="-543.989%" x2="5437.677%" y2="468.444%" id="n"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-871.152%" y1="-248.513%" x2="1179.248%" y2="414.667%" id="o"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-737.21%" y1="-1393.274%" x2="549.019%" y2="955.49%" id="p"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></li
nearGradient><linearGradient x1="-638.104%" y1="-1298.114%" x2="447.684%" y2="806.622%" id="q"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-1950.055%" y1="-1089.986%" x2="3277.839%" y2="1905.929%" id="r"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-575.859%" y1="-1406.193%" x2="985.226%" y2="2277.098%" id="s"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-1033.963%" y1="-1091.623%" x2="2289.262%" y2="2403.036%" id="t"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-2408.138%" y1="-454.703%" x2="4538.159%" y2="962.257%" id="u"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-998.9%" y1="-1143.058%" x2="1755.168%" y2="1997.85
%" id="v"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-4669.755%" y1="-4076.6%" x2="8549.086%" y2="7499.45%" id="w"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-195.59%" y1="-922.704%" x2="389.831%" y2="1341.95%" id="x"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient><linearGradient x1="-343.613%" y1="-263.57%" x2="487.353%" y2="406.119%" id="y"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-27.659%" y1="2.333%" x2="125.482%" y2="104.574%" id="z"><stop stop-color="#D7B600" offset="0%"/><stop stop-color="#05A700" offset="100%"/></linearGradient><linearGradient x1="-651.262%" y1="-472.878%" x2="435.248%" y2="317.591%" id="A"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGr
adient><linearGradient x1="-548.021%" y1="-473.693%" x2="248.049%" y2="204.898%" id="B"><stop stop-color="#FFFBCC" offset="0%"/><stop stop-color="#CEF7C6" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-24-20h352v303H-24z"/><g fill-rule="nonzero"><path d="M13.6 181.6c-2.8 0-5.1-2.2-5.1-4.8V58.3c0-3 2.4-5.4 5.4-5.4h127.2c3 0 5.4 2.4 5.4 5.4v118.5c0 2.6-2.3 4.8-5 4.8H13.6z" fill="#FFF"/><path d="M141.1 54c2.3 0 4.2 1.9 4.2 4.2v118.5c0 2-1.8 3.7-3.9 3.7H13.6c-2.2 0-3.9-1.7-3.9-3.7V58.3c0-2.3 1.9-4.2 4.2-4.2h127.2V54zm0-2.2H13.9c-3.6 0-6.5 2.9-6.5 6.5v118.4c0 3.3 2.8 5.9 6.2 5.9h127.8c3.4 0 6.2-2.7 6.2-5.9V58.3c-.1-3.6-3-6.5-6.5-6.5z" fill="#D7D7DB"/></g><path d="M139.9 75.2v98.2c0 1-.1 1.2-.1 1.2s-.2.1-1.2.1H16.4c-1 0-1.2-.1-1.2-.1s-.1-.2-.1-1.2V75.2h124.8zM141 74H13.9v99.3c0 2 .4 2.5 2.5 2.5h122.2c2 0 2.5-.4 2.5-2.5V74h-.1z" fill-rule="nonzero" fill="#D7D7DB"/><g fill-rule="nonzero" fill="#D7D7DB"><circle cx="3.7" cy="3" r="2.9" transform="translat
e(17 61)"/><circle cx="3" cy="3" r="2.9" transform="translate(27 61)"/><path d="M109.4 67.2H45.5c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1h63.9c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.3 3.1-3.1 3.1z"/><g><circle cx="3" cy="3" r="2.9" transform="translate(122 61)"/><circle cx="3.2" cy="3" r="2.9" transform="translate(131 61)"/></g></g><g fill-rule="nonzero"><path d="M39.9 22.9h23.8S56.3 6.3 72.1 4.1c14.1-1.9 19.7 12.6 19.7 12.6s1.7-8.4 10.1-6.8c8.3 1.6 14.4 14.9 14.4 14.9H137" fill="#F9F9FA"/><path d="M137.2 20.9h-4.5c-.3 0-.6-.3-.6-.6s.3-.6.6-.6h4.5c.3 0 .6.3.6.6s-.2.6-.6.6zm-14.5 0h-1.1c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .3-.3.6-.6.6zm-5.5 0h-.6c-.2 0-.4-.1-.5-.3-.1-.2-.6-1.1-1.3-2.3-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.6.9 1 1.7 1.2 2.1h.3c.3 0 .6.2.6.6 0 .4-.4.5-.7.5zm-53.1-.7h-1.5c-.3 0-.6-.3-.6-.6s.3-.6.6-.6h.6c-.1-.3-.2-.6-.4-1-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.7.6 1.7.1.2.1.4 0 .5 0 .2-.2.3-.4.3zm-10.4 0H40.3c-.3 0-.6-.3-.6-.6s.3-.6.6-.6h13.4c.3 0 .6.3.6.6s-.3
.6-.6.6zm8.8-6.1c-.3 0-.5-.2-.6-.5 0-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.3-.1.6-.5.6zm29.1-1.2c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.1-.3 0-.6.2-.8.3-.1.6 0 .8.2.2.4.4.7.5 1 .1.3 0 .6-.3.7 0 .2-.1.2-.2.2zm18-1.4c-.1 0-.3-.1-.4-.2-2.4-2.3-4.8-3.7-7.2-4.1-1.6-.3-3.1-.2-4.3.2-.3.1-.6-.1-.7-.4-.1-.3.1-.6.4-.7 1.4-.5 3.1-.6 4.9-.2 2.6.5 5.2 2 7.7 4.4.2.2.2.6 0 .8-.1.2-.2.2-.4.2zM88.7 8.2c-.2 0-.3-.1-.4-.2-.7-.9-1.4-1.7-2.2-2.4-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0 .8.8 1.6 1.6 2.3 2.5.2.2.2.6-.1.8-.2.1-.3.1-.4.1zM65.8 4c-.2 0-.3-.1-.4-.2-.2-.2-.2-.6.1-.8C67.2 1.6 69.6.7 72.4.3c2.2-.3 4.3-.2 6.3.2.3.1.5.4.4.7-.1.3-.4.5-.7.4-1.9-.4-3.9-.5-5.9-.2-2.7.4-4.8 1.2-6.4 2.4-.1.1-.2.2-.3.2z" fill="#D7D7DB"/><path d="M137.9 25.1h-98c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h98c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z" fill="#F9F9FA"/></g><path d="M261.4 80.6c.2-.3.6-1 .2-1.3-.3-.2-.6-.3-1-.3-.8 0-1.6.3-2.3.8-1.4 1-2.6 2.7-2.3 3.5 2.5-.5 4.6-1.5 5.4-2.7z"/><path d="M59.3 94.4c4.3.1 8.5-1 12
.1-3.3 3.3-2.1 7.2-3.1 11.1-3 3.9-.1 7.8 1 11.1 3 7.5 4.4 16.8 4.4 24.3 0 6.8-4 15.3-4 22.2 0 7.5 4.4 16.8 4.4 24.3 0 6.8-4 15.3-4 22.2 0 3.6 2.2 7.9 3.4 12.1 3.3.6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1-3.9.1-7.8-.9-11.1-3-7.5-4.4-16.8-4.4-24.3 0-6.8 4-15.3 4-22.2 0-7.5-4.4-16.8-4.4-24.3 0-6.8 4-15.3 4-22.2 0-3.6-2.2-7.9-3.4-12.1-3.3-4.3-.1-8.5 1-12.1 3.3-3.3 2.1-7.2 3.1-11.1 3-3.9.1-7.8-.9-11.1-3-3.6-2.2-7.9-3.4-12.1-3.3-.6 0-1.1.5-1.1 1.1 0 .6.5 1.1 1.1 1.1 3.9-.1 7.8.9 11.1 3 3.6 2.3 7.8 3.4 12.1 3.3zM269.2 82.1c-.2-.2-.5-.3-.8-.1-3.1 2-6.6 3.2-10.3 3.5-1.4.2-2.8.2-4.2 0 2.2-.7 4.2-1.7 5.1-2.9 1.1-1.5.4-2.4.1-2.7-1-.9-3.1-.7-4.7.4-1.2.9-3.2 3-2.8 4.7-1.8.4-3.6.7-5.4.8-.3 0-.6.2-.6.6 0 .4.2.6.6.6 2-.1 4-.4 6-.9 1 .8 2.9 1 6 .7 7-.8 10.7-3.6 10.8-3.8.3-.3.4-.6.2-.9zm-14.1-.9c.7-.5 1.5-.8 2.3-.8.4 0 .7.1 1 .3.3.3 0 1-.2 1.3-.8 1.2-3 2.1-5.4 2.8-.3-1 .9-2.6 2.3-3.6z" fill="#D7D7DB" fill-rule="nonzero"/><path d="M154.6 87.1c-.3 0-.6-.3-.7-.6 0-.4.2-.7.6-.7 1.4-.1 2.8-.4 4-.9.3-.1.7.1.9
.4.1.3-.1.7-.4.9-1.4.4-2.8.7-4.4.9zM202.6 86.9c-.3 0-.6-.2-.7-.6-.1-.4.2-.7.5-.8 3.4-.6 5.5-1.9 7.5-3.3.3-.2.7-.1.9.2.2.3.1.7-.2.9-2.1 1.3-4.4 2.8-8 3.4.1.2 0 .2 0 .2zM148.2 86.8h-.1c-3.5-.6-5.7-2.1-7.9-3.5l-.1-.1c-.3-.2-.4-.6-.2-.9.2-.3.6-.4.9-.2l.1.1c2.2 1.4 4.2 2.7 7.4 3.3.4.1.6.4.5.8 0 .3-.3.5-.6.5zM241.1 86.7h-.1c-3.2-.7-5.4-2.1-7.5-3.4l-.5-.3c-.3-.2-.4-.6-.2-.9.2-.3.6-.4.9-.2l.4.3c2.1 1.3 4 2.6 7 3.2.4.1.6.4.5.8.1.3-.2.5-.5.5zM194.1 86.7h-.2c-.4-.1-.7-.2-1.1-.3-.4-.1-.6-.5-.4-.8.1-.4.5-.6.8-.4.3.1.6.2 1 .3.4.1.6.4.5.8 0 .2-.3.4-.6.4zM189.2 84.7c-.1 0-.2 0-.3-.1-.7-.4-1.4-.8-2-1.3-.5-.3-1.1-.7-1.6-1-.3-.2-.4-.6-.2-.9.2-.3.6-.4.9-.2.6.3 1.1.7 1.6 1 .6.4 1.3.8 2 1.2.3.2.4.6.2.9-.1.3-.4.4-.6.4zM162.6 84.3c-.2 0-.4-.1-.6-.3-.2-.3-.1-.7.2-.9l.9-.6c.3-.2.7-.1.9.2.2.3.1.7-.2.9l-.9.6c-.1 0-.2.1-.3.1zM216.1 80.6c-.3 0-.5-.2-.6-.5-.1-.4.1-.7.4-.8 1.4-.4 2.8-.7 4.3-.8.4 0 .7.2.7.6 0 .4-.2.7-.6.7-1.5.1-2.8.4-4 .8h-.2zM123.2 80.5c-.3 0-.6-.2-.6-.5-.1-.4.1-.7.5-.8 1.4-.4 2.8-.6 4.4-.7.4 0 .7
.3.7.6 0 .4-.3.7-.6.7-1.5.1-2.8.3-4.1.7h-.3zM171.2 80.1c-.3 0-.6-.2-.7-.5-.1-.4.2-.7.5-.8 1.4-.3 2.9-.4 4.5-.4 1.5 0 2.9.1 4.2.4.4.1.6.4.5.8-.1.4-.4.6-.8.5-1.2-.2-2.5-.4-4-.4-1.6 0-2.9.1-4.2.4.1 0 0 0 0 0zM132.7 80h-.1c-.3-.1-.7-.1-1-.1-.4 0-.6-.4-.6-.7 0-.4.4-.6.7-.6.4 0 .7.1 1.1.2.4.1.6.4.5.8 0 .2-.3.4-.6.4zM225.6 79.9h-.1c-.3-.1-.7-.1-1-.1-.4 0-.6-.4-.6-.7 0-.4.4-.6.7-.6.4 0 .7.1 1.1.1.4.1.6.4.6.8-.1.3-.4.5-.7.5z" fill="#D7D7DB" fill-rule="nonzero"/><g fill-rule="nonzero" fill="#D7D7DB"><path d="M12 200.6c4.3.1 8.5-1 12.1-3.3 6.8-4 15.3-4 22.2 0 7.5 4.4 16.8 4.4 24.3 0 3.3-2.1 7.2-3.1 11.1-3 .6 0 1.1-.5 1.1-1.1 0-.6-.5-1.1-1.1-1.1-4.3-.1-8.5 1-12.1 3.3-6.8 4-15.3 4-22.2 0-7.5-4.4-16.8-4.4-24.3 0-3.3 2.1-7.2 3.1-11.1 3-3.6.1-7.2-.8-10.3-2.6-.3.7-.7 1.3-1.2 1.9 3.5 2 7.5 3 11.5 2.9zM61.3 208.7c-.3 0-.6-.2-.7-.6-.1-.4.2-.7.5-.8 3.4-.6 5.5-1.9 7.5-3.3.3-.2.7-.1.9.2.2.3.1.7-.2.9-2.1 1.3-4.4 2.8-8 3.4v.2zM52.8 208.5h-.2c-.4-.1-.7-.2-1.1-.3-.4-.1-.6-.5-.4-.8.1-.4.5-.6.8-.4.3.1.6.2 1 .3.
4.1.6.4.5.8-.1.2-.3.4-.6.4zM47.8 206.5c-.1 0-.2 0-.3-.1-.7-.4-1.4-.8-2-1.3-.5-.3-1.1-.7-1.6-1-.3-.2-.4-.6-.2-.9.2-.3.6-.4.9-.2.6.3 1.1.7 1.6 1 .6.4 1.3.8 2 1.2.3.2.4.6.2.9-.1.3-.3.4-.6.4zM74.7 202.4c-.3 0-.5-.2-.6-.5-.1-.4.1-.7.4-.8 1.4-.4 2.8-.7 4.3-.8.4 0 .7.2.7.6 0 .4-.2.7-.6.7-1.5.1-2.8.4-4 .8h-.2z"/><path d="M29.8 202c-.3 0-.6-.2-.7-.5-.1-.4.2-.7.5-.8 1.4-.3 2.9-.4 4.5-.4 1.5 0 2.9.1 4.2.4.4.1.6.4.5.8-.1.4-.4.6-.8.5-1.2-.2-2.5-.4-4-.4-1.6 0-2.9.1-4.2.4.1-.1 0 0 0 0zM84.2 201.8h-.1c-.3-.1-.7-.1-1-.1-.4 0-.6-.4-.6-.7 0-.4.4-.6.7-.6.4 0 .7.1 1.1.1.4.1.6.4.6.8-.1.2-.4.5-.7.5z"/></g><path d="M112.1 196.9c-.2-.2-.5-.3-.8-.1-3.1 2-6.6 3.2-10.3 3.5-1.4.2-2.8.2-4.2 0 2.2-.7 4.2-1.7 5.1-2.9 1.1-1.5.4-2.4.1-2.7-1-.9-3.1-.7-4.7.4-1.2.9-3.2 3-2.8 4.7-1.8.4-3.6.7-5.4.8-.3 0-.6.2-.6.6 0 .3.2.6.6.6 2-.1 4-.4 6-.9 1 .8 2.9 1 6 .7 7-.8 10.7-3.6 10.8-3.8.3-.2.4-.6.2-.9zm-14.2-.9c.7-.5 1.5-.8 2.3-.8.4 0 .7.1 1 .3.3.3 0 1-.2 1.3-.8 1.2-3 2.1-5.4 2.8-.3-1 1-2.6 2.3-3.6z" fill="#D7D7DB" fill-rule="no
nzero"/><g fill-rule="nonzero" fill="#D7D7DB"><path d="M77 97.8c-14.9 0-27 12.1-27 27 0 4 .9 8 2.6 11.6.7 1.7 2.6 2.6 4.4 1.9 1.7-.7 2.6-2.6 1.9-4.4-.1-.2-.1-.3-.2-.4-1.3-2.7-2-5.7-2-8.7 0-11.2 9-20.3 20.2-20.3s20.3 9 20.3 20.2c0 3-.7 6-2 8.8-.8 1.7-.1 3.7 1.6 4.5 1.7.8 3.7.1 4.5-1.6 6.4-13.5.7-29.6-12.7-36-3.5-1.8-7.5-2.7-11.6-2.6z"/><path d="M89.8 118.3c-.8-.5-1.8-.3-2.3.5l-8.3 13.1c-3.6-1.2-7.4.8-8.5 4.3-1.2 3.6.8 7.4 4.3 8.5 2 .6 4.2.3 5.9-.8.7-.5 1.3-1.1 1.8-1.8 1.8-2.6 1.5-6.1-.7-8.4l8.3-13.1c.5-.8.3-1.8-.5-2.3z"/></g><g fill-rule="nonzero"><path d="M251.2 231.9l-13.4-1.7c-.5-.1-.9-.5-.9-1l-1.1-27.6-2.6 1.1c-.1.1-.3.1-.4.1-.2 0-.5-.1-.6-.2-.3-.2-.4-.6-.3-1l.8-3.6-3.6.6h-.2c-.3 0-.7-.2-.9-.5-.2-.3-.2-.8.1-1.1l4.2-5.6c.1-.1.2-.2.4-.3l7-3.3c.1-.1.3-.1.4-.1.2 0 .3 0 .4.1l7.8 3.9c.4.2.6.6.5 1 0 .4-.3.8-.7.9l-4.2 1.3 2 4c.2.3.1.7-.1 1-.2.3-.5.4-.8.4h-.2l-3.1-.5 10.3 30.8c.1.3 0 .7-.2 1-.2.2-.5.4-.8.4.3-.1.2-.1.2-.1z" fill="#F5F5F7"/><path d="M240.2 188.8l7.8 3.9-5.3 1.7 2.5 5-4.7-.8
10.9 32.4-13.4-1.7-1.1-29-3.9 1.7 1.1-5-5 .8 4.2-5.6 6.9-3.4zm0-2c-.3 0-.6.1-.9.2l-7 3.3c-.3.1-.5.3-.7.6l-4.2 5.6c-.5.7-.5 1.5-.1 2.2.4.6 1 1 1.7 1h.3l2.1-.3-.5 2.1c-.2.7.1 1.5.7 2 .4.3.8.5 1.3.5.3 0 .5-.1.8-.2l1.2-.5 1 26.1c0 1 .8 1.8 1.8 1.9l13.4 1.7h.2c.6 0 1.2-.3 1.5-.7.4-.5.6-1.3.3-1.9l-9.8-29.2 1.4.3h.3c.6 0 1.2-.3 1.6-.8.5-.6.5-1.4.2-2.1l-1.5-2.9 3.1-1c.8-.2 1.3-.9 1.4-1.7.1-.8-.4-1.6-1.1-1.9l-7.8-3.9c-.1-.3-.4-.4-.7-.4z" fill="#D7D7DB"/></g><g fill-rule="nonzero"><path d="M199.7 227.4c-.2 0-.5-.1-.7-.3-.2-.2-.3-.4-.3-.7l-1.1-24.8-2.6 1.1c-.1.1-.3.1-.4.1-.2 0-.5-.1-.6-.2-.3-.2-.4-.6-.3-1l.8-3.6-3.6.6h-.2c-.3 0-.7-.2-.9-.5-.2-.3-.2-.8.1-1.1l4.2-5.6c.1-.1.2-.2.4-.3l7-3.3c.1-.1.3-.1.4-.1.2 0 .3 0 .4.1l7.8 3.9c.4.2.6.6.5 1 0 .4-.3.8-.7.9l-4.2 1.3 2 4c.2.3.1.7-.1 1-.2.3-.5.4-.8.4h-.2l-3.2-.6 7.4 25.8c.1.3 0 .6-.1.9-.2.2-.5.4-.8.4.2.1-10.2.6-10.2.6z" fill="#F5F5F7"/><path d="M202 188.8l7.8 3.9-5.3 1.7 2.5 5-4.7-.8 7.8 27.3-10.3.6-1.1-26.2-3.9 1.7 1.1-5-5 .8 4.2-5.6 6.9-3.4zm0-2c-.
3 0-.6.1-.9.2l-7 3.3c-.3.1-.5.3-.7.6l-4.2 5.6c-.5.7-.5 1.5-.1 2.2.4.6 1 1 1.7 1h.3l2.1-.3-.5 2.1c-.2.7.1 1.5.7 2 .4.3.8.5 1.3.5.3 0 .5-.1.8-.2l1.2-.5 1 23.3c0 .5.3 1 .7 1.4.4.3.8.5 1.3.5h.1l10.3-.6c.6 0 1.2-.3 1.5-.8.3-.5.5-1.1.3-1.7l-6.9-24.3 1.6.3h.3c.6 0 1.2-.3 1.6-.8.5-.6.5-1.4.2-2.1l-1.5-2.9 3.1-1c.8-.2 1.3-.9 1.4-1.7.1-.8-.4-1.6-1.1-1.9l-7.8-3.9c-.2-.2-.5-.3-.8-.3z" fill="#D7D7DB"/></g><path d="M201.4 210.6l1.4 17.5" stroke="#D7D7DB" stroke-linecap="round" stroke-linejoin="round"/><path d="M203.6 221.7l2 11.7" stroke="#EAEAEE" stroke-linecap="round" stroke-linejoin="round"/><path d="M240.2 207.5l5 19" stroke="#D7D7DB" stroke-linecap="round" stroke-linejoin="round"/><path d="M236.5 220.6l1.2 10.9" stroke="#EAEAEE" stroke-linecap="round" stroke-linejoin="round"/><g transform="translate(153 210)" fill-rule="nonzero"><ellipse fill="#EDEDF0" cx="72.1" cy="27" rx="71.5" ry="7.9"/><ellipse fill="#F9F9FA" cx="72.2" cy="25.5" rx="56.8" ry="6.3"/><path d="M20.7 24.2l-.2-.2S12.4 7.7 28.1
4.9c14-2.5 20.1 11.8 20.1 11.8s1.4-8.4 9.8-7.1c8.3 1.3 14.9 14.3 14.9 14.3h.2" fill="#F9F9FA"/><path d="M79.4 19.7h-1.1c-.3 0-.6-.2-.6-.5s.2-.6.5-.6h1.1c.3 0 .6.2.6.5 0 .4-.2.6-.5.6zm-5.6.2h-.6c-.2 0-.4-.1-.5-.3-.1-.2-.6-1.1-1.4-2.3-.2-.3-.1-.6.1-.8.3-.2.6-.1.8.1.6.9 1.1 1.7 1.3 2.1h.3c.3 0 .6.2.6.5s-.3.7-.6.7zm-53 1.4l-1.5.1c-.3 0-.6-.2-.6-.5s.2-.6.5-.6h.6c-.1-.3-.3-.6-.4-1-.1-.3 0-.6.3-.7.3-.1.6 0 .7.3.4 1 .7 1.7.7 1.7.1.2.1.4 0 .5 0 .1-.2.2-.3.2zm-1.9-6.1c-.3 0-.5-.2-.6-.5-.1-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.3-.1.6-.5.6zM48 13c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.4.4.7.6 1 .1.3 0 .6-.2.8-.2 0-.3.1-.4.1zm17.9-2.1c-.1 0-.3 0-.4-.1-2.5-2.2-5-3.5-7.3-3.9-1.6-.2-3.1-.1-4.3.3-.3.1-.6 0-.7-.3-.1-.3 0-.6.3-.7 1.4-.5 3.1-.7 4.9-.4 2.6.4 5.2 1.8 7.9 4.1.2.2.3.6 0 .8-.1.1-.2.2-.4.2zM44.8 8.4c-.2 0-.3-.1-.4-.2-.7-.8-1.5-1.6-2.3-2.3-.2-.2-.3-.6-.1-.8.2-.2.6-.3.8-.1.9.7 1.7 1.5 2.4 2.4.2.2.2.6-.1.8 0 .1-.2.2-.3.2zM21.8 5c-.2 0-.3-.1-.4-.2
-.2-.2-.2-.6.1-.8 1.7-1.4 4-2.4 6.8-2.9 2.2-.4 4.3-.4 6.3 0 .3.1.5.3.4.6-.1.3-.3.5-.6.4-1.9-.3-3.9-.3-5.9 0-2.7.5-4.8 1.4-6.3 2.7-.1.2-.3.2-.4.2z" fill="#D7D7DB"/><g><path d="M119.8 27l.2-.2s8.2-16.3-7.5-19.2C98.5 5 92.3 19.2 92.3 19.2S91 10.8 82.6 12c-8.3 1.2-15 14.2-15 14.2h-.2" fill="#F9F9FA"/><path d="M60.6 21.4c0-.3.3-.5.6-.5l1.1.1c.3 0 .5.3.5.6s-.3.5-.6.5l-1.1-.1c-.3 0-.5-.3-.5-.6zm5.5.3c0-.3.3-.5.6-.5h.3c.2-.4.7-1.1 1.3-2 .2-.3.5-.3.8-.1.3.2.3.5.1.8-.8 1.2-1.3 2-1.4 2.3-.1.2-.3.3-.5.3h-.6c-.3-.3-.6-.5-.6-.8zm53.2 2.1c-.1-.2-.1-.4 0-.5 0 0 .3-.6.7-1.7.1-.3.4-.4.7-.3.3.1.4.4.3.7-.1.4-.3.7-.4 1h.6c.3 0 .5.3.5.6s-.3.5-.6.5l-1.5-.1c-.1 0-.3-.1-.3-.2zm2.2-5.8c-.3-.1-.5-.3-.5-.6.1-.4.1-.7.1-1.1 0-.3.3-.5.6-.5s.5.3.5.6c0 .4-.1.8-.2 1.1.1.3-.1.5-.5.5.1 0 .1 0 0 0zm-29.2-2.6c-.3-.1-.4-.5-.2-.8.2-.3.3-.6.6-1 .2-.3.5-.3.8-.2.3.2.3.5.2.8-.2.4-.4.7-.5.9-.1.2-.3.3-.5.3-.2.1-.3.1-.4 0zm-18.1-2.3c-.2-.2-.2-.6.1-.8 2.7-2.3 5.3-3.7 7.9-4.1 1.8-.3 3.5-.1 4.9.4.3.1.4.4.3.7-.1.3-.4.4-.7.3-1.2-.5-2
.7-.6-4.3-.4-2.4.3-4.8 1.6-7.4 3.8-.1.1-.3.1-.4.1-.1.1-.3.1-.4 0zm21.2-2.3c-.2-.2-.3-.6 0-.8.8-.9 1.6-1.7 2.5-2.4.2-.2.6-.2.8.1.2.2.2.6-.1.8-.8.7-1.6 1.4-2.3 2.3-.1.1-.3.2-.4.2-.3-.1-.4-.1-.5-.2zm23-3.2c-1.5-1.3-3.6-2.2-6.3-2.7-2-.4-4-.4-5.9-.1-.3 0-.6-.2-.6-.5-.1-.3.2-.6.5-.6 2-.3 4.1-.3 6.3.1 2.9.5 5.1 1.5 6.8 3 .2.2.3.6.1.8-.1.1-.3.2-.4.2-.3-.1-.4-.1-.5-.2z" fill="#D7D7DB"/></g></g><g transform="translate(159 16)" fill-rule="nonzero"><path d="M125.2 89.7c-.8-4.6-5-4.7-14.4-4.7-7.5 0-17.8-.1-23.3-2.4-9.6-4-17.5-13.4-17.6-13.6-.6-.7-1.4-1.2-2.3-1.5l-.6 1.2c2.7 2.8 5 5.7 7 8.6 3.3 2.9 7.6 6 12.2 7.9 6.1 2.5 16.8 2.6 24.5 2.6 8.4.1 10.8.1 11.1 1.9.3 1.7-2 3.5-6.5 6.6-2.2 1.6-5.9 4.2-6.1 5.1 0 3.4-5.1 9.2-12.9 10-2.6.3-4.8.3-6.5.3-3.2.1-5.2.1-7.6 1.4-.3.2-.8.3-1.3.4-.4 1.1-.9 2.4-1.5 3.8 1.9 0 3.4-.3 4.4-.9 1.6-.9 2.8-.9 6-1 1.8 0 4-.1 6.8-.3 8.4-.8 14.8-6.8 15.8-12 1-.9 3.3-2.6 4.8-3.7 5.2-3.4 8.6-5.8 8-9.7z" fill="#F9F9FA"/><path d="M34.7 63.9h0zM37.6 63.9h-.4.4zM42.2 67.5c.8-1.1 1.
7-2.3 2.6-3.4-.9 1.2-1.8 2.3-2.6 3.4zM40.4 63.6H40c.1.1.2.1.4 0zM43.2 63.3c-.1 0-.3 0-.4.1.1-.1.3-.1.4-.1z" fill="#FFF"/><path d="M62.4 149.2c-.8-1-1.6-2-2.4-3.1-3.6 1-7.5 1.5-11.2 1.5-.8 0-1.6 0-2.4-.1.2.2.3.5.4.8v.1c0 .1.1.2.1.3v.2c.1.3.1.6 0 .9v1.2h1.5c3.2 0 6.6-.4 9.8-1.1.6.7 1.1 1.4 1.7 2.2.5-1.1 1.3-2.2 2.5-2.9z" fill="#F9F9FA"/><path d="M59.6 143.9c-.1 0-.3.1-.4.1.1 0 .3-.1.4-.1z" fill="#FFF"/><path d="M27.9 147c-.7-2.4-1.3-5.4-1.9-8.9-1.6-2.2-2.9-4.8-3.7-7.8-.9 0-1.9-.3-2.7-.8-1.9-1.1-2.9-3.2-2.7-5.4l-3.7-9.6c-.3-.8-.3-1.7 0-2.5-.8-3-1.3-7.3-.4-12.6 1.9-10.4 8.8-19.8 20.6-28.1.1-.4.3-.8.7-1.1l3.3-3c.4-.4 1-.6 1.5-.6.3 0 .6.1.9.2.2-.3.5-.7.7-1-2 .2-4 .3-5.9.3-14.8 0-23-6.5-23.3-18.3 0-2.7.3-5.5 1-8.4-2.9-2.4-4.8-5.3-5.7-8.5-.5-.9-1-1.9-1.3-2.9-2.4-7.5 1.8-15.5 9.3-17.9 1.4-.4 2.8-.7 4.3-.7 1.7 0 3.4.3 5 .9 2-.4 4-.6 6.1-.6h1.2c.6 0 1.2.1 1.8.1 3.3-2.2 6.7-3.9 10.1-4.9 3.7-1.1 7.5-1.7 11.3-1.7 7.4 0 14.8 2.3 20.9 6.4 13 2.2 22.3 11.2 22.3 21.6 0 10.2-8.8 18.9-21.5 21.4-2.1 1.6
-4.5 3-7 4.4-1.6 2.9-3.1 5.8-4.4 8.6.7.5 1.4 1.3 1.7 2.4.3.9.4 1.8.4 2.4.1 0 .1.1.2.1 0 .1 2.6 3.2 6.7 6.6-2-2.9-4.3-5.8-7-8.6l.6-1.2c1.2-2.6 2.5-5.2 4-7.9 2.1-1.2 4.1-2.4 5.9-3.7 13.9-3 23.4-12.9 23.4-24.5 0-11.8-10.2-22.1-24.4-24.7C69.6 2.3 61.8 0 54 0c-4.1 0-8.3.6-12.3 1.9-3.4 1.1-6.7 2.6-10 4.7h-2.2c-1.9 0-3.9.2-5.8.5-1.7-.5-3.5-.8-5.3-.8-1.8 0-3.5.3-5.3.8-4.5 1.4-8.2 4.5-10.3 8.7C.6 20 .2 24.7 1.6 29.2c.3 1.1.8 2.1 1.3 3.2.9 3.1 2.6 5.9 5.1 8.4-.5 2.5-.7 4.9-.6 7.2.1 5.4 1.7 9.9 4.7 13.5.4.4.7.8 1.1 1.2.8.8 1.6 1.5 2.6 2.1 3.6 2.5 8.3 4.1 13.9 4.6-11.9 8.6-19 18.5-21 29.5-1 5.4-.5 9.9.2 13.2-.2 1.2-.1 2.5.4 3.7l3.4 9c0 3.1 1.6 6 4.3 7.7.6.4 1.2.6 1.8.9.8 2.3 1.9 4.4 3.1 6.2.7 4 1.4 7.4 2.2 9.9 1.3-1.2 2.4-2.1 3.8-2.5z" fill="#F9F9FA"/><circle fill="#FFF" transform="rotate(-26.565 9.428 30.382)" cx="8.978" cy="29.932" r="1"/><path d="M7.2 22.9c-.1 1.5 0 3.1.5 4.7-.5-1.6-.7-3.2-.5-4.7zM22.6 128h.4-.6.2zM25.1 131.3c.2.6.4 1.2.7 1.8-.3-.6-.5-1.2-.7-1.8-.1 0 0 0 0 0zM22.7 119.8v-.7l
-1.4-1 1.4 1.7zM21.5 127.8c-.2-.1-.5-.2-.7-.3.2.2.5.3.7.3zM22.3 128c-.2 0-.5-.1-.7-.1.2 0 .5.1.7.1zM15.3 113v-.1.1zM15.3 113.3v-.1.1zM19.2 124.9v-.5c0 .2-.1.3 0 .5zM19.2 124.4v-.3.3zM50.5 145.3h-.1.1zM53.9 145h-.3.3zM28.5 138.9v-.1c-.1 0-.1 0 0 .1zM57 144.5c-.2 0-.3.1-.5.1.1 0 .3-.1.5-.1zM58.3 144.2c-.2 0-.3.1-.5.1.2 0 .4 0 .5-.1zM55.5 144.8c-.1 0-.3.1-.4.1.1-.1.3-.1.4-.1zM38.9 145.2c0 .1 0 .1 0 0 0 .1 0 .1 0 0zM48.8 145.4h.1-.2c.1-.1.1 0 .1 0zM41.5 144.6h-.2.2zM44 145h-.2.2zM95.7 31.4c0 1.8-.3 3.5-.9 5.1.6-1.6.9-3.3.9-5.1zM14.8 53.7c0-.1-.1-.2-.1-.3 0 .1 0 .2.1.3zM15.5 55.4c0-.1-.1-.2-.1-.3 0 .1.1.2.1.3zM16.3 56.7c-.1-.1-.1-.2-.1-.2 0 .1.1.2.1.2zM17.4 58.1c-.1-.1-.1-.2-.2-.2.1.1.2.1.2.2zM14.3 52c0-.1 0-.1-.1-.2 0 .1 0 .1.1.2zM14.4 41.2c0-.1.1-.3.1-.4 0 .1-.1.3-.1.4zM13.9 50.1v-.4.4zM13.8 45.9v-.5.5zM30.5 63.7h-.3.3zM18.5 59.2l-.1-.1s.1 0 .1.1zM28.6 63.5c-.1 0-.2 0-.4-.1.1 0 .3.1.4.1zM14.1 38l-.3-.3.3.3zM24.7 62.6c-.1 0-.2 0-.2-.1.1 0 .2 0 .2.1zM26.5 63.1c-.1 0-.2-.1-.3-.1.1 0 .2 0
.3.1zM19.9 60.3c-.1-.1-.2-.1-.3-.2.2.1.3.1.3.2zM23 61.9c-.1 0-.2-.1-.3-.1.1 0 .2.1.3.1zM8.3 29s0-.1-.1-.1c0 0 0 .1.1.1zM27.7 12.4c.4 0 .7-.1 1.1-.1-.3 0-.7 0-1.1.1zM18.1 11.9h.8-.8zM25.5 12.6h.2-.2zM30.3 12.2h-.7 1.8-1.1zM93.7 23.9c.2.4.5.9.7 1.4-.3-.5-.5-.9-.7-1.4zM89.5 18.7l.8.8c-.2-.3-.5-.6-.8-.8zM91.5 20.8c.5.5.9 1.1 1.3 1.7-.4-.6-.8-1.2-1.3-1.7zM10.6 34.1c-.1-.2-.2-.4-.3-.5.1.2.2.4.3.5zM9.3 31.6c-.1-.2-.2-.5-.2-.7.1.2.1.4.2.7zM12.9 37l-.3-.3.3.3zM17 12.1c.2 0 .5-.1.7-.1-.2 0-.5.1-.7.1zM11.9 35.9s0-.1 0 0c0-.1 0 0 0 0zM9.9 32.9l-.3-.6.3.6zM32.8 63.9h-.4.4zM11.4 14.7c.6-.5 1.2-1 1.9-1.3-.7.4-1.3.8-1.9 1.3zM15.6 12.4c.4-.1.7-.2 1.1-.3-.4.1-.8.2-1.1.3zM81.2 139.8h-1.1 1.1zM72.5 139.6c-.2 0-.4 0-.6-.1.2 0 .4 0 .6.1zM82.7 139.7c-.3 0-.6 0-1 .1.4-.1.7-.1 1-.1zM84.3 139.6c-.3 0-.6.1-1 .1.3-.1.6-.1 1-.1zM76.3 139.8h-.5.5zM74.4 139.7h-.6.6zM78.2 139.9h1.5-1.5zM92 138.5c-.3.1-.6.1-.9.2.3-.1.6-.1.9-.2zM90.6 138.8c-.3.1-.6.1-.9.1.3 0 .6-.1.9-.1zM85.9 139.4c-.3 0-.7.1-1 .1.3 0 .6 0 1-.1zM93.
4 138.2c-.3.1-.6.1-.9.2.3-.1.6-.1.9-.2zM89.2 139c-.4.1-.8.1-1.1.2.3-.1.7-.2 1.1-.2zM87.7 139.2c-.5.1-1 .1-1.4.2.5-.1 1-.1 1.4-.2zM69.2 121.2c-.3-.1-.5-.1-.8-.2l-1.3.8c.3.2.6.3.8.5l.6.3.7-1.4zM23.3 107.4v-.1.1zM23.2 105.3v-.1.1zM23.2 106.4v-.1.1zM71.5 141.8c.9 1.7 1.7 3.3 2.2 4.7-.5-1.4-1.3-3-2.2-4.7zM65.9 150c-1.8-2.3-3.6-4.6-5.1-6.4 1.5 1.8 3.2 4.1 5.1 6.4zM95 137.9l-1.2.3c.4-.2.8-.2 1.2-.3zM65 117.8c-.8.4-1.5.5-2.4.7.8.6 1 .9 1.9 1.5l1.3-.8c-.2-.2-.3-.4-.4-.6-.2-.2-.3-.4-.4-.8zM19.2 125c.1 1 .7 1.9 1.6 2.5-.9-.5-1.5-1.5-1.6-2.5zM38.9 144.1c0-.1 0-.1 0 0 0-.1 0-.1 0 0zM22.4 121.2l-2-2.5 1 2.7c.3-.2.6-.2 1-.2zM25.9 133.3c.7 1.4 1.4 2.7 2.3 3.9 0 .2.1.4.1.6 0-.2-.1-.4-.1-.6-.9-1.2-1.7-2.5-2.3-3.9zM96.3 137.5l-1.2.3c.5-.1.9-.2 1.2-.3zM105.8 134c-.2.1-.3.2-.5.3.2-.1.4-.2.5-.3zM106.2 133.7c-.1.1-.2.2-.3.2.1 0 .2-.1.3-.2zM105.2 134.4c-.1.1-.3.2-.4.2.1 0 .2-.1.4-.2zM106.6 133.5l-.2.2c0-.1.1-.2.2-.2zM104.5 134.8c-.1.1-.3.1-.4.2.1-.1.2-.2.4-.2zM106.8 133.2c0 .1-.1.1-.1.2 0-.1.1-.2.1-.2zM106
.9 132.9c0 .1 0 .1-.1.2.1-.1.1-.1.1-.2zM103.8 135.1c-.2.1-.3.1-.5.2.1 0 .3-.1.5-.2zM106.9 132.6v0zM95.8 130.5h.2-.2zM98.7 136.9c-.2.1-.5.1-.7.2.2-.1.5-.1.7-.2zM97.5 137.2c-.3.1-.5.1-.8.2.3 0 .6-.1.8-.2zM99.8 136.6c-.2.1-.5.1-.7.2.3-.1.5-.2.7-.2zM101 136.2c-.3.1-.5.2-.8.3.2-.1.5-.2.8-.3zM102.1 135.8l-.9.3.9-.3zM103 135.4c-.2.1-.4.2-.6.2.2 0 .4-.1.6-.2zM59.3 111.8h-.1.3-.2zM58.4 111.9h.2-.2zM57.6 112.2c-.1.1-.2.2-.3.2.1 0 .2-.1.3-.2zM74.2 116.6v0zM61 112.2c.1 0 .1.1.2.1-.1 0-.2 0-.2-.1zM65.4 114l.1-.1-.1.1zM61.6 112.8l.2.2c0-.1-.1-.2-.2-.2zM62.7 115.2c.7-.2 1.5-.4 2.3-.5-.8.1-1.5.3-2.3.5 0-.5-.1-1.1-.4-1.6.3.5.4 1 .4 1.6zM60.1 111.9h0zM64.3 111.8c.1-.1.1-.2.2-.3l-1.2-.3c.3.3.5.6.7.9l.3-.3z" fill="#FFF"/><path d="M79.1 113.9c-.5 0-1 0-1.5-.1-.3.9-.8 1.9-1.2 2.9 0 .4-.1.9-.3 1.3l-1.9 4.4c0 .1 0 .2-.1.3 0 .1 0 .1-.1.2.4.2.8.3 1.1.5 10.3 4.3 18.9 4.8 24.5 5.2 4.9.3 8.1.5 9.2 3.2.3.9.2 1.8-.3 2.7-2.3 3.4-17.1 7.7-30.4 7.7-1.4 0-2.8 0-4.1-.1.6 1.1 1 2.1 1.4 3 .1 0 .1 0 .2-.1.6-.1 3.7-.3 5.5
.4 7.3-.3 13.6-1.7 16.9-2.6 10.5-2.8 12.4-5.5 13-6.5 1.2-1.8 1.4-3.9.7-5.8-1.9-4.7-6.8-5-12.1-5.3-5.1-.3-12.6-.8-21.5-4.1l.7-1.7c.2-.6.4-1.1.5-1.7 0-.1 0-.1.1-.2.6-1.3 1.1-2.6 1.5-3.8-.5.2-1.1.2-1.8.2z" fill="#F9F9FA"/><path d="M56.8 110.8c.1.3.1.5.2.8 0-.3-.1-.5-.2-.8zM66.7 112c-.3.6-.6 1-.7 1.2.1-.2.4-.6.7-1.2z" fill="#FFF"/><path d="M58.4 107.7c2.3.6 4.7 1.2 7 1.8 1.7-4.3 3.2-13.6-7-26-1.7 7.8-1.7 15.9 0 24.2z" fill="url(#a)"/><path d="M81.2 111.4c2.9-1.6 5.3-1.6 8.6-1.7 1.8 0 3.8-.1 6.3-.3 6.8-.7 10.9-5.8 10.9-7.8 0-.4.1-.7.3-1.1-1.7.2-3.2.2-4.6.2-6.7 0-10.6-1.5-10.8-1.6-.3-.1-.4-.4-.3-.7.1-.3.4-.4.7-.3.1 0 6 2.4 15.9 1.2 1.2-1.2 3.1-2.7 5.8-4.6 1.8-1.3 4.4-3.1 5.3-4.2-1.5-.3-5.2-.3-8.6-.3-8-.1-18.9-.1-25.4-2.8C78.5 84.6 72.6 79.5 69 76c11 13.8 11.5 25.8 9.7 33.9 0 0-.2.7-.5 1.8 1.5.1 2.5 0 3-.3z" fill="url(#b)"/><path d="M28.3 16.1c1.8-1.9 3-3.1 3.9-3.7-.2 0-.5 0-.7-.1H29c-.4 0-.7 0-1.1.1-.7.1-1.4.1-2.1.2h-.2l-1.5.3c1.5.7 3 1.8 4.2 3.2z" fill="url(#c)"/><path d="M60.1 146.8s-4.
3 5.9-3.1 9c1.2 3.1 9.3 12.9 9.3 12.9s-1.2 8.1-.8 9.6c.4 1.5 4.2 5.8 12.7 2.5s8.8-8.3 8.9-12.3c0-1.6.3-4.2.1-7.8 0-.3 3.5-4.3 1.7-11.3-.8-3.1-2.5-4.3-2.8-4.3-1.1 0-.4 0-.7-.6-1.1-2.2-25.3 2.3-25.3 2.3z" fill="#F9F9FA"/><path d="M8.9 30.2c.1.2.1.4.2.7.1.2.1.5.2.7.1.2.2.5.3.7l.3.6c.1.2.2.5.4.7.1.2.2.4.3.5.4.6.8 1.2 1.2 1.7.2.3.5.5.7.8l.3.3c.3.3.5.5.8.7l.3.3s.1 0 .1.1c.4-1 .8-1.9 1.3-2.7-2.6-.8-4.9-2.6-6.4-5.1z" fill="url(#d)"/><path d="M16.6 30.2c-.3.5-1 .7-1.5.3-.5-.3-.7-1-.3-1.5.1-.1 1.8-2.7 5.1-2.7h.4c-.6-.2-1.1-.8-1.1-1.5l.1-3.5c0-.9.7-1.5 1.6-1.5.9 0 1.5.7 1.5 1.6l-.1 2.4c.9-1.3 1.9-2.5 2.9-3.7-.1-.2-.2-.5 0-.7 1.1-1.4 2.1-2.5 3-3.4-1.2-1.4-2.7-2.4-4.3-3.2-1.5-.7-3.1-1-4.8-1h-1.5c-.2 0-.5.1-.7.1-.1 0-.2 0-.3.1-.4.1-.7.2-1.1.3-.8.2-1.5.6-2.2 1-.7.4-1.4.8-1.9 1.3-1.5 1.3-2.6 2.9-3.4 4.7-.4 1.1-.7 2.3-.8 3.5-.1 1.5 0 3.1.5 4.7.1.5.3.9.5 1.3 0 0 0 .1.1.1l.6 1.2c1.5 2.5 3.8 4.3 6.5 5.2.7-1.3 1.4-2.2 1.4-2.3.1-.1.2-.2.3-.2.6-1.4 1.4-2.9 2.2-4.3-1.7.3-2.6 1.6-2.7 1.7z" fill="#F9F9FA"/><
path d="M20.9 19.8c-.9 0-1.6.7-1.6 1.5l-.1 3.5c0 .7.4 1.3 1.1 1.5h-.4c-3.4 0-5 2.5-5.1 2.7-.3.5-.2 1.2.3 1.5.5.3 1.2.2 1.5-.3 0 0 .9-1.3 2.6-1.6.9-1.6 1.9-3.2 3.1-4.7l.1-2.4c0-.9-.6-1.6-1.5-1.7z" fill="url(#e)"/><path d="M77.5 13.6c2.2 0 4.2.6 6 1.6-1.1-.8-2-1.3-2.6-1.6-1.9-.7-3.9-1.2-6-1.6.8.9 1.6 1.6 2.6 1.6z" fill="url(#f)"/><path fill="url(#g)" d="M19.1 113.1v-.1l-.1.1"/><path d="M68 122.3c.2.1.4.2.6.4-.2-.2-.4-.3-.6-.4z" fill="url(#h)"/><path d="M46.2 67.8c.6 0 1.3 0 2-.1 6.3-.4 13.8-2.8 13.9-2.9.2-.1.5-.1.7-.1h.3c1.3-2.7 2.6-5.2 3.8-7.5-3.4 1.7-10.3 4.6-22 6.8-.9 1.1-1.7 2.2-2.6 3.4.9.3 2.2.4 3.9.4z" fill="url(#i)"/><path d="M24.7 143.9s-4.7 5.6-3.8 8.8c.9 3.2 8.4 13.7 8.4 13.7s-1.8 8.1-1.5 9.6c.3 1.5 3.8 6.1 12.6 3.5 8.8-2.6 8.9-6.7 9.3-10.7.4-4 1-16.3.7-18.8-.3-2.5-25.7-6.1-25.7-6.1z" fill="#F9F9FA"/><path d="M69.7 127.3c.1-.2.1-.5.3-.8l-.3.6v.2z" fill="url(#j)"/><path d="M65.9 150c.8.3 2.4.4 5.3-.3 1.7-.4 2.7-.9 3.3-1.3l-.6-1.8c-.6-1.4-1.3-3.1-2.2-4.8-2.1-3.4-3.7-6.1-3.7-6.
1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2 0 0 1.1 1.8 2.6 4.3.2 0 .4.1.6.1.2 0 .4 0 .6.1.4 0 .9.1 1.3.1h.6c.4 0 .9.1 1.4.1h6c.3 0 .6 0 1-.1h.6c.3 0 .6-.1 1-.1h.5c.4 0 .7-.1 1-.1h.4c.5-.1 1-.1 1.4-.2h.3c.4-.1.8-.1 1.1-.2.2 0 .3-.1.5-.1.3 0 .6-.1.9-.1.2 0 .4-.1.5-.1.3-.1.6-.1.9-.2.2 0 .3-.1.5-.1.3-.1.6-.1.9-.2.1 0 .3-.1.4-.1l1.2-.3h.1l1.2-.3c.1 0 .3-.1.4-.1.3-.1.5-.1.8-.2.2 0 .3-.1.4-.1.2-.1.5-.1.7-.2.1 0 .3-.1.4-.1.2-.1.5-.1.7-.2.1 0 .3-.1.4-.1.3-.1.5-.2.8-.3.1 0 .1 0 .2-.1l.9-.3c.1 0 .2-.1.2-.1.2-.1.4-.2.6-.2.1 0 .2-.1.3-.1.2-.1.3-.1.5-.2.1 0 .2-.1.3-.1.2-.1.3-.1.4-.2.1 0 .2-.1.2-.1.2-.1.3-.2.4-.2.1 0 .1-.1.2-.1.2-.1.4-.2.5-.3 0 0 .1 0 .1-.1.1-.1.2-.2.3-.2l.1-.1.2-.2.1-.1c0-.1.1-.1.1-.2 0 0 0-.1.1-.1 0-.1 0-.1.1-.2v-.1-.2c-.7-1.8-4.7-1.6-10.9-2.1h-.2c-5.6-.5-12.9-1.5-21.4-5.1-.4-.2-.8-.3-1.2-.5-.7 1.6-1.3 3.1-1.3 3.5-.1 1-1.2 2.7-2.7 3.6-.8.5-1.6.7-2.5.7-.5 0-1-.1-1.5-.3-.5-.2-.8-.8-.7-1.3-1.6-.8-2.2-2.3-2.3-3.2 0-.3.2-.6.5-.6h.1c.1-1.1.7-2.2 1.8-2.8 1-.5 2.1-.5 3-.1l.4-.9-.1-.1c-.4-.2-.7-.4
-1.1-.6l-.4-.2-.5-.3-1.7 1c-.3 1.3-1.3 3.4-3.5 3.5h-.2c-3 0-3.8-1.9-4.2-3.3-.1-.3.1-.6.4-.7h.1c0-.4 0-.8.1-1.2.5-1.8 2.5-2.9 4.3-2.3.8.2 1.4.7 1.9 1.4l.2-.1c-.3-.3-.6-.5-.8-.7-.2-.2-.4-.4-.7-.6l-.9-.7c-.9.2-1.8.3-2.6.3-.5 0-.9-.1-1.2-.2-2.3-.9-2.3-3.8-2.3-3.9 0-.3.3-.5.6-.6.2 0 .3.1.4.2.1-.9.6-1.7 1.4-2.2-.1-.3-.2-.6-.2-.9-.1-.3-.1-.5-.2-.8-.1-.4-.2-.9-.3-1.3 0-.2-.1-.4-.1-.6-.1-.6-.3-1.2-.4-1.8v-.1c-1.5-8.1-1.7-17.2 1-26.8-.9-1.2-1.5-1.9-2-2.4-2 .4-4.1.6-6.5.6h-.2c-1.3 3.8-2 7.3-2.3 10.5l2.3.1c.4 0 .8.3 1 .7.2.4 0 .9-.3 1.2l-3.1 2.9c.3 6.4 2.1 11.8 3.5 16 .4 1.2.8 2.4 1.1 3.4 2.8 9.4 2.6 17.3-.4 22.2-1.7 2.7-4.1 4.4-7.1 4.9-.4.1-.9.1-1.4.1-2.3 0-4.8-1-7-2.7-2.8-2.3-7.7-7.9-8.2-20.8C26 108.9 28 101 30.6 94c-.4-.1-.7-.3-.8-.6-.2-.3-.1-.7.1-1.1l6.2-10.2c1.1-2.1 2.2-3.9 3.1-5.3-2.9-1-4.3-2.4-5-3.3-4.3 3.1-8 6.3-10.9 9.7 0 0 0 .1-.1.2 1.2-1.4 2-2.2 2.1-2.3.3-.3.7-.3 1 0 .3.3.3.7 0 1 0 0-2.8 2.8-5.2 6.6-1.3 3.7-2.7 8.5-2.6 12.2.1 4.7 1.3 7.8 2.1 9.3.9.3 1.9.5 2.9.8-.1.8-.3 1.8-.3 2.9-.5-
.1-1-.3-1.4-.4.5.3.9.6 1.4.8.2-1.5.4-2.5.4-2.7.1-.3.3-.5.6-.5.3.1.5.3.5.6 0 .1-2 11.3.5 19.2.2.6.5 1.2.7 1.8 0 .1.1.1.1.2.7 1.4 1.4 2.7 2.3 3.9 0 .2.1.4.1.6.1.3.1.6.2 1v.1c.6 3.6 1.4 7.2 2.3 9.8.8.4 2.2.6 4.7.5 2-.1 3-.5 3.6-.8 0-1 0-2-.1-3v-.1c-4.5-1.2-6.1-2.9-6.2-3-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0 0 0 1.5 1.5 5.4 2.6v-.1l2.4.6h.2c.8.2 1.6.3 2.4.4h.2c1.6.2 3.2.3 4.7.3h1.7c1.1 0 2.1-.1 3.1-.3h.3c.4 0 .8-.1 1.1-.2.1 0 .3 0 .4-.1.3-.1.6-.1 1-.2.2 0 .3-.1.5-.1.3-.1.6-.1.9-.2.2 0 .3-.1.5-.1.3-.1.6-.1.9-.2.1 0 .3-.1.4-.1l1.2-.3c1.3 2.3 3 4.6 4.9 6.9zm8-22.2c.1-.2.3-.4.5-.5.4-.1.8.1 1.2.3 4.8 2.9 14 4.5 27.2 4.6.1 0 .6 0 .8.4.1.2.1.5-.1.8-.5.7-8.8 1.8-15.3 1.8-2 0-3.8-.1-5.2-.3-5.8-1-8-3.7-8.6-4.9-.6-.8-.7-1.6-.5-2.2zm-49.7-17.2c0 .3-.3.5-.6.5s-.5-.3-.5-.6c0-.9.1-1.8.3-2.7 0-.2-.1-.3-.1-.5v-.1c0-.3-.1-.6-.1-.9v-.1-1-.1-1.1-.1c.2-3.2 1.2-7.3 4.2-11.8l.1-.1c.3-.5.7-1 1-1.5.8-2 1.5-3.3 1.5-3.5.1-.3.5-.4.7-.3.3.1.4.5.3.7-.1.4-6.3 13.7-6.8 23.2z" fill="url(#k)"/><path d="M37.2 63.9h.4c.8 0 1.6-.
1 2.4-.2h.4l2.4-.3c.1 0 .3 0 .4-.1.5-.1 1-.2 1.5-.2 13.5-2.6 20.6-6 23.1-7.5.1-.1.2-.1.4-.2.5-.3.7-.4.7-.5.1-.1.2-.1.3-.1 1.7-1 3.4-2 4.9-3.1-4.2-.1-7.5-1.9-7.7-2-.3-.1-.4-.5-.2-.8.1-.3.5-.4.8-.2 0 0 4.6 2.4 9.5 1.7 1.1-.2 2.2-.5 3.2-.8 6.7-2.1 12-6.3 14.5-11.6.2-.5.5-1.1.7-1.6.6-1.6.9-3.3.9-5.1 0-2.2-.5-4.2-1.3-6.2-.2-.5-.4-.9-.7-1.4l-.9-1.5c-.4-.6-.8-1.1-1.3-1.7-.4-.4-.8-.9-1.2-1.3l-.8-.8c.9 1.6 1.5 3.4 1.7 5.6.9 1.4 1.6 2.9 1.8 4.6 1.4 7.8-5.3 15.4-14.8 17.1-3.2.6-6.3.4-9-.4-6.2 3.4-14.2 5.7-22.1 6.6-16.5 1.9-29.8-1.4-28.8-13.1.8-8.9 9.4-22.1 19.5-29.1-.5.3-1.1.6-1.6.9-.8.5-1.6 1-2.4 1.6 0 0-2.4 1.2-7.7 7.7-.1.1-.3.2-.4.2-.1 0-.2 0-.4-.1l-.1-.1c-1 1.2-2 2.4-2.9 3.7-1.1 1.5-2.1 3.1-3.1 4.7-.8 1.4-1.5 2.8-2.2 4.3.2 0 .3 0 .5.1.3.2.3.5.1.8 0 0-2.2 3.2-3 6.3-.1.3-.1.6-.2.8 0 .1-.1.3-.1.4-.1.7-.3 1.4-.4 2.1-.1.7-.2 1.4-.2 2v.5c0 .7-.1 1.3 0 2 0 .6.1 1.2.1 1.8v.4c.1.6.2 1.1.3 1.7 0 .1 0 .1.1.2.1.5.3.9.4 1.4 0 .1.1.2.1.3.2.5.4.9.6 1.4 0 .1.1.2.1.3.2.4.4.8.7 1.1 0 .1.1.2.1.2.3.4.6.8.9 1.
1.1.1.1.2.2.2l.9.9.1.1 1.2.9c.1.1.2.1.3.2.4.3.8.5 1.3.8h.1c.4.2.9.4 1.3.7.1 0 .2.1.3.1l1.5.6c.1 0 .2.1.2.1.5.1.9.3 1.4.4.1 0 .2.1.3.1.6.1 1.1.2 1.7.3.1 0 .2 0 .4.1.5.1 1.1.2 1.6.2h.3c.6.1 1.2.1 1.9.1h2.4c1 .6 1.8.6 2.6.6z" fill="url(#l)"/><path d="M68.1 113.9c1.7-2.1 3.7-5.6 4.9-11.1 1.6-7-3-17.6-6.6-24.5-1-1.3-2-2.5-2.8-3.4-1.7.9-4.2 1.9-7.3 2.6.4.5.9 1.1 1.5 1.8 14.4 15.6 11.4 27.5 9.3 32-.1.3-.2.5-.4.7-.3.6-.6 1-.7 1.2-.2.2-.3.4-.5.6l-.1.1c-.1.2-.3.4-.4.7 1.1-.2 2.1-.4 3.1-.7z" fill="url(#m)"/><path d="M76.4 110.7c.2-.8.3-1.3.3-1.3 1.2-5.5.8-10.8-.6-15.7 1.7 6.5 1.4 12.4.3 17z" fill="url(#n)"/><path d="M30.7 86.9c-.3-.1-.6 0-.7.3-.1.2-.7 1.5-1.5 3.5-.4.5-.7 1-1 1.5l-.1.1c-3 4.5-4 8.6-4.2 11.8V106.5c0 .3.1.6.1.9v.1c0 .2 0 .3.1.5l-.3 2.7c0 .3.2.6.5.6s.5-.2.6-.5c.4-9.5 6.7-22.8 6.7-23 .2-.4.1-.8-.2-.9z" fill="url(#o)"/><path d="M32.7 105.7c-.2 0-.4-.1-.6-.2-.4-.3-.6-.8-.4-1.3l3.6-9.5-4.5-.6c-2.6 6.9-4.5 14.9-4.2 22.8.6 12.8 5.4 18.5 8.2 20.8 2.2 1.7 4.7 2.7 7 2.7.5 0 .9 0 1.4-.1 3-.
5 5.4-2.2 7.1-4.9 3-4.9 3.2-12.8.4-22.2-.3-1-.7-2.2-1.1-3.4-1.4-4.2-3.2-9.5-3.5-16l-12.5 11.6c-.4.2-.7.3-.9.3zM36.2 82.1c.2-.3.6-.6 1-.5l7.8.4c.4 0 .8.3 1 .6.2.4.1.8-.1 1.2l-3.9 5 4.1.2c.3-3.3 1-6.8 2.3-10.5-1.1 0-2.1-.1-3.2-.2-2.5-.2-4.5-.7-6-1.2-.9 1.4-1.9 3.2-3.1 5.3l.1-.3zM82.9 134.9c1.4.2 3.2.3 5.2.3 6.5 0 14.8-1.1 15.3-1.8.2-.2.2-.5.1-.8-.2-.4-.6-.4-.8-.4-13.2-.1-22.3-1.7-27.2-4.6-.5-.3-.8-.5-1.2-.3-.2.1-.4.3-.5.5-.2.5 0 1.3.4 2.2.7 1.1 2.9 3.9 8.7 4.9zM69.5 120.6h-.4l-1.9 1.2 1.3-.8c.2.1.5.2.8.2l-.6 1.4.8-2zM65.4 118.7c.1.2.2.4.4.6h.1c-.2-.3-.4-.4-.5-.6z" fill="#F9F9FA"/><path d="M57.3 112.5c-.8.5-1.2 1.4-1.4 2.2.1.1.1.2.1.3 0 0 0 2.2 1.6 2.8 1.2.5 5.3-.7 7.5-1.5h.3l.2-.1.4 1.2c.1.4.3.6.6 1l.9 1-1.1.7-1.4.9-.6.4-.6-.4c-.1-.1-.3-.2-.4-.3l-.2.1c-.4-.6-1.1-1.1-1.9-1.4-1.8-.5-3.8.5-4.3 2.3-.1.4-.1.8-.1 1.2.3 0 .5.1.6.4.4 1.5 1.1 2.5 3.3 2.5 2-.1 2.5-2.8 2.5-2.8 0-.2.1-.3.3-.4l4.5-2.8c.1 0 .1-.1.2-.1l.2-.1.3-.2h.6l1.9-.2-.8 1.8-.9 2.1-.5 1.1-1-.5-.4.9c-.9-.4-2.1-.4-3 .1-1.1.6-1.7
1.6-1.8 2.8.2 0 .5.2.5.5 0 .1.3 1.9 2.1 2.5h.5c.3.1.5.1.8.1h.3c.3-.1.6-.2.9-.4.6-.4 1-.9 1.3-1.3.3-.5.4-1 .4-1.1 0-.1 0-.3.1-.4v-.2l.3-.6c.4-1 1-2.3 1.4-3.1l2.7-6.2c0-.1.1-.2.1-.3v-.2-.3c1.1-2 1.8-4.2 2.2-5.6 1.1-4.7 1.4-10.5-.2-17-2.2-7.6-6.7-14.2-11.3-19.4-.3.2-.7.4-1.2.6.9 1 1.8 2.2 2.8 3.4 3.6 6.8 8.2 17.5 6.6 24.5-1.2 5.4-3.2 8.9-4.9 11.1-1 .2-2 .5-3 .7-.8.2-1.6.4-2.3.5 0-.5-.1-1.1-.4-1.6-.1-.3-.3-.5-.5-.7l-.2-.2c-.2-.1-.3-.3-.5-.4-.1 0-.1-.1-.2-.1-.2-.1-.5-.2-.7-.3h-.1c-.2-.1-.4-.1-.7-.1h-.3c-.2 0-.4 0-.5.1h-.2c-.3.1-.5.2-.7.3-.5 0-.6.1-.7.2zM64.4 123.5l1.7-1-1.7 1zM18.4 39.1c-1.1 11.7 12.3 15 28.8 13.1 7.9-.9 15.9-3.2 22.1-6.6 2.8.8 5.8 1 9 .4 9.5-1.7 16.1-9.3 14.8-17.1-.3-1.7-.9-3.2-1.8-4.6.2 2.6-.3 5.5-2 8.7-.1.2-.2.3-.4.4-2 4.2-6.7 7-12 6.6-4.3-.4-7.9-2.8-9.8-6.2-2.6-3.7-1.8-7.3-1.7-7.5.1-.3.4-.5.7-.4.3.1.5.4.4.7 0 .1-.4 1.5.1 3.5 1.7 4.1 5.3 7 10.3 7.2.1-.1.2-.1.4-.1.4 0 10.5-.3 11.6-9.9.7-6.3-2.5-10-5.2-12-1.8-1-3.8-1.6-6-1.6-1 0-1.8-.7-2.6-1.5h-.2c-5.5-3.8-12.5-6.3-20.1
-6.3-3.4 0-7 .5-10.6 1.6-2.1.6-4.1 1.5-6.1 2.6-10.3 6.9-18.9 20-19.7 29zM60 42c-.1 0-.2.1-.2.1-.2 0-.4-.1-.5-.3-2.6-5.6-.5-10.6-.4-10.8.1-.3.4-.4.7-.3.3.1.4.5.3.7 0 0-2 4.7.4 9.9.1.2 0 .6-.3.7zm25.3-12.3c.3.5.2 1.2-.3 1.5-.2.1-.4.2-.6.2-.4 0-.7-.2-.9-.5 0-.1-1.1-1.6-3.2-1.6s-3.2 1.6-3.2 1.6c-.3.5-1 .7-1.5.3-.5-.3-.7-1-.3-1.5.1-.1 1.8-2.7 5.1-2.7 3.2.1 4.9 2.6 4.9 2.7zm-17.2-.9h-.2c-.2 0-.5-.1-.5-.4l-.1-.3c-.1-.3.1-.6.4-.7.3-.1.6.1.7.4l.1.3c.1.3-.1.6-.4.7zm5.6 6.2h-.1c-.1 0-2.9-.6-5.1-4.3-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2 2 3.3 4.4 3.8 4.4 3.8.3.1.5.3.4.6-.1.4-.3.5-.6.5zm8.1-12.2l-.1 3.5v.3c-.4-.1-.9-.2-1.4-.2-.6 0-1.1.1-1.6.2 0-.1-.1-.3 0-.4l.1-3.5c0-.9.7-1.5 1.6-1.5.7 0 1.4.7 1.4 1.6zM72.7 14c.1.3 0 .6-.3.7 0 0-2.4.9-3.6 3.3-.1.2-.3.3-.5.3-.1 0-.2 0-.2-.1-.3-.1-.4-.5-.2-.7 1.4-2.8 4.1-3.8 4.2-3.9.2-.1.5.1.6.4zM23.4 111.2c-1-.3-2-.6-2.9-.8-.8-1.5-2-4.7-2.1-9.3-.1-3.7 1.3-8.5 2.6-12.2 2.4-3.8 5.2-6.6 5.2-6.6.3-.3.3-.7 0-1-.3-.3-.7-.3-1 0-.1.1-1 .9-2.1 2.3.1-.1.1-.2.1-.2-4.4 5.1-7.1 10.6
-8.2 16.4-1 5.3-.2 9.7.6 12.4-.1.1-.1.2-.2.3v.1c0 .1-.1.1-.1.2v.4c0 .1 0 .2.1.3l3.9 10.1v1.3c.1 1 .7 1.9 1.6 2.5.2.1.5.2.7.3h.1c.2.1.5.1.7.1H23.3c-.4-2.2-.5-4.5-.5-6.6-.1 0-.2-.1-.2-.2l-.1-.1c-.3 0-.7.1-1 .2l-1-2.7-1-1.2c-.2-.2-.2-.6.1-.8.2-.2.6-.2.8.1l1.1 1.3 1.4 1c.1-1.2.1-2.3.2-3.3-1.6-.9-3.3-2-3.6-2.1-.3-.1-.4-.4-.3-.6v-.1c.1-.3.4-.4.7-.3.2.1 1 .5 1.9 1.1.4.1.9.3 1.4.4-.1-.9 0-1.9.2-2.7z" fill="#F9F9FA"/><path d="M64.4 121.4l.6-.4 1.4-.9 1.1-.7-.9-1c-.4-.4-.5-.6-.6-1l-.4-1.2-.2.1h-.3c-2.2.8-6.3 2-7.5 1.5-1.6-.6-1.6-2.8-1.6-2.8 0-.1-.1-.3-.1-.3-.1-.1-.2-.2-.4-.2-.3 0-.6.2-.6.6 0 .1 0 3 2.3 3.9.3.1.7.2 1.2.2.8 0 1.7-.1 2.6-.3l.9.7c.3.2.5.4.7.6.2.2.5.4.8.7.1.1.2.2.4.3l.6.2zm1.4-2.1l-1.3.8c-.9-.6-1.1-.9-1.9-1.5.9-.2 1.6-.3 2.4-.7.1.4.2.6.4.9.1.1.3.2.4.5z" fill="url(#p)"/><path d="M69.6 123.1l.9-2.1.8-1.8-1.9.2h-.6l-.3.2-.2.1c-.1 0-.1 0-.2.1l-4.5 2.8c-.1.1-.2.2-.3.4 0 0-.4 2.8-2.5 2.8-2.2 0-2.9-1-3.3-2.5-.1-.3-.3-.4-.6-.4h-.1c-.3.1-.5.4-.4.7.4 1.4 1.3 3.3 4.2 3.3h.2c2.2-.1 3.2-2.2 3.
5-3.5l1.6-1 .5.3.4.2c.4.2.7.4 1.1.6l.1.1 1 .5.6-1zm-1-.4c-.2-.1-.4-.2-.6-.4-.3-.2-.6-.3-.8-.5l1.9-1.2h.4l-.9 2.1z" fill="url(#q)"/><path d="M78.7 22.7l-.1 3.5v.4c.5-.1 1-.2 1.6-.2.5 0 .9.1 1.4.2v-.3l.1-3.5c0-.9-.7-1.6-1.5-1.6-.8-.1-1.5.6-1.5 1.5z" fill="url(#r)"/><path d="M80.2 27.1c-3.4 0-5 2.5-5.1 2.7-.3.5-.2 1.2.3 1.5.5.3 1.2.2 1.5-.3 0 0 1.1-1.6 3.2-1.6s3.2 1.6 3.2 1.6c.2.3.6.5.9.5.2 0 .4-.1.6-.2.5-.3.7-1 .3-1.5.2-.2-1.5-2.7-4.9-2.7z" fill="url(#s)"/><path d="M67.8 17.5c-.1.3 0 .6.2.7.1 0 .2.1.2.1.2 0 .4-.1.5-.3 1.2-2.4 3.6-3.3 3.6-3.3.3-.1.4-.4.3-.7-.1-.3-.4-.4-.7-.3 0 0-2.7 1-4.1 3.8z" fill="url(#t)"/><path d="M59.9 31.3c.1-.3 0-.6-.3-.7-.3-.1-.6 0-.7.3-.1.2-2.2 5.2.4 10.8.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.3-.7-2.4-5.1-.4-9.8-.4-9.9z" fill="url(#u)"/><path d="M73.8 33.9s-2.4-.5-4.4-3.8c-.2-.3-.5-.3-.8-.2-.3.2-.4.5-.2.8 2.3 3.8 5 4.3 5.1 4.3h.1c.3 0 .5-.2.5-.5.2-.2 0-.5-.3-.6z" fill="url(#v)"/><path d="M68.5 28.1l-.1-.3c-.1-.3-.4-.4-.7-.4-.3.1-.4.4-.4.7l.1.3c.1.2.3.4.5.4h.2c
.3-.1.5-.4.4-.7z" fill="url(#w)"/><path d="M65 71.5s0-1.4-.4-2.6c0-.2-.1-.3-.2-.4-1.4.6-6.2 2.4-15.4 3.3-6.1.6-9.9-.8-11.5-1.6l-1.9 1.7s1.1 3.3 9.7 4.1c1.1.1 2.2.1 3.2.1 10.4 0 16.5-4.6 16.5-4.6z" fill="url(#x)"/><path d="M49 71.8c9.2-.9 14-2.7 15.4-3.3-.5-.9-1.7-1.4-1.7-1.4s-7.8 2.6-14.5 3c-.7 0-1.4.1-2.1.1-5.2 0-7.2-1.2-7.2-1.2l-1.4 1.3c1.6.7 5.4 2.1 11.5 1.5z" fill="#FFF"/><path d="M47.9 83.5c.3-.3.3-.8.1-1.2-.2-.4-.5-.6-1-.6l-7.8-.4c-.4 0-.8.2-1 .5l-.1.2-6.2 10.2c-.2.3-.2.7-.1 1.1.2.3.5.6.8.6l4.5.6-3.6 9.5c-.2.5 0 1 .4 1.3.2.1.4.2.6.2.3 0 .5-.1.8-.3l12.5-11.6 3.1-2.9c.3-.3.4-.8.3-1.2-.2-.4-.5-.7-1-.7l-2.3-.1-4.1-.2 4.1-5z" fill="url(#y)"/><path d="M77.3 148.2c-.5 1.6-2.3 2.8-5.6 3.7-3.5.9-6 .8-7.5-.3-.2-.2-.4-.3-.6-.5-1.1.7-1.6 1.7-1.3 2.4.5 1.4 3.5 2.3 9.2.9 8.2-2 9.3-4.8 9.5-5.6.1-.8-.2-1.2-.3-1.3-.5-.3-1.9-.5-3.2-.4-.1.3-.1.7-.2 1.1z" fill="#FFF"/><path d="M75.7 144.9c-.1 0-.2 0-.2.1-.4-.9-.8-1.9-1.4-3 1.3.1 2.7.1 4.1.1 13.4 0 28.1-4.3 30.4-7.7.6-.8.7-1.8.3-2.7-1.1-2.7-4.3-2.
9-9.2-3.2-5.7-.4-14.2-.9-24.5-5.2-.4-.2-.8-.3-1.1-.5 0-.1 0-.1.1-.2 0-.1.1-.2.1-.3l1.9-4.4c.2-.4.3-.9.3-1.3.5-1 .9-2 1.2-2.9.5 0 1 .1 1.5.1.7 0 1.3 0 1.8-.1s1-.2 1.3-.4c2.4-1.3 4.4-1.4 7.6-1.4 1.7 0 3.8-.1 6.5-.3 7.8-.8 12.9-6.6 12.9-10 .2-.9 3.9-3.5 6.1-5.1 4.5-3.2 6.8-4.9 6.5-6.6-.3-1.8-2.7-1.9-11.1-1.9-7.8-.1-18.4-.1-24.5-2.6-4.7-1.9-8.9-5-12.2-7.9-4-3.5-6.6-6.6-6.7-6.6 0-.1-.1-.1-.2-.1 0-.6-.2-1.5-.4-2.4-.3-1.1-1.1-1.9-1.7-2.4 1.3-2.8 2.8-5.7 4.4-8.6 2.5-1.4 4.9-2.8 7-4.4C89.2 50.6 98 41.8 98 31.6c0-10.4-9.4-19.4-22.3-21.6-6.1-4.1-13.5-6.4-20.9-6.4-3.8 0-7.6.6-11.3 1.7-3.4 1.1-6.8 2.7-10.1 4.9-.6-.1-1.2-.1-1.8-.1h-1.2c-2 0-4.1.2-6.1.6-1.6-.6-3.3-.9-5-.9-1.4 0-2.9.2-4.3.7-7.5 2.4-11.7 10.4-9.3 17.9.3 1 .7 1.9 1.3 2.9.8 3.2 2.8 6.1 5.7 8.5-.7 2.9-1 5.7-1 8.4.2 11.8 8.5 18.3 23.3 18.3 1.9 0 3.8-.1 5.9-.3-.3.3-.5.7-.7 1-.3-.1-.6-.2-.9-.2-.5 0-1.1.2-1.5.6l-3.3 3c-.3.3-.6.7-.7 1.1C22 79.9 15.1 89.3 13.2 99.8c-1 5.2-.4 9.6.4 12.6-.3.8-.3 1.7 0 2.5l3.7 9.6c-.2 2.1.8 4.2 2.7 5.4.8.5 1.7.
8 2.7.8.9 3 2.1 5.6 3.7 7.8.6 3.6 1.2 6.5 1.9 8.9-1.4.4-2.5 1.3-3.1 2.3-.4.7-.6 1.5-.5 2.3.1.4.3 1.2.9 1.9 3.4 5.5 7 11.8 7.1 12.9 0 .4-.2 1.1-.3 1.9-.5 2.4-1.1 5.5-.3 7.3.4 1.1 1.8 1.6 3.8 1.6h.5c3.2-.1 8.6-1.8 9.9-6 1.4-4.1 1.2-15.5 1.1-20.3v-1.2-.9-.1-.1c0-.1 0-.2-.1-.3v-.1c-.1-.3-.2-.6-.4-.8.8 0 1.6.1 2.4.1 3.7 0 7.5-.5 11.2-1.5.9 1.1 1.7 2.1 2.4 3.1-1.2.8-2 1.8-2.3 2.9-.2.7-.2 1.4 0 2.1 0 .1-.1.1-.1.2-.1.4 0 .8.2 1 4.2 5.2 8.7 11.3 9 12.4 0 .4-.1 1.1-.2 1.9-.3 2.5-.7 5.6.3 7.3.6 1.1 2.1 1.4 3.5 1.4.6 0 1.1-.1 1.6-.1 4-.5 8.5-2.8 9.5-6.5.7-2.6.5-8 .2-12.9.9-.5 1.8-1.3 2.2-2.4 1.6-4.2 0-7.3 0-7.4-.1-.2-.3-.3-.5-.3s-.4.1-.5.3c-.4.9-1 2.3-1.8 3.3-.2-1.9-.4-3.1-.4-3.3.2-1.6-.5-2.8-1.3-3.3l-.6-.3c-2.3-1.2-5.3-.9-6-.9zm5.7 13.8c-.3.1-.5.4-.4.7.1.3.4.5.7.4 0 0 .1 0 .3-.1.3 4.5.4 9.2-.2 11.4-.5 1.9-2.6 3.5-5.6 4.4-2.6.8-4.6.6-4.9.3-.6-1.1-.3-4.1 0-5.9.1-.6.1-1.1.2-1.5.7.2 1.3.3 1.9.3 1.7 0 2.8-.7 2.9-.8.3-.2.3-.5.2-.8-.2-.3-.5-.3-.8-.2 0 0-1.8 1.1-4.3.2-.6-1.8-3.6-6-6.8-10 .6.1 1.2.1 1.
9.1 1.5 0 3.3-.2 5.6-.8 4.9-1.2 7.7-2.7 9.3-4.2 0 .4.1.9.2 1.5-1.2.4-2.8.9-3.4 2.8-.7 2.4.8 4.1.9 4.2.1.1.3.2.4.2.1 0 .3 0 .4-.1.2-.2.2-.6 0-.8 0-.1-1.2-1.3-.6-3.1.4-1.4 1.6-1.8 2.8-2.1.2-.1.3-.1.5-.2 0 .1 0 .1.1.2.1.2.3.3.5.3.1 0 .2 0 .3-.1.6-.4 2.5-1.6 2.6-2.8 0-.3-.2-.6-.5-.6h-.1c.2-.3.3-.6.5-.9.3 1.2.4 3-.4 5.2-1.1 2-4.2 2.8-4.2 2.8zm-.8-11.2c.1.1.5.5.3 1.3-.1.8-1.2 3.6-9.5 5.6-5.7 1.4-8.7.5-9.2-.9-.2-.7.2-1.7 1.3-2.4.2.2.3.3.6.5 1.5 1 4 1.1 7.5.3 3.3-.8 5.1-2 5.6-3.7.1-.4.1-.8.1-1.1 1.4 0 2.8.1 3.3.4zM69.1 76c3.5 3.5 9.4 8.6 16.3 11.4 6.5 2.7 17.4 2.8 25.4 2.8 3.4 0 7.1 0 8.6.3-.9 1-3.5 2.9-5.3 4.2-2.7 1.9-4.7 3.3-5.8 4.6-9.9 1.2-15.8-1.2-15.9-1.2-.3-.1-.6 0-.7.3-.1.3 0 .6.3.7.2.1 4 1.6 10.8 1.6 1.4 0 3-.1 4.6-.2-.2.4-.3.7-.3 1.1 0 2.1-4.1 7.1-10.9 7.8-2.6.3-4.5.3-6.3.3-3.3.1-5.7.1-8.6 1.7-.5.3-1.5.4-2.8.3.3-1.1.5-1.8.5-1.8 1.7-8.1 1.1-20.1-9.9-33.9zM44.8 64.2c11.7-2.2 18.6-5 22-6.8-1.2 2.2-2.5 4.8-3.8 7.5h-.3c-.2 0-.5 0-.7.1-.1 0-7.6 2.5-13.9 2.9-.7 0-1.3.1-2 .1-1.7 0-3-.1-4-.
3.9-1.3 1.8-2.4 2.7-3.5zm3.7 11.9c-1 0-2.1 0-3.2-.1-8.5-.8-9.7-4.1-9.7-4.1l1.9-1.7 1.4-1.3s2.1 1.2 7.2 1.2c.6 0 1.3 0 2.1-.1 6.7-.4 14.5-3 14.5-3s1.1.5 1.7 1.4c.1.1.1.3.2.4.4 1.2.4 2.6.4 2.6s-6.1 4.7-16.5 4.7zM34.7 63.9h-2.3c-.6 0-1.3-.1-1.9-.1h-.3c-.5-.1-1.1-.1-1.6-.2-.1 0-.2 0-.4-.1-.6-.1-1.1-.2-1.7-.3-.1 0-.2-.1-.3-.1-.5-.1-1-.3-1.4-.4-.1 0-.2 0-.2-.1l-1.5-.6c-.1 0-.2-.1-.3-.1-.5-.2-.9-.4-1.3-.7h-.1c-.4-.2-.9-.5-1.3-.8-.1-.1-.2-.1-.3-.2l-1.2-.9-.1-.1-.9-.9c-.1-.1-.1-.2-.2-.2-.3-.4-.6-.7-.9-1.1-.1-.1-.1-.2-.1-.2-.2-.4-.5-.7-.7-1.1 0-.1-.1-.2-.1-.3-.2-.4-.4-.9-.6-1.4 0-.1-.1-.2-.1-.3-.2-.5-.3-.9-.4-1.4 0-.1 0-.1-.1-.2-.1-.5-.2-1.1-.3-1.7V50c-.1-.6-.1-1.2-.1-1.8v-2-.5c0-.7.1-1.3.2-2s.2-1.4.4-2.1c0-.1.1-.3.1-.4.1-.3.1-.6.2-.8.8-3.1 3-6.2 3-6.3.2-.3.1-.6-.1-.8-.1-.1-.3-.1-.5-.1-.1 0-.2.1-.3.2 0 .1-.7 1-1.4 2.3-.4.8-.9 1.7-1.3 2.7 0 0-.1 0-.1-.1l-.3-.3c-.3-.2-.5-.5-.8-.7l-.3-.3c-.2-.3-.5-.5-.7-.8-.5-.5-.9-1.1-1.2-1.7-.1-.2-.2-.4-.3-.5-.1-.2-.3-.5-.4-.7l-.3-.6c-.1-.2-.2-.5-.3-.7-.1-.2-.
2-.5-.2-.7-.1-.2-.1-.4-.2-.7-.2-.4-.5-.8-.6-1.2 0 0 0-.1-.1-.1-.2-.4-.4-.9-.5-1.3-.5-1.6-.6-3.1-.5-4.7.1-1.2.4-2.4.8-3.5.7-1.8 1.9-3.4 3.4-4.7.6-.5 1.2-1 1.9-1.3.7-.4 1.4-.7 2.2-1 .4-.1.7-.2 1.1-.3.1 0 .2 0 .3-.1.2 0 .5-.1.7-.1H19.4c1.7 0 3.3.4 4.8 1l1.5-.3h.2c.7-.1 1.4-.2 2.1-.2.4 0 .7-.1 1.1-.1h2.5c.2 0 .5 0 .7.1-.8.7-2.1 1.8-3.9 3.7-.9.9-1.8 2.1-3 3.4-.2.2-.2.5 0 .7l.1.1c.1.1.2.1.4.1s.3-.1.4-.2c5.3-6.5 7.6-7.7 7.7-7.7.8-.6 1.6-1.1 2.4-1.6.5-.3 1.1-.6 1.6-.9 2-1.1 4-2 6.1-2.6 3.6-1.1 7.2-1.6 10.6-1.6 7.6 0 14.5 2.4 20.1 6.3h.2c2.1.3 4.1.9 6 1.6.6.3 1.6.8 2.6 1.6 2.7 2 5.9 5.7 5.2 12-1.1 9.6-11.2 9.9-11.6 9.9-.1 0-.3.1-.4.1-5-.2-8.6-3.1-10.3-7.2-.5-1.9-.1-3.3-.1-3.5.1-.3-.1-.6-.4-.7-.3-.1-.6.1-.7.4 0 .2-.9 3.8 1.7 7.5 1.8 3.4 5.5 5.9 9.8 6.2 5.3.4 10-2.3 12-6.6.2-.1.3-.2.4-.4 1.7-3.3 2.2-6.2 2-8.7-.2-2.1-.8-4-1.7-5.6l.8.8c.4.4.8.9 1.2 1.3.5.5.9 1.1 1.3 1.7l.9 1.5c.2.4.5.9.7 1.4.8 1.9 1.3 4 1.3 6.2 0 1.8-.3 3.5-.9 5.1-.2.5-.4 1.1-.7 1.6-2.5 5.2-7.7 9.4-14.5 11.6-1 .3-2.1.6-3.2.8-4.9
.7-9.5-1.7-9.5-1.7-.3-.1-.6 0-.8.2-.1.3 0 .6.2.8.2.1 3.5 1.8 7.7 2-1.6 1.1-3.2 2.1-4.9 3.1-.1 0-.2 0-.3.1 0 0-.2.2-.7.5-.1.1-.2.1-.4.2-2.5 1.4-9.6 4.9-23.1 7.5-.5.1-1 .2-1.5.2-.1 0-.3 0-.4.1l-2.4.3h-.4c-.8.1-1.6.1-2.4.2h-.4c-.8 0-1.6.1-2.4.1v-.8zm9.2 106.6c-.9 2.8-4.7 3.9-5.8 4.2-2.5.6-4 .2-4.2 0-.5-1.2.1-4.2.4-6l.3-1.5c.8.3 1.5.4 2.1.4 1.4 0 2.3-.5 2.3-.6.3-.2.3-.5.2-.8-.2-.3-.5-.3-.8-.2 0 0-1.7 1-3.8-.1-.4-1.9-3.1-6.6-5.5-10.6 1.1.2 2.4.4 4 .4.6 0 1.2 0 1.9-.1 5.1-.3 8.1-1.4 9.8-2.7.2 5.6.1 14.4-.9 17.6zm.7-21.7c.1.1.3.6.1 1.2-.3.7-1.8 3.2-9.8 3.7-5.5.4-8.2-1-8.4-2.3-.1-.7.5-1.5 1.6-2 .1.2.3.4.4.6 1.2 1.2 3.6 1.8 7 1.5 3.2-.2 5.2-1 5.9-2.5.2-.3.3-.7.3-1 1.3.1 2.5.4 2.9.8zm16.2-5.3l-1.2.3c-.1 0-.3.1-.4.1-.3.1-.6.2-.9.2-.2 0-.3.1-.5.1-.3.1-.6.1-.9.2-.2 0-.3.1-.5.1-.3.1-.6.1-1 .2-.1 0-.3.1-.4.1-.4.1-.8.1-1.1.2h-.3c-1 .1-2 .2-3.1.3H49h-.1-.1c-1.5 0-3.1-.1-4.7-.3h-.2c-.8-.1-1.6-.2-2.4-.4h-.2l-2.4-.6v.1c-3.9-1.1-5.3-2.6-5.4-2.6-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.1.1 1.8 1.8 6.2 3v.1c0 1 .1
2 .1 3-.5.3-1.6.7-3.6.8-2.5.2-3.9-.1-4.7-.5-.9-2.6-1.7-6.2-2.3-9.8v-.1c-.1-.3-.1-.6-.2-1 0-.2-.1-.4-.1-.6-.9-1.2-1.7-2.5-2.3-3.9 0-.1-.1-.1-.1-.2-.3-.6-.5-1.2-.7-1.8-2.5-7.9-.5-19.1-.5-19.2.1-.3-.1-.6-.5-.6-.3-.1-.6.1-.6.5 0 .1-.2 1.1-.4 2.7-.5-.3-1-.6-1.4-.8-.9-.6-1.7-1-1.9-1.1-.3-.1-.6.1-.7.3v.1c-.1.3.1.5.3.6.2.1 2 1.1 3.6 2.1-.1 1-.2 2.1-.2 3.3v.7l-1.4-1.7-1.1-1.3c-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8l1 1.2 2 2.5.1.1.2.2c0 2.1.1 4.4.5 6.6h-.8-.1c-.2 0-.5-.1-.7-.1h-.1c-.2-.1-.5-.2-.7-.3-.9-.6-1.5-1.5-1.6-2.5v-.1-.5-.1-.3-.3l-3.9-10.1c0-.1-.1-.2-.1-.3v-.1-.2-.1c0-.1 0-.1.1-.2v-.1c.1-.1.1-.2.2-.3-.8-2.8-1.5-7.1-.6-12.4 1.1-5.8 3.8-11.3 8.2-16.4 2.9-3.4 6.5-6.6 10.9-9.7.7 1 2.1 2.3 5 3.3 1.5.5 3.5 1 6 1.2 1.1.1 2.2.1 3.2.2h.2c2.4 0 4.6-.2 6.5-.6.4.5 1.1 1.2 2 2.4-2.7 9.6-2.5 18.7-1 26.8v.1c.1.6.2 1.2.4 1.8 0 .2.1.4.1.6.1.4.2.9.3 1.3.1.3.1.5.2.8.1.3.2.6.2.9.1-.1.2-.2.3-.2.2-.1.5-.2.7-.3h.2c.2 0 .4-.1.5-.1h.2c.2 0 .5 0 .7.1h.1c.3.1.5.2.7.3.1 0 .1.1.2.1.2.1.3.2.5.4l.2.2c.2.2.4.4.5.7.3.5.4
1 .4 1.6.7-.2 1.5-.4 2.3-.5.1-.2.2-.5.4-.7 0-.1.1-.1.1-.1.1-.2.3-.4.5-.6.1-.2.4-.6.7-1.2.1-.2.2-.5.4-.7 2.1-4.5 5.1-16.4-9.3-32-.6-.8-1.1-1.4-1.5-1.8 3.1-.7 5.6-1.7 7.3-2.6.5-.2.9-.4 1.2-.6 4.6 5.2 9.2 11.8 11.3 19.4 1.4 4.9 1.8 10.2.6 15.7 0 0-.1.5-.3 1.3-.4 1.4-1.1 3.6-2.2 5.6v.5c0 .1 0 .2-.1.3l-2.7 6.2c-.4.8-1 2.1-1.4 3.1-.1.3-.2.6-.3.8 0 .2-.1.3-.1.4 0 .1-.1.6-.4 1.1-.3.4-.7.9-1.3 1.3-.3.2-.6.3-.9.4h-.3c-.3 0-.5 0-.8-.1-.2-.1-.3-.1-.5 0-1.8-.6-2.1-2.4-2.1-2.5 0-.3-.2-.4-.5-.5h-.1c-.3 0-.5.3-.5.6.1.8.7 2.4 2.3 3.2-.1.5.2 1.1.7 1.3.5.2 1 .3 1.5.3.8 0 1.7-.2 2.5-.7 1.5-.9 2.6-2.6 2.7-3.6.1-.4.6-1.9 1.3-3.5.4.2.8.3 1.2.5 8.5 3.5 15.9 4.6 21.4 5.1h.2c6.3.5 10.2.3 10.9 2.1V133.5c0 .1 0 .1-.1.2 0 0 0 .1-.1.1 0 .1-.1.1-.1.2l-.1.1-.2.2-.1.1c-.1.1-.2.2-.3.2 0 0-.1 0-.1.1-.2.1-.3.2-.5.3-.1 0-.1.1-.2.1-.1.1-.3.2-.4.2-.1 0-.2.1-.2.1-.1.1-.3.1-.4.2-.1 0-.2.1-.3.1-.2.1-.3.1-.5.2-.1 0-.2.1-.3.1-.2.1-.4.2-.6.2-.1 0-.2.1-.2.1l-.9.3c-.1 0-.1 0-.2.1-.3.1-.5.2-.8.3-.1 0-.2.1-.4.1-.2.1-.5.1-.7.2-.1 0
-.3.1-.4.1-.2.1-.5.1-.7.2-.1 0-.3.1-.4.1-.3.1-.5.1-.8.2-.1 0-.3.1-.4.1l-1.2.3h-.1l-1.2.3c-.1 0-.3.1-.4.1-.3.1-.6.1-.9.2-.2 0-.3.1-.5.1-.3.1-.6.1-.9.2-.2 0-.4.1-.5.1-.3.1-.6.1-.9.1-.2 0-.3.1-.5.1-.4.1-.8.1-1.1.2h-.3c-.5.1-1 .1-1.4.2h-.4c-.3 0-.7.1-1 .1h-.5c-.3 0-.6.1-1 .1h-.6c-.3 0-.6 0-1 .1h-6c-.5 0-.9 0-1.4-.1h-.6c-.4 0-.9-.1-1.3-.1-.2 0-.4 0-.6-.1-.2 0-.4-.1-.6-.1-1.5-2.5-2.6-4.3-2.6-4.3-.2-.3-.5-.4-.8-.2-.3.2-.4.5-.2.8 0 0 1.6 2.7 3.7 6.1.9 1.7 1.7 3.3 2.2 4.7l.6 1.8c-.6.4-1.6.9-3.3 1.3-2.8.7-4.4.6-5.3.3-1.4-2.6-3.1-4.9-4.6-6.8zm3.7-32c-.1.1-.1.2-.2.3l-.3.3c-.2-.3-.5-.6-.7-.9l1.2.3zm1-2c-2.4-.6-4.8-1.2-7-1.8-1.7-8.3-1.7-16.4 0-24.2 10.1 12.4 8.6 21.7 7 26z" fill="url(#z)"/><path d="M35 155.9c-.7 0-1.3.1-1.9.1-1.6 0-3-.2-4-.4 2.4 4 5 8.7 5.5 10.6 2.2 1.1 3.8.1 3.8.1.3-.2.6-.1.8.2.2.3.1.6-.2.8-.1 0-1 .6-2.3.6-.6 0-1.3-.1-2.1-.4-.1.4-.2.9-.3 1.5-.3 1.8-.9 4.8-.4 6 .2.2 1.8.5 4.2 0 1.1-.3 4.8-1.3 5.8-4.2 1.1-3.2 1.1-12 1-17.3-1.8 1-4.7 2-9.9 2.4z" fill="url(#A)"/><path d="M41.5 148.8
c-.8 1.5-2.7 2.3-5.9 2.5-3.4.2-5.8-.3-7-1.5-.2-.2-.3-.4-.4-.6-1.1.5-1.7 1.3-1.6 2 .2 1.4 2.9 2.7 8.4 2.3 8-.5 9.5-2.9 9.8-3.7.2-.6 0-1.1-.1-1.2-.4-.4-1.6-.7-2.8-.9-.1.5-.2.8-.4 1.1z" fill="#FFF"/><path d="M85.3 156c.8-2.2.7-4.1.4-5.2-.1.3-.3.6-.5.9h.1c.3 0 .5.3.5.6-.2 1.1-2.1 2.4-2.6 2.8-.1.1-.2.1-.3.1-.2 0-.4-.1-.5-.3 0-.1-.1-.1-.1-.2-.2.1-.3.1-.5.2-1.1.4-2.3.7-2.8 2.1-.6 1.7.6 3 .6 3.1.2.2.2.6 0 .8-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-1.6-1.8-.9-4.2.6-1.9 2.2-2.4 3.4-2.8-.1-.5-.1-1-.2-1.5-1.6 1.5-4.4 3-9.3 4.2-2.3.6-4.1.8-5.6.8-.7 0-1.3-.1-1.9-.1 3.2 4.1 6.2 8.2 6.8 10 2.5 1 4.3-.2 4.3-.2.3-.2.6-.1.8.2.2.3.1.6-.2.8-.1 0-1.2.8-2.9.8-.6 0-1.2-.1-1.9-.3 0 .4-.1 1-.2 1.5-.2 1.8-.6 4.8 0 5.9.3.3 2.3.5 4.9-.3 3-.9 5.1-2.6 5.6-4.4.6-2.2.5-6.9.2-11.4-.2 0-.3.1-.3.1-.3.1-.6-.1-.7-.4-.1-.3.1-.6.4-.7.3-.1 3.4-.9 4.2-2.8z" fill="url(#B)"/></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_private.svg b/browser/extensions/onboarding/content/img/figure_private.svg
new file mode 100644
index 000000000000..f90163e4b4d7
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_private.svg
@@ -0,0 +1 @@
+<svg width="289" height="237" viewBox="0 0 289 237" xmlns="http://www.w3.org/2000/svg"><title>private-browsing</title><defs><linearGradient x1="12.376%" y1="17.359%" x2="82.943%" y2="91.352%" id="a"><stop stop-color="#E60024" offset="0%"/><stop stop-color="#ED00B5" offset="51.53%"/><stop stop-color="#8000D7" offset="100%"/></linearGradient><linearGradient x1="-3.914%" y1=".14%" x2="98.417%" y2="106.522%" id="b"><stop stop-color="#E60024" offset="0%"/><stop stop-color="#ED00B5" offset="51.53%"/><stop stop-color="#8000D7" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-30-29h352v303H-30z"/><g fill-rule="nonzero"><g><ellipse fill="#EDEDF0" cx="226.9" cy="229.8" rx="54.2" ry="6.7"/><g fill="#D7D7DB"><path d="M195.6 79.5h-76.5c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h76.5c.6 0 1.1.5 1.1 1.1 0 .6-.4 1.1-1.1 1.1zM148.7 73.8h-19.2c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h19.2c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zM260.7 84.5h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0
.6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.3 0h-13.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-23.4 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.3 0h-13.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-23.4 0H177c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-12.2 0h-13.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6z"/></g><g transform="translate(171 26)"><path d="M31.5 4.5c0 .1 0 .1-.1.2l-3.7.6-2.3.4c-.1 0-.1 0-.2-.1l-.7-4.2c0-.1 0-.1.1-.2l6-.9c.1 0 .1 0 .2.1l.7 4.1z" fill="#D7D7DB"/><path d="M35 26.7L5.2 31.4c-.8.1-1.5-.4-1.7-1.2L.2 9.2c-.1-.8.4-1.5 1.2-1.7l29.8-4.7c.8-.1 1.5.4 1.7 1.2l3.3 21c.1.8-.4 1.5-1.2 1.7z" fill="#D7D7DB"/><path d="
M32.1 9.4s-.1.1 0 0l-4.8.8h-.1l-.3-1.9s0-.1.1-.1l4.7-.7h.1l.3 1.9z" fill="#F9F9FA"/><circle transform="rotate(-8.946 119.14 -7.38)" cx="2.592" cy="2.794" r="1.7" fill="#F9F9FA"/><circle transform="rotate(-8.946 52.95 -31.036)" cx="11.1" cy="10.705" r="9.3" fill="#F9F9FA"/><path d="M17.2 10.9c-3.2.5-5.4 3.5-4.9 6.7s3.5 5.4 6.7 4.9 5.4-3.5 4.9-6.7c-.5-3.3-3.5-5.4-6.7-4.9z" fill="#D7D7DB"/><circle fill="#F9F9FA" transform="rotate(-8.946 19.487 14.795)" cx="19.487" cy="14.795" r="1.1"/></g><g transform="translate(46)"><path d="M30.4 4.8c0 .1 0 .1-.1.1l-3.6.3-2.2.2c-.1 0-.1 0-.1-.1L24 1.2c0-.1 0-.1.1-.1l5.8-.5c.1 0 .1 0 .1.1l.4 4.1z" fill="#D7D7DB"/><path d="M32.3 26.2L3.5 28.7c-.8.1-1.4-.5-1.5-1.3L.2 7.1c-.1-.8.5-1.4 1.3-1.5l28.8-2.5c.8-.1 1.4.5 1.5 1.3l1.8 20.3c0 .7-.6 1.4-1.3 1.5z" fill="#D7D7DB"/><path d="M30.6 9.4c0 .1 0 .1 0 0l-4.7.5c-.1 0-.1 0-.1-.1l-.2-1.9s0-.1.1-.1l4.6-.4c.1 0 .1 0 .1.1l.2 1.9z" fill="#F9F9FA"/><circle transform="rotate(-4.97 187.782 -12.435)" cx="2.497" cy="2.6
01" r="1.7" fill="#E1E1E6"/><circle transform="rotate(-4.97 70.888 -67.624)" cx="9.799" cy="10.501" r="8.9" fill="#F9F9FA"/><path d="M16.3 9.9c-3.1.3-5.4 3-5.1 6.1.3 3.1 3 5.4 6.1 5.1 3.1-.3 5.4-3 5.1-6.1-.3-3.1-3-5.4-6.1-5.1z" fill="#D7D7DB"/><circle fill="#F9F9FA" transform="rotate(-4.97 18.195 13.8)" cx="18.195" cy="13.8" r="1"/></g><path d="M170.8 55.2h24.5s-7.7-17.2 8.6-19.4c14.5-2 20.3 13 20.3 13s1.7-8.6 10.4-7c8.5 1.6 14.8 15.3 14.8 15.3h21.4" fill="#F9F9FA"/><path d="M271.2 53.1h-8.6c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h8.6c.3 0 .6.2.6.6 0 .3-.3.6-.6.6zm-18.6 0h-1.1c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6-.1.3-.3.6-.6.6zm-56.9-.7h-2.2c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.4c0-.1-.1-.2-.1-.3-.1-.3 0-.6.3-.7.3-.1.6 0 .7.3.2.6.4 1 .4 1 .1.2.1.4 0 .5-.1.3-.3.4-.5.4zm-11.1 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm63.8-1.8c-.2 0-.4-.1-.5-.3-.6-1-1.2-1.9-1.9-2.7-.2-.2-.1-.6.1-.8.2-.2.6-.1.8.1.7.9 1.3 1.8 1.9 2.8.2.3.1.6-.2.8 0 .1-.1.1-.2.1zm-5
4.2-3.5c-.3 0-.5-.2-.5-.5-.1-.4-.1-.7-.2-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.2 1.1 0 .2-.2.5-.6.6zm28.8-4.2c-.2 0-.4-.1-.5-.3l-.6-.9c-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.3.4.7.6 1 .2.3.1.6-.2.8-.1-.1-.2 0-.3 0zm17.3-1.4c-.1 0-.2 0-.3-.1-1.7-1.2-3.4-2-5.1-2.4-.7-.1-1.4-.2-2-.2-1.8 0-3.3.5-4.6 1.5-.2.2-.6.2-.8-.1-.2-.2-.2-.6.1-.8 1.5-1.2 3.3-1.8 5.3-1.8.7 0 1.5.1 2.2.2 1.8.4 3.7 1.2 5.6 2.5.2.2.3.5.1.8-.1.3-.3.4-.5.4zm-20.7-3.1c-.1 0-.3-.1-.4-.2-.8-.8-1.6-1.5-2.4-2.1-.2-.2-.3-.5-.1-.8.2-.2.5-.3.8-.1.9.7 1.8 1.4 2.6 2.3.2.2.2.6 0 .8-.2.1-.3.1-.5.1zm-23.1-1.8c-.1 0-.3 0-.4-.2-.2-.2-.2-.6 0-.8 1.8-2 4.6-3.2 8.2-3.7 1.6-.2 3.2-.2 4.7-.1.3 0 .5.3.5.6s-.3.5-.6.5c-1.4-.2-2.9-.1-4.5.1-3.3.5-5.9 1.6-7.5 3.4-.1.1-.2.2-.4.2z" fill="#D7D7DB"/><path d="M271.9 57.4H170.8c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1H272c.6 0 1.1.5 1.1 1.1-.1.6-.6 1.1-1.2 1.1z" fill="#F9F9FA"/><g><path d="M26.5 27h13.7s-4.3-9.5 4.8-10.8c8.1-1.1 11.3 7.2 11.3 7.2s1-4.8 5.8-3.9c4.7.9 8.2 8.5 8.2 8.5h11.9" fill="#F9F9FA"/><pat
h d="M40.3 25.5H26.9c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm41.5-.2h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-19.6-3.4c-.2 0-.4-.1-.5-.4 0 0-.1-.4-.4-.9-.1-.3 0-.6.2-.8.2-.1.4-.1.6 0 .7-1.5 2.2-3.2 4.7-3.2.4 0 .8 0 1.3.1 1.4.3 2.9 1 4.3 2.2.2.2.3.6.1.8-.2.2-.6.3-.8.1-1.3-1.1-2.5-1.7-3.8-2-.4-.1-.7-.1-1.1-.1-3.3 0-4 3.4-4 3.5 0 .2-.2.4-.4.4-.1.3-.1.3-.2.3zm-16-4.8c-.1 0-.2 0-.3-.1-.3-.2-.3-.5-.1-.8.7-1 1.7-1.7 2.9-2.1.3-.1.6 0 .7.3.1.3 0 .6-.3.7-1 .4-1.8 1-2.4 1.7-.2.3-.4.3-.5.3zm8.1-2.3h-.1c-.3-.1-.7-.1-1-.1-.3 0-.5-.3-.5-.6s.3-.5.6-.5c.4 0 .8.1 1.2.2.3.1.5.4.4.7-.1.1-.3.3-.6.3z" fill="#D7D7DB"/><path d="M83 29.3H26.7c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1H83c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z" fill="#F9F9FA"/></g><g><path d="M6.5 172.2c-2.8 0-5-2.1-5-4.8v-118c0-2.9 2.4-5.3 5.3-5.3h126.7c2.9 0 5.3 2.4 5.3 5.3v118c0 2.6-2.3 4.8-5 4.8H6.5z" f
ill="#FFF"/><path d="M133.5 45.1c2.3 0 4.2 1.9 4.2 4.2v118c0 2-1.8 3.7-3.9 3.7H6.5c-2.2 0-3.9-1.6-3.9-3.7V49.4c0-2.3 1.9-4.2 4.2-4.2h126.7v-.1zm0-2.2H6.8c-3.6 0-6.5 2.9-6.5 6.5v118c0 3.3 2.8 5.9 6.2 5.9h127.3c3.4 0 6.2-2.6 6.2-5.9v-118c0-3.6-2.9-6.5-6.5-6.5z" fill="#D7D7DB"/><path d="M133.1 66.2v99.1c0 1-.1 1.2-.1 1.2s-.3.1-1.2.1H8.5c-1 0-1.2-.1-1.2-.1s-.1-.3-.1-1.2V66.2h125.9zm1.2-1.1H6.1v100.2c0 2.1.4 2.5 2.5 2.5h123.3c2.1 0 2.5-.4 2.5-2.5V65.1h-.1z" fill="#D7D7DB"/><g fill="#D7D7DB"><circle cx="3.6" cy="3" r="2.9" transform="translate(10 52)"/><circle cx="2.9" cy="3" r="2.9" transform="translate(20 52)"/><path d="M102 58.3H38.3c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1H102c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.7-1.4 3.1-3.1 3.1z"/><g><circle cx="3.5" cy="3" r="2.9" transform="translate(114 52)"/><circle cx="3.7" cy="3" r="2.9" transform="translate(123 52)"/></g></g><path d="M88.2 127.5c-7.2 0-12.1-8.6-19-8.6s-12.2 8.6-19 8.6c-8.8 0-15.4-8.3-15.5-22.6-.1-8.9 2.6-11.7 14.1-11.7s14.8
4.7 20.4 4.7c5.6 0 8.9-4.7 20.4-4.7 11.5 0 14.1 2.8 14.1 11.7-.1 14.3-6.7 22.6-15.5 22.6zm-33.8-23.4c-7 .3-9.8 4.4-9.8 5.5 0 1 4.6 3.9 9.1 3.9s9.8-1.7 9.8-3.1c.1-1.7-2.5-6.6-9.1-6.3zm29.6 0c-6.6-.3-9.1 4.6-9.1 6.2 0 1.5 5.3 3.1 9.8 3.1 4.5 0 9.1-2.9 9.1-3.9 0-.9-2.8-5.1-9.8-5.4z" fill="#D7D7DB"/></g></g><path d="M215.6 218.3c.2.5.4.9.6 1.4.4.9.8 1.6 1.2 2.2-.4-.6-.7-1.4-1.2-2.2-.2-.5-.4-.9-.6-1.4z" fill="#FFF"/><g transform="translate(78 151)"><ellipse fill="#EDEDF0" cx="25.2" cy="77.6" rx="21.9" ry="4.3"/><circle fill="#D7D7DB" cx="24.7" cy="37.4" r="6.9"/><path d="M30.2 80.7c-.6 0-1-.4-1.1-1l-4.6-39.3c-4.8 15.4-10.8 34.9-11 36.3 0 .6-.5 1.1-1.1 1.1-.6 0-1.1-.5-1.1-1.2 0-1.3 8.8-29.7 12.7-41.9.2-.5.7-.8 1.2-.8s.9.5 1 1l5.3 44.5c.1.6-.4 1.2-1 1.2-.2.1-.3.1-.3.1z" fill="#D7D7DB"/><path d="M35 75.4c-.5 0-1-.3-1.1-.8L23.8 35.3c-.2-.6.2-1.2.8-1.4.6-.2 1.2.2 1.4.8L36.1 74c.2.6-.2 1.2-.8 1.4H35zM38.9 5.7c0 .1 0 .2-.1.2l-4.6.9-2.8.6c-.1 0-.2 0-.2-.1l-1-5.3c0-.1 0-.2.1-.2L37.7.3c.1 0 .2 0 .
2.1l1 5.3z" fill="#D7D7DB"/><path d="M44.4 33.2l-37 7.3c-1 .2-1.9-.4-2.1-1.4L.1 13c-.2-1 .4-1.9 1.4-2.1l37-7.3c1-.2 1.9.4 2.1 1.4l5.2 26.1c.2 1-.4 1.9-1.4 2.1z" fill="#D7D7DB"/><path d="M39.5 9.7c0 .1 0 .1-.1.1L33.5 11c-.1 0-.1 0-.2-.1l-.6-3.2c0-.1 0-.1.1-.1l5.9-1.2c.1 0 .1 0 .2.1l.6 3.2z" fill="#F9F9FA"/><circle transform="rotate(-11.21 127.568 -5.075)" cx="3.292" cy="3.304" r="2.2" fill="#F9F9FA"/><circle transform="rotate(-11.21 54.056 -27.865)" cx="13.892" cy="14.489" r="11.7" fill="#F9F9FA"/><path d="M21.4 14.3c-4 .8-6.5 4.6-5.8 8.6.8 4 4.6 6.5 8.6 5.8 4-.8 6.5-4.6 5.8-8.6-.7-4-4.6-6.6-8.6-5.8z" fill="#D7D7DB"/><path d="M21.8 16.1c-2.9.6-4.8 3.4-4.3 6.4.6 2.9 3.4 4.8 6.4 4.3 2.9-.6 4.8-3.4 4.3-6.4-.6-3-3.5-4.9-6.4-4.3zm2.9 4.4c-.7.1-1.4-.3-1.6-1-.2-.7.3-1.4 1-1.6.7-.1 1.4.3 1.6 1 .2.7-.3 1.4-1 1.6z" fill="#F9F9FA"/></g><g><path d="M281 118c.4-.9 1.4-1.3 2.3-.9.2.1.4.2.5.4-.1-.2-.3-.3-.5-.4-.2-.1-.5-.2-.7-.2-.7 0-1.3.4-1.6 1.1l-.1.1.1-.1zM265.6 124.8c0 .1 0 .1.1.2h-.1.1c0-.1-.1-
.2-.1-.2zM277.6 116.2c.1-.9.9-1.7 1.8-1.6.4 0 .6.2.8.4-.2-.2-.4-.3-.8-.4h-.1c-.9 0-1.6.7-1.7 1.6 0 0 0 .5-.1 1.2.1-.7.1-1.1.1-1.2zM179.4 147.8c-.4-.1-.7-.3-1-.6.2.3.6.5 1 .6zM184.1 82.5c2.8-1.7 11.1.7 17.1 3.9 1.5.8 3.4 1.9 5.1 3.4 3-1.1 6.5-2.1 10.9-2.9 4.4-.8 8.2-1 11.4-.8 1.2-2 2.6-3.8 3.8-5.1 4.6-5.1 11.6-10.1 14.7-9.5 3.7.7 10.7 12.6 10.2 25.1l.1.1c.5-12.6-6.5-24.6-10.3-25.3-.2 0-.4-.1-.6-.1-3.5 0-9.9 4.8-14.2 9.6-1.2 1.3-2.6 3.1-3.8 5.1h-1.7c-2.8 0-5.9.2-9.5.9-4.3.8-7.9 1.8-10.8 2.9-1.8-1.4-3.7-2.6-5.2-3.4-4.6-2.5-10.6-4.5-14.4-4.5-1.2 0-2.1.2-2.8.6-3.3 2-5.8 15.5-1.1 27.1 0-.1.1-.1.1-.2-4.7-11.6-2.3-25 1-26.9zM272.8 116.3c-.5-.9-.1-2.1.8-2.5.9-.5 1.6.7 2.1 1.3.5.5.9.7 1.3 1.4-.4-.7-.8-.8-1.3-1.4-.4-.5-1-1.4-1.7-1.4-.1 0-.3 0-.4.1-.9.4-1.3 1.6-.8 2.5l1.4 2.9.6 1.3-.6-1.3-1.4-2.9zM266.8 122.7c.7-.3 1.2-.9 1.6-1.2.7-.5 2.4-.8 3.3-.6 1 .2 2 .4 2.8.8-.9-.4-1.8-.6-2.8-.8h-.5c-.9 0-2.2.3-2.8.7-.4.2-.9.8-1.6 1.1-.3.1-.6.3-.9.5.3-.2.6-.4.9-.5zM180.6 127.8c0 .3.1.6.1.9.1.6.2 1.2.4 1.7-
.1-.6-.3-1.1-.4-1.7 0-.4 0-.7-.1-.9zM183.5 110.6c0 .1-.1.1-.1.2-.1.2-.1.3-.2.5.1-.2.2-.5.3-.7zM206.3 174.4c-1.3 3.9-2.3 7.7-2.9 11.2.6-3.6 1.6-7.6 3-11.5-.1.2-.1.2-.1.3zM166.4 141.2c-.3-.4-.3-.7-.7-1.3.4.6.4.9.7 1.3zM168.8 133.7h-.2c.3 0 .6 0 .8.1-.1-.1-.4-.1-.6-.1zM171 135.2c.2-1 .6-1.3.9-2 .3-.7.6-2 1.7-1.9.5.1.9.4 1.2.8-.3-.4-.7-.7-1.2-.8h-.2c-.9 0-1.2 1.2-1.5 1.9-.4.7-.8.9-.9 2 0 .2-.1.4-.1.7 0-.3 0-.5.1-.7zM167.8 137.6c-.1-.5-.1-1.2-.2-1.8-.2-.9-.3-1.6.6-2 .1 0 .1 0 .2-.1h-.2c-.9.3-.8 1.1-.6 2 .1.7.1 1.3.2 1.9l-.1-.1c-.3-.4-.8-.6-1.3-.6h-.2c.5-.1 1.1.1 1.5.6l.1.1zM199.5 161.1l-.2.2c-.5.4-1.2.7-1.8.7-.8 0-1.6-.4-2.2-1-.1-.1-2.7-3.3-4.4-7.2-.6-1.5-1.2-3-1.7-4.4-.4.9-.8 1.7-1.4 2.4.1.3.1.6.1.9 0 .3.5 6.4 6.5 8.9 1.8.8 3.6 1.1 5.4 1.1 3.3 0 6-1.2 7.9-2.4-2.8.5-5.5.8-7.5.8h-.7zM171.2 146.5s.1 0 0 0c.1 0 0 0 0 0zM259.3 150.6c-1.4.6-3.2 1.1-5.1 1.5 1.9-.1 3.7-.5 5.4-1.3-.2-.1-.2-.2-.3-.2zM266.1 138.4c-.1-.3-.1-.6-.2-1-.2-.1-.4-.3-.6-.5 0 1.3-.1 2.6-.1 3.9-.1 2.4-.6 4.6-1 6.2 2.9-3.9 1
.9-8.4 1.9-8.6zM172.9 149.4c.1.3.3.5.5.7-.2-.2-.4-.5-.5-.7zM185 139.2l-.6.1.6-.1zM180.7 137.2c.5.1 1.2.6 1.9.6.5.1 1.2.1 1.6.7-.4-.6-1-.6-1.6-.7-.7-.1-1.4-.5-1.9-.6-.3-.1-.6-.1-.9-.1-.9 0-1.9.2-2.4.5-.6.3-1.1.6-1.6 1 .5-.4 1.1-.7 1.6-1 .8-.5 2.5-.7 3.3-.4zM165.3 137.3c.1-.1.1-.1.2-.1-.1 0-.2 0-.2.1-.6.5-.6 1.2-.1 1.9-.5-.7-.5-1.3.1-1.9zM154.9 192c0-.2.1-.3.2-.5.3-.2 4.6-3.8 12.5-6.1.1-.2.2-.3.4-.4.3-.1.6-.1.9 0 2.2-.6 4.7-1 7.5-1.3l.3-.3c.5-.3 1.1-.2 1.4.2.3 0 .7-.1 1-.1 2.2-.1 4.3 0 6.3.1.3-.2.6-.3.9-.3.1 0 .3.1.6.3 3 .2 5.6.7 7.8 1.2.4-.4 1-.4 1.4-.1 0 0 .3.2.6.6 2.7.7 4.5 1.4 5.5 1.9v-.1c-.9-.4-2.7-1.1-5.3-1.8-.4-.4-.7-.6-.7-.7-.2-.2-.5-.3-.8-.3-.3 0-.6.1-.9.4-2.1-.5-4.7-.9-7.6-1.1-.3-.3-.5-.4-.7-.4h-.2c-.3 0-.6.1-.9.3-1.2-.1-2.5-.1-3.8-.1H179c-.3 0-.6 0-.9.1-.2-.3-.6-.5-1-.5-.2 0-.4.1-.7.2-.2.1-.3.2-.4.4-2.6.2-5.1.7-7.3 1.2-.2-.1-.4-.2-.6-.2-.2 0-.3 0-.5.1s-.4.3-.5.5c-7.8 2.3-12.1 5.9-12.4 6.1.2.3.1.5.2.7-2.4 1.7-4.1 3.7-4.5 5.9-.1.5-.1 1.1-.1 1.6 0-.5 0-1 .1-1.6.5-2.2 2.2-4.2 4
.5-5.9zM246.5 220.3c.1-1.9.2-5.6.3-9.1-.1 3.4-.2 7.2-.3 9.1 0 1 0 1.8.2 2.3-.1-.6-.2-1.4-.2-2.3zM208.9 217.4c.2.5.4.9.6 1.4.4.9.8 1.6 1.2 2.2-.4-.6-.7-1.4-1.2-2.2-.2-.4-.4-.9-.6-1.4z" fill="#FFF"/><path d="M285.4 113.6c-.4-.2-.7-.3-1.1-.4-1.3-2.1-3.4-2.4-4.3-2.5h-.5c-.6 0-1.2.1-1.8.3-.8-.6-2-1.2-3.4-1.2-.8 0-1.6.2-2.4.6-.7.3-1.2.7-1.7 1.2-1.3-5.5-4.1-10.6-8.1-14.9.3-13.8-7.2-27.9-13.9-29.2-.5-.1-1-.1-1.5-.1-6 0-13.9 7-17.6 11.1-.8.9-1.9 2.2-2.9 3.6-3.1 0-6.3.4-9.6.9-3.3.6-6.4 1.3-9.3 2.3-1.4-1-2.8-1.8-3.8-2.3-4.3-2.3-11.2-5-16.5-5-2.1 0-3.8.4-5.1 1.2-5.8 3.5-8.1 19.3-3.1 32.2-2.3 5.4-3.1 11.2-2.5 16.8-.6-.3-1.2-.5-1.9-.6-.3-.1-.6-.1-.9-.1-1.4 0-3.1.5-4.5 2.4-.8 0-1.5.1-2.2.4-.8.3-2.7 1.3-3.3 3.6-.3.2-.6.4-.9.7-2.1 1.8-3 5.1-.3 8.4v.1c.2.4.5 1.1 1.1 1.9.1.1.3.4.6.7 1 1.2 1.8 2.1 2.3 2.7l.7.7.6.6c.4 1 .9 1.8 1.5 2.6.1.1.2.3.3.4.2.3.4.5.5.8 1.4 1.9 2.9 3.2 4.5 4.2 1.1 4.9 4.5 13.3 14.6 17.6 3.6 1.5 7.3 2.3 11.1 2.3h.9c-.5 1.6-.8 3.1-1.2 4.6-.1 0-.2-.1-.3-.1-.1-.1-.1-.1-.2-.1-1-.8-2.3-1
.3-3.6-1.3-.5 0-.9.1-1.4.2-1.8-.3-3.7-.6-5.6-.8-.4-.2-.9-.4-1.3-.5-.4-.1-.7-.1-1.1-.1-.6 0-1.2.1-1.8.3-1 0-1.9-.1-2.9-.1h-2.1c-.7-.3-1.4-.4-2.1-.4-1 0-2 .3-2.8.8-1.9.2-3.7.5-5.5 1h-.6c-.8 0-1.6.2-2.4.5-.4.2-.7.4-1 .6-7.9 2.5-12.4 6.2-12.9 6.6-.4.3-.8.7-1 1.2-2.8 2.3-4.5 4.9-5.1 7.7-1.3 6.3 3.3 12.9 12.1 17.4.2.4.5.9.8 1.2 1.1 1.3 2.7 2 4.3 2 .7 0 1.3-.1 1.9-.3 2.3.7 4.7 1.3 7.1 1.6l.1.1c1 .8 2.3 1.3 3.6 1.3 1.1 0 2.2-.3 3.2-.9.8 0 1.6-.1 2.4-.1 1.9-.2 3.7-.4 5.6-.8.1 0 .2.1.3.1.8.3 1.6.5 2.4.5 1.9 0 3.7-1 4.8-2.6 1.4-.5 2.7-1 4.1-1.5.6.2 1.3.3 1.9.3.9 0 1.8-.2 2.6-.6.7 2.3 1.5 4.3 2.4 6.2 2.8 5.5 4.9 8.5 8.3 8.5 1.3 0 2.6-.5 3.6-1.5 1.6-1.7 1.8-4 1.7-6.1 0-1.1-.1-2.8-.1-4.7 1.2.2 2.4.3 3.7.4 1.9.2 3.9.2 5.7.2 4.9 0 9.6-.5 13.8-1.5 0 1.6-.1 3-.1 4-.1 2.1.1 4.4 1.7 6.1.9 1 2.2 1.5 3.6 1.5 3.4 0 5.5-3 8.3-8.5 2.5-5 3.6-10.7 4.1-14.8 3-8.3.5-23.5-2.4-31.9-.7-2.1-1.5-4.2-2.2-6.2 6.1-.3 11.7-2.5 16.6-6.6 8.3-7.1 9.1-16.1 8.8-21.1 1.2-1.3 2.3-3.1 3-5.3l.3-.9c.1-.2.1-.3.2-.5.3-.9.5-1.9.7-2.
9l.5-.9.4-.8c.3-.7.8-1.8 1.5-3.2.1-.3.3-.6.3-.8.4-.9.5-1.7.5-2.1v-.1c1.5-4.3-.3-7.2-2.8-8.3z" fill="#F9F9FA"/><path d="M183.3 144.3c.3 1.5-.5 2.9-1.9 3.5-.4.2-.8.2-1.2.2h-.5c.5.1 1.1 0 1.6-.2 1.5-.6 2.3-2.1 2-3.5-.1-.7.1-1.3.4-1.8-.3.4-.5 1.1-.4 1.8zM164.1 212.7c-.2.2-.5.3-.7.3-.3 0-.6-.1-.8-.4-.3-.3-.3-.8-.2-1.2 0 0-.1 0-.1-.1-.2.4-.1 1 .2 1.3.2.3.6.4 1 .4.1.1.4 0 .6-.3.1.1.3-.1.6-.4h-.1c-.3.3-.5.4-.5.4zM176.9 215.2c-.2.3-.5.4-.9.4-.2 0-.5-.1-.7-.3-.2-.2-.3-.4-.4-.7h-.2c0 .3.2.6.4.8.2.2.5.3.8.3.5.1.9-.1 1-.5.1 0 .3-.1.4-.4h-.1c-.1.3-.2.4-.3.4zM205.9 205.9c.1 1.1.3 2.3.6 3.6-.2-1.3-.4-2.5-.6-3.6.1 0 0 0 0 0zM190.8 213.7c-.2.4-.6.7-1 .7-.2 0-.3 0-.5-.1-.3-.2-.6-.5-.6-.8h-.1c.1.4.3.7.7.9.2.1.3.1.5.1.5 0 .9-.3 1.1-.7 0-.1.2-.4.4-1h-.2c-.1.5-.2.9-.3.9zM201.6 210c-.2.4-.6.6-1 .6-.2 0-.3 0-.5-.1-.3-.2-.5-.5-.6-.9 0 0-.1 0-.1.1.1.4.3.7.6.9.2.1.4.1.6.1.5 0 .9-.2 1.1-.7 0-.1.4-.8.8-2-.1 0-.1.1-.2.1-.4 1.2-.7 1.8-.7 1.9zM271.1 131.8h-.3c-.9-.1-1.7-.6-2.3-1.3.5.7 1.3 1.2 2.3 1.3 1.7.1 3.2-1.1
3.4-2.9.1-.8-.2-1.7-.6-2.4.5.7.7 1.6.6 2.4-.1 1.7-1.5 2.9-3.1 2.9zM197.7 158.4c.1.2.2.3.2.3.2.2.2.6 0 .8-.1.1-.2.2-.4.2-.1 0-.3-.1-.4-.2 0 0-.4-.4-.8-1 .4.6.7.9.8 1 .1.1.3.2.5.2.1 0 .3 0 .4-.1.3-.2.3-.6.1-.9.6.1 1.4.2 2.3.2 3 0 7.6-.7 12-1.9l-.1-.1c-4.6 1.2-9 1.9-11.9 1.9-1.2-.1-2.1-.2-2.7-.4zM191.5 146.3c.5 1.6 1.1 3.4 1.8 5.2-.5-1.5-.9-3-1.2-4.7-.2-.1-.4-.3-.6-.5zM181.1 143.8h-1.5c-.2.4-.2.9-.1 1.4.2.4.5.6.8.6.1 0 .2 0 .3-.1.4-.2.6-.6.5-1v-.9zM244.6 151s0 .1-.1.1c6.9-.5 13.9-2.1 15.9-3.7-.1.3-.2.5-.2.5-.1.3.1.7.4.8h.2c.3 0 .5-.2.6-.4 0-.1.6-1.6 1-3.8-.5 2.1-1 3.6-1.1 3.7-.1.2-.3.4-.5.4h-.2c-.3-.1-.4-.4-.3-.7 0 0 .1-.4.3-1 0 0 0 .1-.1.1-1.3 1.7-8.3 3.5-15.9 4zM264.4 132.1c.1.2.2.5.3.7-.1-.2-.2-.4-.3-.7-.3-.6.1-1.8 0-2.5 0-.3-.1-.6-.1-.8 0 .3 0 .5.1.8.1.8-.2 1.9 0 2.5zM212.1 159.6c.3-.7.6-1.3.9-1.9-.3.6-.6 1.2-.9 1.9zM262.1 133.6c-.1.2-.2.4-.4.6.2 1.7.3 3.4.4 4.9.1-2 0-3.9 0-5.5z" fill="#FFF"/><path d="M271.1 129.6c.5 0 .9-.4 1-.8 0-.5-.2-1-.5-1.3l-1.5.5c.1.3.1.5.2.8 0 .4.3.8.8.8z"
fill="#FFF"/><path d="M196.3 184.9c-.4-.3-1-.3-1.4.1-2.2-.5-4.8-.9-7.8-1.2-.2-.2-.4-.3-.6-.3-.3-.1-.7 0-.9.3-1.9-.1-4-.1-6.3-.1-.4 0-.7 0-1 .1-.4-.4-1-.5-1.4-.2l-.3.3c-2.7.3-5.2.7-7.5 1.3-.3-.1-.6-.2-.9 0-.2.1-.3.2-.4.4-7.8 2.3-12.2 5.9-12.5 6.1-.1.1-.2.3-.2.5 0 .1 0 .2.1.3.1.1.3.2.4.2.1 0 .3 0 .4-.1.1 0 4.2-3.5 11.7-5.7.3.8 2.2 5.7.6 13.1-1.7 7.9-5.5 11.3-5.5 11.3-.1.1-.2.2-.3.4-.2.4-.1.9.2 1.2.2.3.5.4.8.4.3 0 .5-.1.7-.3l.4-.4c1.1-1.2 4.2-4.9 5.8-12.1 1.6-7.4 0-12.6-.6-14.1 2-.5 4.3-.9 6.7-1.2v.1c0 .1 3.5 5.6 2.9 15-.6 9.3-4.1 13.8-4.2 13.8-.2.3-.3.6-.2.9 0 .3.2.5.4.7.2.2.5.3.7.3.3 0 .6-.1.9-.4 0 0 .1-.2.3-.4.9-1.3 3.9-6.1 4.4-14.7.5-7.9-1.7-13.3-2.7-15.4h.4c2.1-.1 4 0 5.9.1.1.2.2.5.5.7.1.1.1.1.2.1.9.9 4.4 5 5 11.8.8 8.8-2 15.3-2.1 15.3-.1.2-.1.4-.1.6.1.4.3.7.6.8.1.1.3.1.5.1.4 0 .8-.2 1-.7 0-.1.2-.4.4-.9.8-2.2 2.6-8 1.9-15.5-.6-5.8-3-10.1-4.8-12.2 2.4.2 4.5.6 6.3 1 .1.2.2.4.4.6 0 0 4.1 3.3 5.5 9.6 1.7 7.6-.8 12.7-.8 12.8-.1.2-.1.4-.1.6 0 .4.2.7.6.9.2.1.3.1.5.1.4 0 .8-.2 1-.6 0-.1.4
-.7.7-1.8.7-2.3 1.6-6.7.3-12.5-.9-4-2.7-6.9-4.2-8.7 2.3.7 3.7 1.3 4.1 1.5 0-.5-.1-.9-.1-1.3-1-.4-2.8-1.2-5.5-1.9-.5-.5-.8-.7-.8-.7zM240.9 161.8c-2.2 1.7-5.8 3.7-11 4.4-5.7.8-10.2-.7-12.9-2.1-4.7 6.9-9.4 17.7-9.1 27.9.4 16.8 14.5 19.1 23.7 18.7 6-.3 11.7-2.4 15.5-6.7v-.1l.1-.1c2-2.3 3.4-5.1 4.1-8.6 1.9-10.3-2.7-20.6-6.9-28.5-1.1-1.9-2.3-3.6-3.5-4.9zM183.7 110.2c-.1.1-.1.2-.2.3.1 0 .2-.1.2-.3zM185.2 84.4c.3-.2.8-.3 1.5-.3 2.7 0 8.1 1.4 13.4 4.2 1.4.8 2.7 1.6 3.8 2.4-7.2 3.2-9.7 6.7-9.8 6.9-.2.3-.1.6.1.8.1.1.2.1.3.1.2 0 .3-.1.5-.2.1-.1 5.2-7.3 22.4-10.3 17.1-3 24.8 2.9 24.9 3 .2.2.6.2.8-.1.2-.2.2-.6-.1-.8-.2-.2-4-3.1-11.9-3.9.8-1.2 1.8-2.5 3-3.8 4.8-5.3 10.5-8.8 12.4-8.8h.2c2.1.4 8.4 10.1 8.4 21.3.7.5 1.4 1 2.2 1.6.5-12.5-6.4-24.3-10.2-25.1-3.2-.6-10.2 4.4-14.7 9.5-1.2 1.3-2.6 3.1-3.8 5.1-3.2-.1-7 .1-11.4.8-4.4.8-7.9 1.8-10.9 2.9-1.8-1.4-3.7-2.6-5.1-3.4-6-3.2-14.3-5.5-17.1-3.9-3.2 2-5.7 15.3-1.1 26.8.5-.8 1-1.6 1.5-2.2-3.7-10.4-1.1-21.5.7-22.6zM193.3 151.5c.1.2.2.4.3.7 1.2 2.9 3.4 5.5
4.1 6.3.6.2 1.5.3 2.6.3 2.9 0 7.3-.6 11.9-1.9-1.4-1.8-1.6-3.8-1.6-3.8v-.1c0-.1-.1-.3-.1-.4l-.1-1.2v-.4c-1.1.3-2.2.4-3.4.2l-2.5.4c-6.1 1.1-11.9-3-12.9-9l-.2-1.3h-.2c.2 1.8.5 3.8.9 5.6.3 1.6.8 3.1 1.2 4.6z" fill="#F9F9FA"/><path d="M196.3 124.7c.7-5 5.3-8.5 10.3-7.9l4.9.7c3.3.5 6 2.7 7.2 5.6 1.1-.8 2.4-1.4 3.8-1.6 1.4-.2 2.7-.2 4 .2.3-2.3 1.5-4.6 3.5-6.1l4-3c4-3.1 9.8-2.3 12.8 1.7l3.8 5 4.7-.8c.8-.1 1.6.4 1.8 1.2.1.7-.2 1.3-.8 1.6.8.6 1.4 1.7 1.7 3.3l1 5.8c1.1 6.1-3 11.9-9 12.9l-1.7.3c-1.1.4-2.3.6-3.5.6l-.5.1h-.3s0 .1.1.1l.1.1c0 .1.1.2.1.3l.2.5s.1.2.1.3l.1.4c0 .2.1.3.1.4l.1.6V148.4c0 .9-.2 1.7-.4 2.5 7.7-.5 14.6-2.3 16-3.9 0 0 0-.1.1-.1.5-1.5 1.3-4.6 1.4-7.3v-.6c0-1.6-.1-3.2-.4-4.9-.2-1.8-.6-3.6-1-5.4l-1.8.3-.5-3 1.4-.3c-.5-1.6-1.2-3.2-2.1-4.7 0-.2 0-.4-.1-.6-2.6-14.6-19.6-23.8-38-20.6-17.4 3.1-29.9 16.2-29 30l5.1-.9.7-4.2z" fill="#F9F9FA"/><path d="M210.5 150.9v-.1-.3h-.2l-3.2.6c1.1.1 2.3 0 3.4-.2zM245 144.3c1.2 0 2.3-.2 3.5-.6l-3.5.6zM229.5 159.8s.1 0 0 0z" fill="#D9EBFF"/><path d="
M43.7 146.5h-.1c-1.7.4-3.6.8-5.4 1h-.1c-.6.1-1.2.2-1.9.2-1 .1-1.9.1-2.9.1h-.9-.1c.9-1.3 3.9-6.1 4.4-14.7.5-7.9-1.7-13.3-2.7-15.4h.4c2.1-.1 4 0 5.9.1.1.2.2.5.5.7.1.1.1.1.2.1.9.9 4.4 5 5 11.8.8 8.8-2 15.3-2.1 15.3-.2.3-.2.5-.2.8zm-26.1-2.4s3.8-3.4 5.5-11.3c1.6-7.3-.2-12.3-.6-13.1-7.5 2.3-11.6 5.7-11.7 5.7-.1.1-.2.1-.4.1s-.3-.1-.4-.2c-.1-.1-.1-.2-.1-.3-2.4 1.7-4.1 3.7-4.5 5.9-.1.5-.1 1-.1 1.6v.1c0 .2 0 .4.1.6v.3c0 .2.1.4.1.6 0 .1.1.2.1.3.1.2.1.3.2.5.1.1.1.3.2.4.1.1.1.3.2.4l.3.6c.1.1.1.2.2.3 2 3 5.8 5.8 10.4 7.9 0 0 .1 0 .1.1.2-.3.3-.4.4-.5zm37-2.1s2.6-5.2.8-12.8c-1.4-6.3-5.4-9.6-5.5-9.6-.2-.2-.3-.4-.4-.6-1.8-.4-3.9-.8-6.3-1 1.8 2.2 4.3 6.4 4.8 12.2.7 7.5-1.1 13.4-1.9 15.5h.2c2.9-.9 5.6-1.9 8-3.1 0 0 .1 0 .1-.1.1-.1.1-.3.2-.5zm-24.4 4.8s3.6-4.5 4.2-13.8c.6-9.4-2.9-14.9-2.9-15v-.1c-2.4.2-4.7.6-6.7 1.2.6 1.5 2.2 6.7.6 14.1-1.6 7.2-4.7 10.9-5.8 12.1h.1c3.2 1.2 6.7 2 10.2 2.3h.2c-.2-.2-.1-.5.1-.8zm108.6-96.3c.3.4.3 1.1 0 1.9-.4 1.1-.2 1.4-.5 2-.3.7-1.3 3-1.7 3.8-.1.2-.7 1.2-1.3 2.5 0 .9-.2
1.8-.5 2.7-.1.2-.1.4-.2.6l-.3.9c-.7 1.9-1.8 4-3.6 4.9.5 2.6 1.6 12.4-6.9 19.6-5.1 4.3-10.5 5.6-15.1 5.6-1.4 0-2.8-.1-4-.3-1.2-2.5-2.8-4.8-2.9-4.9-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8 0 0 2.1 2.8 3.2 5.7 0 0 0 .1.1.1.1.2.1.4.2.6l.1.1c1.4 3.4 2.6 6.9 3.7 10.1 2.9 8.6 4.9 23.1 2.2 29.4-.4 3.7-1.4 9.2-3.7 13.9-2.2 4.3-3.5 6-4.3 6h-.2l-.1-.1-.1-.1s0-.1-.1-.1c0-.1-.1-.2-.1-.3-.2-.5-.2-1.3-.2-2.3.1-1.9.2-5.6.3-9.1 2.8-1.3 4.6-2.8 4.6-2.9.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0 0 0-1.8 1.6-4.4 2.7-4.6 1.8-10.6 3-17.9 3-1.7 0-3.5-.1-5.4-.2-3.4-.3-6.3-.8-8.7-1.5v.2c-2.1-.9-3.8-2.3-3.8-2.4-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.1.1 2.1 1.9 4.6 2.7.1 3.4.2 7 .3 8.9.1 1.8-.2 3-.8 3-.1 0-.2 0-.3-.1-.1 0-.2-.1-.3-.2l-.1-.1-.3-.3-.1-.1c-.1-.1-.2-.3-.3-.4l-.2-.2c-.1-.1-.2-.3-.3-.5-.1-.1-.2-.2-.2-.4-.1-.2-.2-.3-.3-.5-.1-.2-.2-.3-.3-.5-.1-.1-.2-.3-.2-.4-.4-.6-.7-1.4-1.2-2.2-.2-.5-.4-.9-.6-1.4 0-.1 0-.1-.1-.1-.2-.4-.4-.9-.5-1.3 0-.1-.1-.2-.1-.2-.2-.5-.3-.9-.5-1.4 0-.1 0-.1-.1-.2-.1-.5-.3-.9-.4-1.4 0-.1 0-.1-.1-.2-.1-.5-.
2-.9-.4-1.4v-.1c-.1-.5-.2-1-.3-1.4v-.1c-.2-1.3-.4-2.5-.6-3.5-1 .7-2.2 1.4-3.5 2.1-.1 0-.1.1-.2.1.7-2.3 1.6-6.7.3-12.5-.9-4-2.7-6.9-4.2-8.7 2.3.7 3.7 1.3 4.1 1.5.2 3 .7 7.5 1.4 11.6 0 .3.3.5.5.5h.1c.3-.1.5-.3.5-.6-1-5.8-1.5-12.1-1.6-14.3.6-3.6 1.6-7.6 3-11.5 2.2-6.1 4.2-8.1 4.2-8.1.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0-.1.1-1.7 1.7-3.6 6.3-1.9.5-4 .9-6.3.9-2.9 0-6-.6-9.3-2-10.2-4.4-12.1-14.1-12.4-16.7-2-.4-3.6-2-4.8-3.6-.2-.2-.3-.5-.5-.7-.1-.1-.3-.3-.4-.5-.2-.3-.5-.7-.7-1.1 0-.1-.1-.1-.1-.2-.2-.4-.3-.7-.5-1.1v-.1l-2-2c-.6-.6-2.2-2.6-2.7-3.1-.1-.1-.1-.1-.1-.2-.3-.4-.3-.7-.7-1.3-.1-.1-.1-.2-.2-.3-.1-.1-.2-.2-.2-.3-.5-.7-.6-1.4.1-1.9.1-.1.1-.1.2-.1l.1-.1c.1-.1.3-.1.5-.2h.1c.5-.1 1.1.1 1.5.6l.1.1c-.1-.5-.1-1.2-.2-1.8-.2-.9-.3-1.6.6-2 .1 0 .1 0 .2-.1h.2c.3 0 .6 0 .8.1 0 0 .1 0 .1.1.1 0 .2.1.2.1.1.1.2.2.3.2l.1.1c.1.1.2.3.2.4 0 0 .2.5.4 1.1 0-.3.1-.5.1-.7.2-1 .6-1.3.9-2 .3-.7.6-2 1.7-1.9.5.1.9.4 1.2.8.3.4.4.9.3 1.4l-.5 3.2-.4 2.3c-.5.9-1.2 2.1-1.7 3.4-.1.3.1.6.3.7h.2c.2 0 .4-.1.5-.4.7-1.9 1.7-3.5
2.2-4.2.5-.4 1.1-.7 1.6-1 .8-.4 2.5-.6 3.4-.4.5.1 1.2.6 1.9.6.5.1 1.2.1 1.6.7.1.2.2.4.2.8l-.7.1c-.8.1-1.4.9-1.2 1.8 0 .1.1.2.1.3-.2.1-.4.1-.7.1l-3.2-.1c-1.4.7-1.9 2.9-1.3 4.4.1.2.2.4.3.5 0 .1.1.1.1.1.1.1.1.2.2.3l.2.2c.1.1.1.1.2.1.3.3.7.4 1 .6.1 0 .3.1.4.1.5.1 1.1 0 1.6-.2 1.4-.6 2.2-2 1.9-3.5-.1-.7 0-1.3.4-1.9h.5l2.2-.4c.2.4.3 1.1.5 1.7.1.7.8 1.7.8 2.4-.2 1.9-1.2 3.9-2.5 5 .3.5.5 1 .5 1.6 0 .3.6 7.7 7.9 10.8 2.2 1 4.3 1.3 6.3 1.3 6.5 0 11.2-4.1 12.1-5 0-.1.1-.2.1-.3.3-.7.6-1.3.9-1.9.7.6 1.7 1.2 2.9 1.5 3.5 1 5.2.8 5.9.6.7.7 2.8 2.3 5.9 2.3.5 0 1.1-.1 1.7-.2 4.1-.8 6.3-3.7 6.8-4.5 1.1-.3 5.8-2 7.8-5.6l.9.3c.3.1 3.9 2 8.5 2 3.2 0 6.9-.9 10.4-3.8 6.1-5.2 4.4-12.6 4.3-12.6-.1-.6-.1-1.1 0-1.7-.9-.4-1.9-1.2-2.7-2.1-.1-.2-.3-.4-.4-.5-.1-.2-.2-.3-.3-.5 0 0 0-.1-.1-.1-.1-.2-.2-.4-.3-.7-.3-.7.1-1.8 0-2.5 0-.3-.1-.6-.1-.8-.4 1-.8 1.9-1.3 2.9-.1-1.3-.2-2.1-.2-2.1 0-.3-.3-.5-.6-.5s-.5.3-.5.6c0 0 .2 1.6.3 3.9-.1.2-.2.4-.4.6-.2-1.8-.6-3.6-1-5.4l4.9-.9c.5-.1.9-.4 1.1-.8.2.1.3.2.4.3.1.1.2.2.3.4 0 0
0 .1.1.1.1.1.2.3.2.4v.1c.1.2.1.4.1.6.1.6.3 1.1.6 1.5.5.7 1.3 1.2 2.3 1.3 1.7.1 3.2-1.1 3.4-2.9.1-.8-.2-1.7-.6-2.4-.5-.7-1.1-1.3-1.9-1.4l-3.1 1c-.2 0-.4.1-.7.1-.4 0-.8-.1-1.1-.2-.2-.5-.6-.9-1.1-1 0-.1-.1-.1-.1-.2v.2h-.5l-5.2.9c-.5-1.6-1.2-3.2-2.1-4.7 0-.2 0-.4-.1-.6-2.6-14.6-19.6-23.8-38-20.6-17.4 3.1-29.9 16.2-29 30h-.1c-.8.1-1.4.9-1.2 1.8.1.8.9 1.3 1.7 1.3-.5.9-.7 2-.4 3.6l.3 1.5-5.9 1c-.9-1.4-1.7-2.9-2.4-4.4-.1-.3-.2-.5-.3-.8-.1-.2-.1-.4-.2-.6-.1-.4-.3-.7-.4-1.1 0-.1-.1-.3-.1-.4-.1-.5-.3-1-.4-1.5-.1-.6-.3-1.1-.4-1.7-.1-.3-.1-.6-.1-.9 0-.3-.1-.7-.1-1 0-.4-.1-.7-.1-1.1v-.9-1.1-.9c0-.6.1-1.2.1-1.8 0-.3.1-.7.1-1 .1-.3.1-.7.2-1 .1-.3.1-.6.2-1 .1-.3.1-.7.2-1 .1-.4.2-.7.3-1.1.1-.3.2-.6.3-1 .2-.6.4-1.1.6-1.7.1-.3.2-.6.4-.9.1-.3.3-.7.4-1l.3-.6c.1-.1.1-.3.2-.4 2.7-4.5 5.9-7.4 6-7.4.2-.2.3-.6 0-.8-.2-.2-.6-.3-.8 0-.1.1-2.2 2-4.5 5.1-3.7-10.5-1.1-21.6.7-22.7.3-.2.8-.3 1.5-.3 2.7 0 8.1 1.4 13.4 4.2 1.4.8 2.7 1.6 3.8 2.4-7.2 3.2-9.7 6.7-9.8 6.9-.2.3-.1.6.1.8.1.1.2.1.3.1.2 0 .3-.1.5-.2.1-.1 5.2
-7.3 22.4-10.3 17.1-3 24.8 2.9 24.9 3 .2.2.6.2.8-.1.2-.2.2-.6-.1-.8-.2-.2-4-3.1-11.9-3.9.8-1.2 1.8-2.5 3-3.8 4.8-5.3 10.5-8.8 12.4-8.8h.2c2.1.4 8.4 10.1 8.4 21.3-2.6-1.7-4.9-2.6-5-2.7-.3-.1-.6 0-.7.3-.1.3 0 .6.3.7.1 0 5.2 2.1 9.1 6l.2.2c1 1.1 1.9 2.3 2.7 3.5 0 .1.1.1.1.2.4.6.7 1.2 1.1 1.7l.1.1c.7 1.3 1.3 2.6 1.8 4 0 .1.1.2.1.3.2.6.4 1.2.6 1.9 0 .1 0 .2.1.3.2.7.3 1.4.5 2.2l.3 2.4c.2 2.4.1 4.8-.3 7.1.3-.2.6-.4.9-.5.7-.3 1.2-.9 1.6-1.2.7-.5 2.4-.8 3.3-.6 1 .2 2 .4 2.8.8 1.8 1.5 3.5 3 3.7 3.4.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.2-.7-.4-.8-3.1-3-4.4-4.2L129 52l-1.5-2.9c-.5-.9-.1-2.1.8-2.5.9-.5 1.6.7 2.1 1.3.5.5.9.7 1.3 1.4.1.1.1.2.2.3l.3.6c0-.7.1-1.1.1-1.2.1-.9.9-1.7 1.8-1.6.4 0 .6.2.8.4.3.3.3.8.4 1.4 0 .1 0 .3.1.4 0 .1 0 .2.1.3.1.4.2.7.2 1.1l.1-.1c.4-.9 1.4-1.3 2.3-.9.4.2.6.3.7.5zM99.3 99.7c-1.1-2-2.2-3.6-3.4-5-2.2 1.7-5.8 3.7-11 4.4-5.7.8-10.2-.7-12.9-2.1-4.7 6.9-9.4 17.7-9.1 27.9.4 16.8 14.5 19.1 23.7 18.7 6-.3 11.7-2.4 15.5-6.7v-.1l.1-.1c2-2.3 3.4-5.1 4.1-8.6 1.8-10.2-2.8-20.5-7-28.
4zM66.6 50.5l-4.9-.7c-5-.7-9.6 2.9-10.3 7.9l-.6 4.4 20.9-3.7c.6-.9 1.3-1.6 2.2-2.3-1.3-2.9-4-5.2-7.3-5.6zm22.5-5l-4 3c-2 1.5-3.2 3.7-3.5 6.1 1.1.3 2.1.8 3 1.4l21.2-3.8-3.8-5c-3.1-3.9-8.9-4.7-12.9-1.7zM66.6 85.3l-.1-1.1v-.3-.4l.1-.3c5.3-1.7 8.6-7 7.6-12.6l-.1-.3c.1 0 .2-.1.4-.1l1 5.5c.1.8.9 1.3 1.7 1.2.8-.1 1.3-.9 1.2-1.7l-1.3-7c2.4-1.3 5.4-1.4 7.9 0 .3.2.7.2 1 .2.1 0 .2-.1.3-.1l.1.3c1 5.6 5.9 9.4 11.4 9.2l.2.3c0 .1.1.1.1.2v.1c0 .1.1.2.1.2l.1.4c0 .1.1.2.1.3l.1.5c0 .1 0 .2.1.4v2.6c-.5 2.6-2.6 4.5-5.9 5.2h-.1H92.3c-.1 0-.3.1-.4.1-.5.1-1 .4-1.5.7-.5.3-.9.7-1.2 1.1-.4.4-.7.8-1.1 1.1-.3.4-.7.7-1.1 1l-.9.5-.2.1c-.1 0-.1.1-.2.1l-.2.1h-.1l-.2.1h-.1l-.3.1-.4.1H83c-.5 0-1-.1-1.4-.2-.5-.1-.9-.3-1.4-.5-.5-.2-.9-.5-1.4-.7-.5-.2-1-.5-1.5-.6-.5-.1-1.1-.2-1.7-.1H75.3h-.1-.1-.1c-3.4.6-6.1-.5-7.5-2.8l-.1-.1-.1-.3v-.1l-.1-.1s0-.1-.1-.1l-.1-.4c0-.1 0-.1-.1-.2v-.1-.1l-.2-1c0-.2 0-.3-.1-.4zm9.5-1c.2 1 1 2.3 2.2 2.9.3.2.6.2.9.1.4-.1.8-.3 1-.8.4-.7.1-1.6-.6-2-.3-.2-.6-.7-.7-.8-.2-.8-.9-1.3-1.7-1.2-.7.3-1.3
1-1.1 1.8zm-2.4-17.5l.3-.3-.1-.4c-.1-.8.4-1.6 1.2-1.7.6-.1 1.1.1 1.4.6 3-1.4 6.4-1.4 9.4 0l-.4-2.4c-.3-1.6-.1-2.8.4-3.6l-14.2 2.5c.8.6 1.3 1.7 1.6 3.3l.4 2zm4.1-11.2c-1.8.3-3.4 1.2-4.5 2.5l9.7-1.7c-1.6-.9-3.4-1.2-5.2-.8z" fill="url(#a)" opacity=".2" transform="translate(145 67)"/><path d="M228.8 160c0-.1 0 0 0 0z" fill="#59ACFF"/><path d="M223.3 154.2c.3.2.6.2.9.1.4-.1.8-.3 1-.8.4-.7.1-1.6-.6-2-.3-.2-.6-.7-.7-.8-.2-.8-.9-1.3-1.7-1.2-.8.1-1.3.9-1.2 1.7.2 1.1 1.1 2.4 2.3 3zM220.1 131.4c-.8.1-1.3.9-1.2 1.7l.1.4c.8-.6 1.6-1.2 2.5-1.6-.3-.4-.9-.6-1.4-.5zM222.3 143.8c.8-.1 1.3-.9 1.2-1.7l-1.3-7c-.8.4-1.6 1-2.2 1.8-.1.1-.3.2-.4.3l1 5.5c.1.7.9 1.2 1.7 1.1z" fill="#F9F9FA"/><path d="M265.6 125c.1 0 .1 0 0 0v-.2.2z" fill="#59ACFF"/><path d="M113.9 62.2l1.8-.3 4.9-.9c.5-.1.9-.4 1.1-.8.2.1.3.2.4.3.1.1.2.2.3.4 0 0 0 .1.1.1.1.1.2.3.2.4v.1c.1.2.1.4.1.6.1.6.3 1.1.6 1.5.5.7 1.3 1.2 2.3 1.3h.3c1.6 0 3-1.2 3.1-2.9.1-.8-.2-1.7-.6-2.4-.5-.7-1.1-1.3-1.9-1.4l-3.1 1c-.2 0-.4.1-.7.1-.4 0-.8-.1-1.1-.2-.2-.5-
.6-.9-1.1-1h-.6l-5.2.9-1.4.3.5 2.9zm12.6-1.7c.2.3.5.8.5 1.3s-.4.8-.9.8h-.1c-.4 0-.8-.4-.8-.8 0-.3-.1-.6-.2-.8l1.5-.5zM38.7 72.4c-.8.1-1.4.9-1.2 1.8 0 .1.1.2.1.3-.2.1-.4.1-.7.1l-3.2-.1c-1.4.7-1.9 2.9-1.3 4.4.1.2.2.4.3.5 0 .1.1.1.1.1.1.1.1.2.2.3l.2.2c.1.1.1.1.2.1.3.2.7.4 1 .6.1 0 .3.1.4.1h.5c.4 0 .8-.1 1.2-.2 1.4-.6 2.2-2 1.9-3.5-.1-.7 0-1.3.4-1.8h.5l2.2-.4c.2.4.3 1.1.5 1.7.1.7.8 1.7.8 2.4-.2 1.9-1.2 3.9-2.5 5 .3.5.5 1 .5 1.6 0 .3.6 7.7 7.9 10.8 2.2 1 4.3 1.3 6.3 1.3 6.5 0 11.2-4.1 12.1-5 0-.1.1-.2.1-.3.3-.7.6-1.3.9-2 .7.6 1.7 1.2 2.9 1.5 3.5 1 5.2.8 5.9.6.7.7 2.8 2.3 5.9 2.3.5 0 1.1-.1 1.7-.2 4.1-.8 6.3-3.7 6.8-4.5 1.1-.3 5.8-2 7.8-5.6l.9.3c.3.1 3.9 2 8.5 2 3.2 0 6.9-.9 10.4-3.8 6.1-5.2 4.4-12.6 4.3-12.6-.1-.6-.1-1.1 0-1.7-.9-.4-1.9-1.2-2.7-2.1-.1-.2-.3-.4-.4-.5-.1-.2-.2-.3-.3-.5 0 0 0-.1-.1-.1-.1-.2-.2-.5-.3-.7-.3-.7.1-1.8 0-2.5 0-.3-.1-.5-.1-.8-.4 1-.8 1.9-1.3 2.9-.1-1.3-.2-2.1-.2-2.1 0-.3-.3-.5-.6-.5s-.5.3-.5.6c0 0 .2 1.6.3 3.9.1 1.6.1 3.5 0 5.5v.6c-.1 2.7-1 5.8-1.4 7.3-.2.6-.3.9-
.3 1-.1.3.1.6.3.7h.2c.2 0 .4-.1.5-.4 0-.1.6-1.7 1.1-3.7-.4 2.1-1 3.7-1 3.8-.1.3-.3.4-.6.4h-.2c-.3-.1-.5-.5-.4-.8 0 0 .1-.2.2-.5-1.9 1.7-9 3.3-15.9 3.7 0 0 0-.1.1-.1.3-.8.4-1.6.4-2.5v-.4-.8-.1-.1l-.1-.6c0-.1-.1-.3-.1-.4l-.1-.4c0-.1-.1-.2-.1-.3l-.2-.5c0-.1-.1-.2-.1-.3l-.1-.1s0-.1-.1-.1h.3l.5-.1 3.5-.6 1.7-.3c6.1-1.1 10.1-6.9 9-12.9l-1-5.8c-.3-1.7-.9-2.7-1.7-3.3.5-.3.9-.9.8-1.6-.1-.8-.9-1.4-1.8-1.2l-4.7.8L84.5 56c-.9-.6-1.9-1.1-3-1.4-1.3-.3-2.6-.4-4-.2-1.4.3-2.7.8-3.8 1.6-.9.6-1.6 1.4-2.2 2.3L50.6 62l-5.1.9h-.1c-.8.1-1.4.9-1.2 1.8.1.8.9 1.3 1.7 1.3-.5.9-.7 2-.4 3.6l.3 1.5-5.9 1-.6.1-.6.2zm-3.1 6.3c-.1 0-.2.1-.3.1-.3 0-.7-.2-.8-.6-.2-.4-.1-1 .1-1.4h1.5c0 .3 0 .6.1.8 0 .5-.2.9-.6 1.1zm84.6-4.9c.1-1.3.1-2.6.1-3.9.2.2.4.3.6.5 0 .3.1.6.2 1 0 .2 1 4.7-1.9 8.6.4-1.6.8-3.8 1-6.2zm-5.9 9.8c.1.1.2.1.3.2-1.7.8-3.5 1.3-5.4 1.3 1.9-.5 3.7-1 5.1-1.5zm-59.4 12c-1.8 0-3.6-.4-5.4-1.1-6-2.5-6.5-8.7-6.5-8.9 0-.3-.1-.6-.1-.9.5-.7 1-1.5 1.4-2.4.5 1.4 1.1 3 1.7 4.4 1.7 4 4.3 7.1 4.4 7.2.6.7 1.4 1 2.2 1 .7 0
1.3-.2 1.8-.7l.2-.2h.7c2 0 4.7-.3 7.5-.8-1.9 1.2-4.7 2.4-7.9 2.4zm22.9-40c1.8-.3 3.6 0 5.2.8l-9.7 1.7c1.1-1.3 2.7-2.2 4.5-2.5zm8.1 3.3c-.5.9-.7 2-.4 3.6l.4 2.4c-3-1.4-6.5-1.4-9.4 0-.9.4-1.7.9-2.5 1.6l-.3.3-.4-2.1c-.3-1.6-.8-2.6-1.6-3.3l14.2-2.5zM66.6 83.8v-.4l.1-.3c5.3-1.7 8.6-7 7.6-12.6l-.1-.3c.1 0 .2-.1.4-.1.2-.1.3-.2.4-.3.6-.7 1.4-1.3 2.2-1.8 2.4-1.3 5.4-1.4 7.9 0 .3.2.7.2 1 .2.1 0 .2-.1.3-.1l.1.3c1 5.6 5.9 9.4 11.4 9.2l.2.3c0 .1.1.1.1.2v.1c0 .1.1.2.1.2l.1.4c0 .1.1.2.1.3l.1.5c0 .1 0 .2.1.4v2.6c-.5 2.6-2.6 4.5-5.9 5.2h-.1H92.4c-.1 0-.3.1-.4.1-.5.1-1 .4-1.5.7-.5.3-.9.7-1.2 1.1-.4.4-.7.8-1.1 1.1-.3.4-.7.7-1.1 1l-.9.5-.2.1c-.1 0-.1.1-.2.1l-.2.1h-.1l-.2.1h-.1l-.3.1-.4.1H83.1c-.5 0-1-.1-1.4-.2-.5-.1-.9-.3-1.4-.5-.5-.2-.9-.5-1.4-.7-.5-.2-1-.5-1.5-.6-.5-.1-1.1-.2-1.7-.1H75.4h-.1-.1-.1c-3.4.6-6.1-.5-7.5-2.8l-.1-.1-.1-.3v-.1l-.1-.1s0-.1-.1-.1l-.1-.4c0-.1 0-.1-.1-.2v-.1-.1l-.2-1c0-.1 0-.2-.1-.4l-.1-1.1v-.2zm-20.4-9.6h.2l.2 1.3c1.1 6.1 6.9 10.1 12.9 9l2.5-.4 3.2-.6h.2v.8l.1 1.2c0 .1 0 .3.1.
4v.1s.2 2 1.6 3.8c0 0 0 .1.1.1-4.5 1.2-9 1.9-12 1.9-.9 0-1.7-.1-2.3-.2.2.3.2.7-.1.9-.1.1-.3.1-.4.1-.2 0-.4-.1-.5-.2 0 0-.3-.4-.8-1 .5.6.8.9.8 1 .1.1.3.2.4.2.1 0 .3-.1.4-.2.2-.2.2-.6 0-.8 0 0-.1-.1-.2-.3-.7-.8-2.9-3.4-4.1-6.3-.1-.2-.2-.4-.3-.7-.7-1.8-1.3-3.6-1.8-5.2-.8-2.4-1.2-4.3-1.2-4.3-.1-.3-.4-.5-.7-.4-.3.1-.5.4-.4.7 0 0 .3 1.1.7 2.6-1-1-2-2-2.9-3l4.3-.5zm93-26.2c-.5-.2-1-.3-1.6-.3-.6-1.8-1.8-2.3-2.9-2.3h-.3c-.8 0-1.6.3-2.3.7-.6-.7-1.5-1.7-3-1.7-.5 0-1 .1-1.4.3-2 1-2.9 3.5-1.9 5.5l.7 1.3h-.2c-.8 0-1.8.1-2.7.4 0-1.9-.1-3.9-.4-5.8-1.1-6-4-11.7-8.5-16.3.7-13.5-6.9-26.8-12.1-27.9-.3-.1-.7-.1-1.1-.1-4.9 0-12.2 6.2-15.9 10.3-.9 1-2.2 2.6-3.4 4.4h-.5c-3.1 0-6.5.3-9.9.9-3.6.6-7 1.5-10 2.6-1.7-1.2-3.3-2.2-4.5-2.8-4.4-2.4-10.9-4.7-15.5-4.7-1.7 0-3 .3-4 .9-4.5 2.7-7.1 17.8-1.8 30.3-2.7 5.9-3.5 12.2-2.5 18.3.4 2 .9 3.9 1.7 5.8h-.4c-.8 0-1.9.1-2.8.4l.2-1.5c.4-2.2-1.1-4.4-3.4-4.7h-.5c-2 0-2.9 1.7-3.3 2.6-.4-.1-.8-.2-1.2-.2-.5 0-1 .1-1.4.3-1 .4-2.1 1.2-2.1 3.1-.6.2-1.1.4-1.5.8-1.2 1.1-1.9 3-.1
5.3.2.2.2.4.3.6.1.3.3.8.8 1.3.1.1.3.4.6.7.9 1.1 1.8 2.1 2.2 2.5l.6.6 1 1c.4 1 .8 1.8 1.4 2.5.1.2.2.3.4.5.2.3.3.5.5.8 1.5 1.9 3 3.3 4.6 4 .8 4.2 3.6 12.8 13.5 17.1 3.3 1.4 6.8 2.1 10.2 2.1 1.3 0 2.7-.1 4-.3-1.2 3.7-2.1 7.1-2.6 10-.9-.3-1.9-.7-3.1-1-.3-.2-.4-.4-.5-.4-.6-.5-1.4-.8-2.2-.8-.4 0-.9.1-1.3.2-2.1-.4-4.2-.7-6.4-.9-.4-.2-.7-.4-1.1-.5-.2 0-.4-.1-.7-.1-.5 0-1 .1-1.4.3-1.1-.1-2.2-.1-3.3-.1h-2.6c-.5-.3-1.1-.4-1.6-.4-.7 0-1.3.2-1.8.5-.1 0-.1.1-.2.1-2.1.2-4.2.6-6.2 1.1-.2 0-.4-.1-.7-.1-.5 0-1 .1-1.4.3-.3.1-.6.3-.9.6-7.7 2.4-12.1 5.9-12.5 6.3-.3.3-.6.6-.7.9-2.6 2.1-4.2 4.3-4.7 6.7-1.1 5.5 3.4 11.3 11.7 15.4.1.5.4 1 .7 1.4.7.8 1.6 1.2 2.6 1.2.6 0 1.2-.2 1.8-.5 2.7.9 5.5 1.5 8.3 1.9.1.2.3.3.4.4.6.5 1.4.8 2.2.8.9 0 1.7-.3 2.4-.9 1 0 2-.1 2.9-.1 2.1-.2 4.1-.5 6.2-1 .2.2.5.3.7.5.5.2.9.3 1.4.3 1.4 0 2.6-.8 3.2-2.1 0 0 0-.1.1-.1 1.9-.6 3.8-1.3 5.6-2.1.1.1.2.1.3.2.5.3 1.1.4 1.6.4 1.3 0 2.5-.7 3.1-1.9 0-.1.3-.6.6-1.5.6 3.2 1.6 6.9 3.3 10.2 2.7 5.4 4.3 7.3 6.3 7.3.7 0 1.4-.3 2-.8.8-.9 1.2-2.2
1.1-4.5 0-1.6-.1-4.5-.2-7.4 1.9.4 3.9.7 6.2.9 1.9.1 3.7.2 5.6.2 5.9 0 11.4-.8 16.1-2.2-.1 2.8-.2 5.5-.2 7-.1 2.3.3 3.6 1.1 4.5.5.5 1.2.8 2 .8 2 0 3.6-1.8 6.3-7.3 2.4-4.8 3.4-10.4 3.9-14.3 2.9-7.6.4-22.8-2.3-30.7-1.1-3.3-2.2-6.3-3.3-9.1.6 0 1.2.1 1.8.1 6.2 0 11.8-2.1 16.6-6.1 8.2-6.9 8.4-16.1 7.9-20.3 1.3-1.2 2.4-2.9 3.3-5.2l.3-.9c.1-.2.2-.4.2-.5.3-.9.5-1.8.6-2.8l.9-1.8.2-.3c.3-.6.8-1.7 1.4-3.1.1-.3.3-.6.3-.8.3-.6.3-1.1.4-1.5 0-.2 0-.4.2-.6 1.2-2.7 0-4.4-1.5-5.1zm-.5 4.3c-.4 1.1-.2 1.4-.5 2-.3.7-1.3 3-1.7 3.8-.1.2-.7 1.2-1.3 2.5 0 .9-.2 1.8-.5 2.7-.1.2-.1.4-.2.6l-.3.9c-.7 1.9-1.8 4-3.6 4.9.5 2.6 1.6 12.4-6.9 19.6-5.1 4.3-10.5 5.6-15.1 5.6-1.4 0-2.8-.1-4-.3-1.2-2.5-2.8-4.8-2.9-4.9-.2-.2-.5-.3-.8-.1-.2.2-.3.5-.1.8 0 0 2.1 2.8 3.2 5.7 0 0 0 .1.1.1.1.2.1.4.2.6l.1.1c1.4 3.4 2.6 6.9 3.7 10.1 2.9 8.6 4.9 23.1 2.2 29.4-.4 3.7-1.4 9.2-3.7 13.9-2.2 4.3-3.5 6-4.3 6h-.2l-.1-.1-.1-.1s0-.1-.1-.1c0-.1-.1-.2-.1-.3-.2-.5-.2-1.3-.2-2.3.1-1.9.2-5.6.3-9.1 2.8-1.3 4.6-2.8 4.6-2.9.2-.2.2-.6 0-.8-.2-.2-.6-
.2-.8 0 0 0-1.8 1.6-4.4 2.7-4.6 1.8-10.6 3-17.9 3-1.7 0-3.5-.1-5.4-.2-3.4-.3-6.3-.8-8.7-1.5v.2c-2.1-.9-3.8-2.3-3.8-2.4-.2-.2-.6-.2-.8 0-.2.2-.2.6 0 .8.1.1 2.1 1.9 4.6 2.7.1 3.4.2 7 .3 8.9.1 1.8-.2 3-.8 3-.1 0-.2 0-.3-.1-.1 0-.2-.1-.3-.2l-.1-.1-.3-.3-.1-.1c-.1-.1-.2-.3-.3-.4l-.2-.2c-.1-.1-.2-.3-.3-.5-.1-.1-.2-.2-.2-.4-.1-.2-.2-.3-.3-.5-.1-.2-.2-.3-.3-.5-.1-.1-.2-.3-.2-.4-.4-.7-.8-1.4-1.2-2.2-.2-.4-.4-.9-.6-1.4 0-.1 0-.1-.1-.1-.2-.4-.4-.9-.5-1.3 0-.1-.1-.2-.1-.2-.2-.5-.3-.9-.5-1.4 0-.1 0-.1-.1-.2-.1-.5-.3-.9-.4-1.4 0-.1 0-.1-.1-.2-.1-.5-.2-.9-.4-1.4v-.1c-.1-.5-.2-1-.3-1.4v-.1c-.2-1.3-.4-2.5-.6-3.6-1 .7-2.2 1.4-3.5 2.1-.4 1.2-.7 1.9-.8 2-.2.4-.7.7-1.1.7-.2 0-.4 0-.6-.1-.4-.2-.6-.5-.6-.9-2.4 1.1-5 2.2-8 3.1-.2.6-.4 1-.4 1-.2.5-.7.7-1.1.7-.2 0-.3 0-.5-.1-.4-.2-.6-.5-.7-.9-1.7.4-3.6.8-5.4 1h-.1c-.6.1-1.2.2-1.9.2-1 .1-1.9.1-2.9.1h-.9c-.2.3-.3.4-.3.5-.2.3-.6.5-1 .5-.3 0-.6-.1-.8-.3-.3-.2-.4-.5-.4-.8-3.5-.3-7-1.1-10.2-2.3l-.5.5c-.2.2-.5.3-.8.3-.4 0-.7-.1-1-.4-.3-.4-.4-.9-.2-1.3-4.6-2.1-8.4-4
.9-10.4-7.9-.1-.1-.1-.2-.2-.3l-.3-.6c-.1-.1-.1-.3-.2-.4-.1-.1-.1-.3-.2-.4-.1-.2-.1-.3-.2-.5 0-.1-.1-.2-.1-.3-.1-.2-.1-.4-.1-.6v-.3c0-.2-.1-.4-.1-.6v-.1c0-.5 0-1.1.1-1.6.4-2.2 2.1-4.1 4.4-5.8 0-.2 0-.4.2-.6.3-.2 4.6-3.8 12.4-6.1.1-.2.3-.4.5-.5.2-.1.3-.1.5-.1s.4.1.6.2c2.2-.6 4.6-1 7.3-1.2.1-.2.2-.3.4-.4.2-.1.4-.2.7-.2.4 0 .7.2 1 .5.3 0 .6 0 .9-.1h2.3c1.3 0 2.6 0 3.8.1.2-.2.5-.3.9-.3h.2c.1 0 .4.2.7.4 2.9.2 5.4.6 7.6 1.1.2-.2.6-.4.9-.4.3 0 .5.1.8.3l.7.7c2.6.7 4.3 1.4 5.3 1.8v.1c0 .4.1.8.1 1.3.2 3 .7 7.5 1.4 11.6 0 .3.3.5.5.5h.1c.3-.1.5-.3.5-.6-1-5.8-1.5-12.1-1.6-14.3.5-3.5 1.6-7.4 2.9-11.2 0-.1.1-.2.1-.3 2.2-6.1 4.2-8.1 4.2-8.1.2-.2.2-.6 0-.8-.2-.2-.6-.2-.8 0-.1.1-1.7 1.7-3.6 6.3-1.9.5-4 .9-6.3.9-2.9 0-6-.6-9.3-2-10.2-4.4-12.1-14.1-12.4-16.7-2-.4-3.6-2-4.8-3.6-.2-.2-.3-.5-.5-.7-.1-.1-.3-.3-.4-.5-.2-.3-.5-.7-.7-1.1 0-.1-.1-.1-.1-.2-.2-.4-.3-.7-.5-1.1v-.1l-2-2c-.6-.6-2.2-2.6-2.7-3.1-.1-.1-.1-.1-.1-.2-.3-.4-.3-.7-.7-1.3-.1-.1-.1-.2-.2-.3-.1-.1-.2-.2-.2-.3-.5-.8-.6-1.4 0-2 .1-.1.1-.1.2-.1l.
1-.1c.1-.1.3-.1.5-.2H21.6c.5 0 1 .2 1.3.6l.1.1c-.1-.5-.1-1.2-.2-1.8-.2-.9-.3-1.6.6-2H24c.2 0 .4.1.7.1 0 0 .1 0 .1.1.1 0 .2.1.2.1.1.1.2.2.3.2l.1.1c.1.1.2.3.2.4 0 0 .2.5.4 1.1 0-.3.1-.5.1-.7.2-1 .6-1.3.9-2 .3-.7.6-1.9 1.5-1.9h.2c.5.1.9.4 1.2.8.3.4.4.9.3 1.4l-.5 3.2-.4 2.3c-.5.9-1.2 2.1-1.7 3.4-.1.3.1.6.3.7h.2c.2 0 .4-.1.5-.4.7-1.9 1.7-3.5 2.2-4.2.5-.3 1-.7 1.6-1 .6-.3 1.6-.5 2.4-.5.3 0 .7 0 .9.1.5.1 1.2.6 1.9.6.5.1 1.2.1 1.6.7.1.2.2.4.2.8l.6-.1c-.9-1.4-1.7-2.9-2.4-4.4-.1-.3-.2-.5-.3-.8-.1-.2-.1-.4-.2-.6-.1-.4-.3-.7-.4-1.1 0-.1-.1-.3-.1-.4-.1-.5-.3-1-.4-1.5-.1-.6-.3-1.1-.4-1.7-.1-.3-.1-.6-.1-.9 0-.3-.1-.7-.1-1 0-.4-.1-.7-.1-1.1v-.9V57v-.9c0-.6.1-1.2.1-1.8 0-.3.1-.7.1-1 .1-.3.1-.7.2-1 .1-.3.1-.6.2-1 .1-.3.1-.7.2-1 .1-.4.2-.7.3-1.1.1-.3.2-.6.3-1 .2-.6.4-1.1.6-1.7.1-.3.2-.6.4-.9.1-.3.3-.7.4-1 .1-.2.1-.3.2-.5 0-.1.1-.1.1-.2.1-.1.1-.2.2-.3 2.7-4.5 5.9-7.4 6-7.4.2-.2.3-.6 0-.8-.2-.2-.6-.3-.8 0-.1.1-2.2 2-4.5 5.1-.5.7-1 1.4-1.5 2.2 0 .1-.1.1-.1.2-4.7-11.6-2.2-25.2 1.1-27.1.7-.4 1.6-.6 2.8-.6
3.8 0 9.8 2 14.4 4.5 1.5.8 3.4 2 5.2 3.4 2.9-1.1 6.5-2.1 10.8-2.9 3.6-.6 6.7-.9 9.5-.9h1.7c1.2-2 2.6-3.8 3.8-5.1 4.3-4.8 10.7-9.6 14.2-9.6.2 0 .4 0 .6.1 3.8.8 10.8 12.8 10.3 25.3l-.1-.1c-.7-.6-1.5-1.1-2.2-1.6-2.6-1.7-4.9-2.6-5-2.7-.3-.1-.6 0-.7.3-.1.3 0 .6.3.7.1 0 5.2 2.1 9.1 6l.2.2c1 1.1 1.9 2.3 2.7 3.5 0 .1.1.1.1.2.4.6.7 1.2 1.1 1.7l.1.1c.7 1.3 1.3 2.6 1.8 4 0 .1.1.2.1.3.2.6.4 1.2.6 1.9 0 .1 0 .2.1.3.2.7.3 1.4.5 2.2l.3 2.4c.2 2.4.1 4.8-.3 7.1.3-.2.6-.4.9-.5.7-.3 1.2-.9 1.6-1.2.6-.4 1.9-.7 2.8-.7h.5c1 .2 2 .4 2.8.8 1.8 1.5 3.5 3 3.7 3.4.1.2.3.3.5.3.1 0 .2 0 .2-.1.3-.1.4-.5.2-.7-.4-.8-3.1-3-4.4-4.2l-.6-1.3-1.5-2.9c-.5-.9-.1-2.1.8-2.5.1-.1.3-.1.4-.1.7 0 1.3.9 1.7 1.4.5.5.9.7 1.3 1.4.1.1.1.2.2.3l.3.6c0-.7.1-1.1.1-1.2.1-.9.8-1.6 1.7-1.6h.1c.4 0 .6.2.8.4.3.3.3.8.4 1.4 0 .1 0 .3.1.4 0 .1 0 .2.1.3.1.4.2.7.2 1.1l.1-.1c.3-.6.9-1 1.6-1 .2 0 .5 0 .7.2.2.1.4.2.5.4.3.1.3.7-.1 1.5z" fill="url(#b)" transform="translate(145 67)"/></g></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_screenshots.svg b/browser/extensions/onboarding/content/img/figure_screenshots.svg
new file mode 100644
index 000000000000..f4930d09f7af
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_screenshots.svg
@@ -0,0 +1,191 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="281" height="233">
+ <defs>
+ <linearGradient id="a" x1="-26.7072552%" x2="121.200691%" y1="-8.21456664%" y2="115.364749%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="b" x1="-171.534367%" x2="377.694136%" y1="-258.916232%" y2="507.082022%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="c" x1="-275.615152%" x2="393.814483%" y1="-214.880097%" y2="329.931438%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="d" x1="-71.2230562%" x2="141.268437%" y1="-46.5567621%" y2="122.213199%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="e" x1="-912.187374%" x2="706.872366%" y1="-223.131903%" y2="247.7375%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="f" x1="-636.509606%" x2="265.115932%" y1="-364.308744%" y2="178.753736%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="g" x1="-96.7324958%" x2="214.858961%" y1="-489.128132%" y2="600.29142%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="h" x1="-370.226425%" x2="176.655533%" y1="-420.236682%" y2="206.08556%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="i" x1="-1573.85207%" x2="2621.18334%" y1="-918.807829%" y2="1582.542%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="j" x1="-1977.10979%" x2="2217.92561%" y1="-1158.35597%" y2="1342.99386%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="k" x1="-635.169191%" x2="1018.69953%" y1="-1184.44408%" y2="1785.60576%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="l" x1="-278.76866%" x2="377.256589%" y1="-697.981967%" y2="835.635246%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="m" x1="-553.131633%" x2="647.619338%" y1="-1374.34047%" y2="1418.49315%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="n" x1="-450.59361%" x2="546.286439%" y1="-895.950857%" y2="958.91224%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="o" x1="-511.211278%" x2="295.07392%" y1="-745.273546%" y2="396.265912%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="p" x1="-871.182847%" x2="303.781403%" y1="-595.928571%" y2="241.5435%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="q" x1="-450.336951%" x2="307.764971%" y1="-505.416691%" y2="315.448433%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="r" x1="-2519.79056%" x2="1944.50093%" y1="-1090.70814%" y2="890.815528%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="s" x1="-134.127826%" x2="165.330874%" y1="-297.102666%" y2="260.202663%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="t" x1="-1132.52358%" x2="304.180944%" y1="-1559.01765%" y2="393.843988%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="u" x1="-1884.94918%" x2="1592.74001%" y1="-342.289711%" y2="381.222953%">
+ <stop stop-color="#E6FCFF" offset="0%"/>
+ <stop stop-color="#B5F2FF" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="v" x1="-109.932792%" x2="195.629347%" y1="-425.144051%" y2="431.622036%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="w" x1="-813.648281%" x2="368.736119%" y1="-1076.38789%" y2="459.249729%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="x" x1="-1092.12785%" x2="635.82518%" y1="-4587.46665%" y2="2425.66052%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="y" x1="-415.250984%" x2="1490.35841%" y1="-442.448072%" y2="1582.67684%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="z" x1="-167.167389%" x2="492.546376%" y1="-2085.55413%" y2="4392.09342%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="A" x1="-2989.85248%" x2="1926.86535%" y1="-1363.11821%" y2="921.90878%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ <linearGradient id="B" x1="-2586.45105%" x2="2652.41027%" y1="-792.93501%" y2="883.790987%">
+ <stop stop-color="#00C8D7" offset="0%"/>
+ <stop stop-color="#008EA4" offset="100%"/>
+ </linearGradient>
+ </defs>
+ <g fill="none" fill-rule="evenodd">
+ <g fill="#D7D7DB" fill-rule="nonzero">
+ <path d="M204.3 76.7h-77c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h77c.6 0 1.1.5 1.1 1.1 0 .6-.4 1.1-1.1 1.1zM193.9 71h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zM176.4 81.7H163c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-22.2 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-11.2 0h-13.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-22.2 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-7.8 0H104c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.2.6-.5.6zm-11.2 0H80.6c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6H94c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-22.3 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6z"/>
+ </g>
+ <g fill-rule="nonzero">
+ <path fill="#F9F9FA" d="M152.3 47.8h23.8s-7.4-16.6 8.3-18.8c14.1-1.9 19.6 12.5 19.6 12.5s1.7-8.3 10-6.7c8.3 1.6 14.3 14.8 14.3 14.8H249"/>
+ <path fill="#D7D7DB" d="M249.5 45.8H245c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h4.5c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-14.5 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5.6 0h-.6c-.2 0-.4-.1-.5-.3-.1-.2-.6-1.1-1.3-2.3-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.6.9 1 1.7 1.2 2.1h.3c.3 0 .6.2.6.6 0 .4-.4.5-.7.5zm-52.9-.7H175c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h.6c-.1-.3-.2-.6-.4-1-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.7.6 1.7.1.2.1.4 0 .5-.1.1-.3.3-.4.3zm-10.4 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm8.7-6.1c-.3 0-.5-.2-.6-.5 0-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.3-.1.6-.5.6.1 0 .1 0 0 0zm29.2-1.1c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.1-.3 0-.6.2-.8.3-.1.6 0 .8.2.2.4.4.7.5 1 .1.3 0 .6-.3.7-.1.2-.2.2-.2.2zm17.9-1.4c-.1 0-.3-.1-.4-.2-2.4-2.3-4.8-3.7-7.2-4.1-1.6-.3-3.1-.2-4.3.2-.3.1-.6-.1-.7-.4-.1-.3.1-.6.4-.7 1.4-.5 3.1-.6 4.9-.2 2.6.5 5.2 2 7.7 4.4.2.2.2.6 0 .8-.1.1-.2.2-.4.2zM201 33.2c-.2 0-.3-.1-.4-.2-.7-.9-1.4-1.7-2.2-2
.4-.2-.2-.2-.6 0-.8.2-.2.6-.2.8 0 .8.7 1.6 1.6 2.3 2.5.2.2.2.6-.1.8-.2 0-.3.1-.4.1zm-22.8-4.3c-.2 0-.3-.1-.4-.2-.2-.2-.2-.6.1-.8 1.7-1.4 4.1-2.3 6.9-2.7 2.2-.3 4.3-.2 6.3.2.3.1.5.4.4.7-.1.3-.4.5-.7.4-1.9-.4-3.9-.5-5.9-.2-2.7.4-4.8 1.2-6.4 2.4-.1.2-.2.2-.3.2z"/>
+ <path fill="#F9F9FA" d="M250.2 50.1h-97.9c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h97.9c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z"/>
+ </g>
+ <g fill-rule="nonzero">
+ <path fill="#F9F9FA" d="M49.3 29.4h13.2s-4.1-9.2 4.6-10.4c7.8-1.1 10.9 7 10.9 7s.9-4.6 5.6-3.8c4.6.9 8 8.3 8 8.3h11.5"/>
+ <path fill="#D7D7DB" d="M62.9 27.9H49.7c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h12.8s.1-.1.2-.1c.3-.1.6 0 .7.3l.1.1c.1.2.1.4 0 .5-.2.3-.4.4-.6.4zm36.6-.1h-3.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .3-.3.6-.6.6zm-20.9-3.6h-.2c-.3-.1-.5-.4-.4-.7.3-.9 1.5-4 4.9-4 .4 0 .8 0 1.2.1 1.8.3 3.6 1.5 5.4 3.4.2.2.2.6 0 .8-.2.2-.6.2-.8 0-1.6-1.7-3.2-2.7-4.8-3-.4-.1-.7-.1-1-.1-2.6 0-3.5 2.2-3.8 3.2-.1.1-.3.3-.5.3zm-15.2-4.9c-.1 0-.3-.1-.4-.2-.2-.2-.2-.6 0-.8.8-.8 1.8-1.4 3.1-1.7.3-.1.6.1.7.4.1.3-.1.6-.4.7-1.1.3-2 .8-2.6 1.4-.1.2-.3.2-.4.2zm8.4-1.5h-.2c-.3-.1-.7-.2-1-.3-.3-.1-.5-.3-.4-.7.1-.3.4-.5.7-.4.4.1.8.2 1.1.3.3.1.5.4.4.7-.2.3-.4.4-.6.4z"/>
+ <path fill="#F9F9FA" d="M104 31.6H49.6c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1H104c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z"/>
+ </g>
+ <g fill-rule="nonzero">
+ <path fill="#FFF" d="M19.6 169.1c-2.8 0-5-2.2-5-4.8V46c0-3 2.4-5.4 5.4-5.4h127c3 0 5.4 2.4 5.4 5.4v118.3c0 2.6-2.3 4.8-5 4.8H19.6z"/>
+ <path fill="#D7D7DB" d="M146.9 41.8c2.3 0 4.2 1.9 4.2 4.2v118.3c0 2-1.8 3.7-3.9 3.7H19.6c-2.2 0-3.9-1.6-3.9-3.7V46c0-2.3 1.9-4.2 4.2-4.2h127zm0-2.2h-127c-3.6 0-6.5 2.9-6.5 6.5v118.3c0 3.3 2.8 5.9 6.2 5.9h127.6c3.4 0 6.2-2.7 6.2-5.9V46c0-3.5-2.9-6.4-6.5-6.4z"/>
+ </g>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M145.8 62.9V161c0 1-.1 1.2-.1 1.2s-.2.1-1.2.1h-122c-1 0-1.2-.1-1.2-.1s-.1-.2-.1-1.2V62.9h124.6zm1.1-1.2H20v99.2c0 2 .4 2.5 2.5 2.5h122c2 0 2.5-.4 2.5-2.5V61.7h-.1z"/>
+ <g fill="#D7D7DB" fill-rule="nonzero">
+ <circle cx="3.8" cy="3.7" r="2.9" transform="translate(23 48)"/>
+ <circle cx="3" cy="3.7" r="2.9" transform="translate(33 48)"/>
+ <path d="M115.3 54.9H51.5c-1.7 0-3.1-1.4-3.1-3.1v-.3c0-1.7 1.4-3.1 3.1-3.1h63.8c1.7 0 3.1 1.4 3.1 3.1v.3c0 1.8-1.4 3.1-3.1 3.1z"/>
+ <g>
+ <circle cx="3.8" cy="3.7" r="2.9" transform="translate(127 48)"/>
+ <circle cx="3.1" cy="3.7" r="2.9" transform="translate(137 48)"/>
+ </g>
+ </g>
+ <g transform="translate(149 84)">
+ <ellipse cx="42.7" cy="142" fill="#EDEDF0" fill-rule="nonzero" rx="42.5" ry="6.5"/>
+ <path fill="#F9F9FA" fill-rule="nonzero" d="M121.2 99.6c-1.3-3.1-4.3-5.2-7.7-5.2-.7 0-1.4.1-2.1.3-.8 0-3.1-.3-7.2-2-1.7-.7-4.8-3.9-8.4-10.5 5.2-19.9 5.5-36.8.7-50.3-.4-1-.9-2.1-1.5-3.2l-.3-1.4 2-1.7c1.6-1.4 2.3-3.5 1.7-5.6-.3-1.2-1-2.2-2-2.9 0-.3 0-.6-.1-.9-.4-2.3-2.2-4.1-4.5-4.4-.4-.1-10.6-1.7-17.1-1.7h-.4l-1.7-2.8C70 3.1 65.5.6 60.5.6c-2.6 0-5.2.7-7.5 2.1-2.6 1.6-4.5 3.9-5.7 6.7-6 .7-12.1 2.3-18.2 4.7l-3.4-1.4c-1.7-.7-3.5-1.1-5.4-1.1-5.8 0-10.9 3.5-13.1 8.8-2.7 6.6-.1 14 5.8 17.5-1.1 5.9-1.5 12.4-1 19.6.6 9-2.2 13.5-5.1 18.2-4.4 7.1-9.4 15.1 0 33.8 0 2.2.1 4.2.2 5.8 1.3 11.8 4.6 17.7 10 17.7.9 0 1.9-.2 2.7-.6 2.2-1.1 3.3-2.6 5-9.9 9.3 3.1 21.2 5.8 30.9 6.9-1.7 7.6-1.5 9.4 0 11.4 1.2 1.5 3 2.4 5 2.4 4.1 0 8.8-4.1 14-12.1 1.3-2.1 2.8-5 4.4-8.5 1.4-2.4 5.5-9.7 10-20.9 2.8 2.9 5.6 5 8.6 6.2 5.2 2.1 9.8 3.2 13.5 3.2 2.5 0 4.2-.5 5.1-.9 4.6-1.5 6.6-6.4 4.9-10.6z"/>
+ <path d="M115.2 101.4c-.4-.9-1.5-1.4-2.4-1-.2.1-.6.1-1.2.1-1.4 0-4.6-.3-9.8-2.4-5.5-2.2-10.3-10.6-12.7-15.5-.1-.2-.1-.5-.1-.8 5.4-19.5 5.9-35.8 1.4-48.4-.3-.8-.7-1.8-1.3-2.7-.1-.1-.1-.2-.1-.3L87.7 25c-.1-.4 0-.8.4-1.1l2.6-2.2-5.8-.9c-.5-.1-.9-.4-.9-.9s.2-.9.6-1.2l3-1.6c-3.5-.5-8.9-1.1-12.7-1.1-1.1 0-2 .1-2.6.2l-.4.1c-.4.1-.9-.1-1.1-.5l-3.4-5.5C66 8 63.5 6.7 60.9 6.7c-1.4 0-2.8.4-4.1 1.2-2.2 1.4-3.5 3.7-3.6 6.3 0 .6-.5 1-1.1 1.1-7.2.4-14.7 2.2-22.2 5.4-.3.1-.6.1-.9 0l-5.4-2.2c-.9-.4-1.9-.6-2.9-.6-3.1 0-5.9 1.9-7.1 4.8-1.6 3.9.3 8.4 4.2 10l2.3.9c.5.2.8.8.6 1.3-1.8 6.2-2.4 13.6-1.8 21.9.7 11.1-2.9 16.9-6.1 22.1-4.3 6.9-7.7 12.3.9 28.6.1.2.1.4.1.5-.1 2.6 0 4.7.2 6.3.8 7.8 2.6 11.1 3.4 11.8.4-.8 1.2-3.3 2.9-11.3.1-.3.3-.6.6-.8.2-.1.3-.1.5-.1.1 0 .3 0 .4.1 10.8 4.5 29.6 8.7 41.2 9.1.3 0 .7.2.9.4.2.3.3.6.2.9-2.1 8.3-2.5 11-2.5 11.9 1.1-.3 4.2-2.7 8.3-9.1 1.2-1.9 2.5-4.5 4-7.9 0 0 0-.1.1-.1 3.3-5.6 8.7-16.6 13-29.4.1-.4.5-.7.9-.8.4 0 .9.2 1.1.5 3.7 6.2 7.8 10.4 11.7 12 5.5 2.2 9.1 2.7
11.1 2.7 1.6 0 2.4-.3 2.7-.4.6-.4 1-1.5.7-2.4z"/>
+ <path fill="url(#a)" fill-rule="nonzero" d="M114.6 98c-.8-2.1-2.9-3.4-5.1-3.4-.6 0-1.1.1-1.7.3-.7 0-3.4 0-8.7-2.2-3-1.2-6.8-6-10.3-12.8 5.4-19.8 5.7-36.5 1-49.7-.3-1-.8-2-1.4-3l-.9-3.4 3.3-2.8c.8-.7 1.1-1.7.8-2.7-.3-1-1.1-1.7-2.1-1.9l-.7-.1c.5-.6.8-1.4.6-2.2-.2-1.1-1-2-2.1-2.1-.1 0-10.3-1.6-16.7-1.6-.7 0-1.3 0-1.9.1l-2.6-4.2C64 2.9 60.4.9 56.4.9c-2.1 0-4.2.6-6 1.7-2.5 1.6-4.3 4.1-5 6.9-6.6.6-13.5 2.3-20.3 5.1l-4.4-1.8c-1.4-.6-2.8-.8-4.3-.8-4.7 0-8.8 2.8-10.6 7.1-2.4 5.8.4 12.5 6.2 14.9l.2.1c-1.4 6.1-1.9 13.2-1.4 20.9.7 9.9-2.5 15-5.6 19.9-4.3 6.9-8.7 14 .4 31.7 0 2.4 0 4.5.2 6.2.6 5.7 2.4 15.2 7.2 15.2.5 0 1-.1 1.5-.4 1.3-.6 2.1-1.5 4.2-11.1 10.3 3.8 25.5 7.2 36.4 8.1-2.6 10.4-2 11.1-1.2 12.2.7.9 1.7 1.4 2.8 1.4 4.1 0 9-6.8 11.6-10.8 1.3-2 2.7-4.8 4.2-8.3C75.5 114 80 104.9 84 94c3.4 4.5 6.9 7.6 10.6 9.1 4.9 2 9.1 3 12.5 3 2 0 3.3-.4 4.1-.7 3.2-1.4 4.5-4.6 3.4-7.4zm-4.4 3.8c-.3.1-1.1.4-2.7.4-2 0-5.6-.5-11.1-2.7-3.9-1.6-8-5.7-11.7-12-.2-.4-.6-.6-1.1-.5-.4 0-.8.3-.9.8-4.3 12.8-9.
7 23.9-13 29.4 0 0 0 .1-.1.1-1.5 3.4-2.8 6.1-4 7.9-4.1 6.4-7.1 8.8-8.3 9.1 0-.9.4-3.6 2.5-11.9.1-.3 0-.7-.2-.9-.2-.3-.5-.4-.9-.4-11.6-.4-30.4-4.6-41.2-9.1-.1-.1-.3-.1-.4-.1-.2 0-.4 0-.5.1-.3.2-.5.4-.6.8-1.7 8.1-2.5 10.6-2.9 11.3-.8-.7-2.6-4-3.4-11.8-.2-1.7-.2-3.8-.2-6.3 0-.2 0-.4-.1-.5-8.5-16.3-5.2-21.7-.9-28.6 3.2-5.1 6.8-11 6.1-22.1-.5-8.3.1-15.7 1.8-21.9.2-.5-.1-1.1-.6-1.3l-2.3-.9c-3.9-1.6-5.8-6.1-4.2-10 1.2-2.9 4-4.8 7.1-4.8 1 0 2 .2 2.9.6l5.4 2.2c.3.1.6.1.9 0 7.5-3.2 15-5 22.2-5.4.6 0 1-.5 1.1-1.1.1-2.6 1.5-4.9 3.6-6.3 1.2-.8 2.6-1.2 4.1-1.2 2.7 0 5.1 1.4 6.5 3.6l3.4 5.5c.2.4.7.6 1.1.5l.4-.1c.7-.1 1.6-.2 2.6-.2 3.8 0 9.2.6 12.7 1.1l-3 1.6c-.4.2-.7.7-.6 1.2.1.5.5.8.9.9l5.8.9-2.6 2.2c-.3.3-.5.7-.4 1.1l1.3 5.4c0 .1.1.2.1.3.6 1 1 1.9 1.3 2.7 4.5 12.7 4 29-1.4 48.4-.1.3 0 .5.1.8 2.4 4.8 7.1 13.2 12.7 15.5 5.2 2.1 8.4 2.4 9.8 2.4.6 0 1 0 1.2-.1.9-.4 2 .1 2.4 1 .6.9.2 2-.7 2.4z" transform="translate(4 2)"/>
+ <path fill="url(#b)" fill-rule="nonzero" d="M36.6 40.6c-1.1 0-2.2-.2-3.3-.7l-16.2-6.6c-4.5-1.8-6.7-7-4.8-11.5 1.8-4.5 7-6.7 11.5-4.8L40 23.6c4.5 1.8 6.7 7 4.8 11.5-1.4 3.4-4.7 5.5-8.2 5.5z"/>
+ <path fill="url(#c)" fill-rule="nonzero" d="M70.8 39.3c-2.9 0-5.8-1.5-7.5-4.2L53.1 18.6c-2.6-4.1-1.3-9.6 2.8-12.1C60 3.9 65.5 5.2 68 9.3l10.2 16.5c2.6 4.1 1.3 9.6-2.8 12.1-1.4 1-3 1.4-4.6 1.4z"/>
+ <path fill="url(#d)" fill-rule="nonzero" d="M28.6 19.4c-2.2.9-12.8 10.5-11.1 37.1 1.7 26.2-21.6 21.8-3.8 53.4 3.9 6.9 50.2 17.7 58.6 12.7 2.5-1.5 31.6-54.6 19.1-89.8-4.1-11.5-28.5-28-62.8-13.4z"/>
+ <path fill="url(#e)" fill-rule="nonzero" d="M14.3 87.5s-2.6 17.8-1.7 26.6c1 8.8 3.3 13.7 5.1 12.8 1.7-.8 6.2-26.8 6.2-26.8l-9.6-12.6z"/>
+ <path fill="url(#f)" fill-rule="nonzero" d="M80.7 103s-5.5 17.1-10.3 24.6c-4.8 7.5-9.1 10.8-10.2 9.3-1.2-1.5 6.2-26.8 6.2-26.8l14.3-7.1z"/>
+ <path fill="url(#g)" fill-rule="nonzero" d="M33.5 19c7.8-4 28.9-2.7 38.4-4.1C77 14.1 91 16.3 91 16.3l-6 3.2 8.2 1.2-4.5 3.8 1.8 7.3-1.3-.7-46.3-12.8-9.4.7z"/>
+ <path fill="url(#h)" fill-rule="nonzero" d="M111.4 105.1c-2.3 0-6-.6-11.5-2.8-10-4-16.7-20.9-17.4-22.9-.6-1.5.2-3.2 1.7-3.8 1.5-.6 3.2.2 3.8 1.7 1.7 4.5 7.7 16.9 14.1 19.5 7.1 2.9 10.2 2.3 10.2 2.3 1.5-.6 3.2.1 3.8 1.6.6 1.5-.1 3.2-1.6 3.8-.4.3-1.4.6-3.1.6z"/>
+ <path fill="#FFF" fill-rule="nonzero" d="M35.4 29.8c-8.3 5.5-3.2 72.6 2.7 79.8 9.5 11.8 31.7 9.3 34.6 3 1.1-2.3 26-48.2 14.3-79.8-3-8-22.5-22.3-51.6-3z"/>
+ <path fill="url(#i)" fill-rule="nonzero" d="M50.3 43.8c.9.2 1.4 1.1 1.2 1.9l-.8 3.5c-.2.9-1.1 1.4-1.9 1.2-.9-.2-1.4-1.1-1.2-1.9l.8-3.5c.2-.9 1.1-1.4 1.9-1.2z"/>
+ <path fill="url(#j)" fill-rule="nonzero" d="M81.4 44.8c.9.2 1.4 1.1 1.2 1.9l-.8 3.5c-.2.9-1.1 1.4-1.9 1.2-.9-.2-1.4-1.1-1.2-1.9l.8-3.5c.2-.9 1-1.4 1.9-1.2z"/>
+ <path fill="url(#k)" fill-rule="nonzero" d="M48.9 57.6c-.5 0-1-.1-1.5-.2-3.5-.8-4.7-3.9-4.7-4.1-.3-.8.1-1.6.9-1.9.8-.3 1.6.1 1.9.9 0 .1.7 1.8 2.6 2.2 1.9.5 3.3-.8 3.3-.8.6-.6 1.5-.5 2.1 0 .6.6.5 1.5 0 2.1-.2.1-2 1.8-4.6 1.8z"/>
+ <path fill="url(#l)" fill-rule="nonzero" d="M56.6 69.2c-.8 0-1.4-.6-1.5-1.3-.1-.8.5-1.5 1.3-1.6 8.9-.7 17.1-2.5 18-3.8 1-1.7 1.2-4 1.2-4.1 0-.8.7-1.4 1.4-1.4.8 0 1.4.5 1.5 1.3.1 1.3.6 3.4 1.2 4.1 1.1 1.3 2.3 1.2 2.3 1.2.8 0 1.5.6 1.6 1.4.1.8-.6 1.5-1.4 1.6-1 .1-3.2-.3-4.8-2.3-.1-.2-.3-.4-.4-.6-.1.1-.1.2-.2.3-2 3.3-14.8 4.7-20.3 5.2h.1z"/>
+ <g fill-rule="nonzero">
+ <path fill="url(#m)" d="M2.4 4.3C1.3 5 7.7 8.2 8.6 8.2c1.3 0 7.8-2.8 7.6-5C16 2.1 6.8 1.3 2.4 4.3z" transform="translate(70 52)"/>
+ <path fill="url(#n)" d="M8.6 9.7C7.5 9.7 1.5 7 .9 5c-.2-.8.1-1.5.7-2C5.8.2 13.9.3 16.3 1.4c1 .4 1.2 1.1 1.3 1.6.1.9-.2 1.7-1 2.6-1.8 2.1-6.4 4.1-8 4.1zm-3.9-5c1.3.8 3.5 1.9 4.1 2 .9-.1 4.3-1.7 5.5-2.8-2-.4-6.5-.5-9.6.8z" transform="translate(70 52)"/>
+ </g>
+ <g fill-rule="nonzero">
+ <path fill="#C8C8CC" d="M115 92.8l-7.2.1-.5-40.7c0-3.3 2.5-6.1 5.7-6.3.3 0 .5.2.5.4l1.5 46.5z"/>
+ <path fill="#E1E1E6" d="M130.1 53.3c.2-.2.5-.1.7.1 1.9 2.7 1.4 6.4-1.1 8.5l-31.3 26-4.6-5.5 36.3-29.1z"/>
+ <path fill="url(#o)" d="M.7 10c-.4 2.6.2 5.2 1.9 7.1.8 1 1.8 1.7 2.9 2.3 3.5 1.6 7.8 1 11-1.7.2-.2.5-.4.7-.6l10.1-8.4c.4-.4.7-.9.8-1.4.1-.6-.1-1.1-.5-1.5l-2.9-3.4c-.2-.2-.4-.4-.7-.6-.2-.1-.5-.2-.7-.2-.6-.1-1.1.1-1.5.5l-2.9 2.4c-.1-.2-.2-.3-.4-.5-.8-1-1.8-1.7-2.9-2.3-3.5-1.6-7.8-1-11 1.7C2.5 5.1 1.2 7.5.7 10zm6.6-3.4c1.9-1.6 4.5-2.1 6.5-1.1.6.3 1.1.7 1.5 1.1 1.4 1.6 1.3 4.1.1 6.1-.5.7-1.1 1.4-2 2.1-1.9 1.3-4.2 1.5-5.9.7-.6-.3-1.1-.7-1.5-1.1-.8-1-1.2-2.4-.9-3.8 0-1.5.9-2.9 2.2-4z" transform="translate(77 75)"/>
+ <path fill="url(#p)" d="M0 2.5l.2 13.2v.9c.1 4.1 2.3 7.8 5.7 9.4 1.2.6 2.5.9 3.8.8 5.1-.1 9.3-4.7 9.2-10.4-.1-4.1-2.3-7.8-5.7-9.4-1.2-.6-2.5-.9-3.8-.8h-.6V2.4c0-.8-.5-1.5-1.2-1.9C7.3.4 7 .3 6.7.3L2.2.4C1.6.4 1.1.6.7 1 .2 1.4 0 2 0 2.5zm11.3 8.3c1.9.9 3.2 3.1 3.3 5.6 0 3.4-2.2 6.1-5 6.2-.7 0-1.3-.1-1.9-.4-1.8-.8-3-2.7-3.2-4.9v-.1c0-1.2.1-2.1.3-2.9.7-2.2 2.5-3.9 4.7-3.9.5 0 1.2.1 1.8.4z" transform="translate(107 83)"/>
+ <path fill="#C8C8CC" d="M111.3 70.6c1.3.1 2.2 1.3 2.1 2.5-.1 1.3-1.3 2.2-2.5 2.1-1.3-.1-2.2-1.3-2.1-2.5.1-1.2 1.2-2.2 2.5-2.1z"/>
+ </g>
+ <path fill="url(#q)" fill-rule="nonzero" d="M1.4 2.1L.3 5.7c-1 3.1.7 6.4 3.8 7.4 3.1 1 6.4-.7 7.4-3.8L14.4.1l-13 2z" transform="translate(57 67)"/>
+ <path fill="url(#r)" fill-rule="nonzero" d="M63.3 74.7h-.2c-.4-.1-.6-.5-.5-.9l2.2-6.8c.1-.4.5-.6.9-.5.4.1.6.5.5.9L64 74.2c-.1.3-.4.5-.7.5z"/>
+ <path fill="url(#s)" fill-rule="nonzero" d="M58.7 98.1c-17.5 0-33-27.8-33.6-29-.8-1.4-.3-3.2 1.2-4 1.4-.8 3.2-.3 4 1.2 4.2 7.6 17.5 27 29.4 25.9 15.2-1.4 22.4-6.9 22.4-7 1.3-1 3.1-.8 4.1.5 1 1.3.8 3.1-.4 4.1-.3.3-8.5 6.7-25.6 8.2-.5.1-1 .1-1.5.1z"/>
+ <path fill="url(#t)" fill-rule="nonzero" d="M112.5 97.8s-8 3.2-8.1 5.9c-.1 2.7 8.2 6 11.8.7 3.6-5.2-2.3-7.2-3.7-6.6z"/>
+ <path fill="url(#u)" fill-rule="nonzero" d="M30.5 65.3s.7 5.9 4.4 9.2c3.7 3.3-4.8 8.1-4.4 15.4.4 7.4 0-24.6 0-24.6z"/>
+ <path fill="url(#v)" fill-rule="nonzero" d="M58.8 98.9h-1.1C44 98.5 32 81 31.5 80.2c-.2-.3-.1-.8.2-1 .3-.2.8-.1 1 .2.1.2 12.1 17.7 25 18 12.8.3 25.3-6.2 27.1-7.7.5-.4.9-2.6.2-3.7-.7-1-2.4-.3-3.6.5-.3.2-.8.1-1-.2-.2-.3-.1-.8.2-1 3.4-2.1 4.9-.9 5.6-.1 1.2 1.6.8 4.7-.4 5.7-1.2 1-13.4 8-27 8z"/>
+ <path fill="url(#w)" fill-rule="nonzero" d="M110.8 108.3c-1.3 0-2.8-.3-4.4-1.3-1.9-1-2.8-2.2-2.7-3.6.2-2.7 4.7-4.5 5.2-4.7.4-.1.8 0 1 .4.1.4 0 .8-.4 1-1.6.6-4.2 2.1-4.3 3.5-.1.9 1 1.7 1.9 2.2 2.2 1.2 4.3 1.4 6.1.6 2.1-1 3.1-2.8 3.2-3.2.1-.6.5-2.4-.5-3.5-.7-.8-2.1-1.1-4.1-.9-.4 0-.8-.3-.8-.7 0-.4.3-.8.7-.8 2.5-.2 4.3.2 5.3 1.4 1.5 1.6 1 4 .8 4.7-.2.9-1.6 3.2-4 4.3-.8.3-1.8.6-3 .6z"/>
+ <path fill="url(#x)" fill-rule="nonzero" d="M61.1 125.5c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7 3.2 0 8.1-1 8.2-1 .4-.1.8.2.9.6.1.4-.2.8-.6.9-.2-.1-5.1.9-8.5.9z"/>
+ <path fill="url(#y)" fill-rule="nonzero" d="M23 25.4h-.2c-.4-.1-.6-.5-.5-.9.2-.7 2.4-5 7.8-7.4.4-.2.8 0 1 .4.2.4 0 .8-.4 1-4.7 2-6.7 5.8-6.9 6.4-.2.3-.5.5-.8.5z"/>
+ <path fill="url(#z)" fill-rule="nonzero" d="M68.5 14.8c-8.9 0-18.2-1.2-18.3-1.2-.4-.1-.7-.4-.6-.8.1-.4.4-.7.8-.6.1 0 14.1 1.8 24.1 1 .4 0 .8.3.8.7 0 .4-.3.8-.7.8-2 0-4 .1-6.1.1z"/>
+ <path fill="url(#A)" fill-rule="nonzero" d="M88.8 89h-.2c-.4-.1-.6-.5-.5-.9l2-6c.1-.4.5-.6.9-.5.4.1.6.5.5.9l-2 6c-.1.3-.4.5-.7.5z"/>
+ <path fill="url(#B)" fill-rule="nonzero" d="M21 119.1h-.1c-.4-.1-.7-.5-.6-.9l1.7-8.6c.1-.4.5-.7.9-.6.4.1.7.5.6.9l-1.7 8.6c-.2.4-.5.6-.8.6z"/>
+ </g>
+ <path fill="#D7D7DB" fill-rule="nonzero" d="M70.8 82.4c-3.7 0-6.6 3-6.6 6.6h6.6v-6.6zm20 0h-6.6V89h6.6v-6.6zm13.3 0V89h6.6c0-3.6-3-6.6-6.6-6.6zm-23.3 0h-6.6V89h6.6v-6.6zm19.9 0h-6.6V89h6.6v-6.6zm3.4 16.6h6.6v-6.6h-6.6V99zm0 20c3.7 0 6.6-3 6.6-6.6h-6.6v6.6zm0-10h6.6v-6.6h-6.6v6.6zm-1.5-7.2c-2.1-3-6.2-3.7-9.3-1.6l-12.7 9.4-6.5-4.6c0-.3.1-.6.1-1 0-2.7-1.3-5.1-3.3-6.6v-5h-6.6v3.5c-3.8.8-6.6 4.1-6.6 8.1 0 4.6 3.7 8.3 8.3 8.3 1.8 0 3.5-.6 4.8-1.6l4.1 2.9-4.6 3.3c-1.3-.8-2.7-1.2-4.3-1.2-4.6 0-8.3 3.7-8.3 8.3 0 4.6 3.7 8.3 8.3 8.3 4.6 0 8.3-3.7 8.3-8.3 0-.6-.1-1.1-.2-1.6l28.5-20.6zm-36.7 6.4c-2.3 0-4.2-1.9-4.2-4.2 0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.2 1.9 4.2 4.2-.1 2.3-1.9 4.2-4.2 4.2zm0 19.9c-2.3 0-4.2-1.9-4.2-4.2 0-2.3 1.9-4.2 4.2-4.2 2.3 0 4.2 1.9 4.2 4.2-.1 2.4-1.9 4.2-4.2 4.2zm17.9-8l10 7.6c3 2.1 7.2 1.4 9.3-1.6L89.6 116l-5.8 4.1z"/>
+ <g fill="#D7D7DB" fill-rule="nonzero">
+ <path d="M17.5 26.8l-.1-.1.1.1zM266.5 1.5v4.4c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5V3h-2.9c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h4.4c.8 0 1.5.7 1.5 1.5zM266.5 14.4v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V40c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.4zm0 17.1V57c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V74c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V91c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17.1v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17.1v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5
1.5zM266.5 184.8v4.4c0 .8-.7 1.5-1.5 1.5h-4.4c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h2.9v-2.9c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.5zM253.3 189.2c0 .8-.7 1.5-1.5 1.5H243c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5H208c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.4.7 1.4 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8
c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5H94c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5H59c.8 0 1.4.7 1.4 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zM7.8 189.2c0 .8-.7 1.5-1.5 1.5H2c-.8 0-1.5-.7-1.5-1.5v-4.4c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5v2.9h2.9c.8 0 1.4.7 1.4 1.5zM3.4 14.4v8.5c0 .8-.7 1.5-1.5 1.5S.4 23.7.4 22.9v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V40c0 .8-.7 1.5-1.5 1.5S.4 40.8.4 40v-8.5c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.4zm0 17.1V57c0 .8-.7 1.5-1.5 1.5S.4 57.8.4 57v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V74c0 .8-.7 1.5-1.5 1.5S.4 74.8.4 74v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17V91c0 .8-.7 1.5-1.5 1.5S.4 91.8.4 91v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17.1v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7
-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17.1v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.6 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zm0 17v8.5c0 .8-.7 1.5-1.5 1.5s-1.5-.7-1.5-1.5v-8.5c0-.8.7-1.5 1.5-1.5s1.5.7 1.5 1.5zM7.8 1.5c0 .8-.7 1.5-1.5 1.5H3.4v2.9c0 .8-.7 1.5-1.5 1.5S.4 6.7.4 5.9V1.5C.4.7 1.1 0 1.9 0h4.4c.9 0 1.5.7 1.5 1.5zM253.3 1.5c0 .8-.7 1.5-1.5 1.5H243c-.8 0-1.5-.7-1.5-1.5S242.2 0 243 0h8.8c.8 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5H208c-.8 0-1.5-.7-1.5-1.5S207.2 0 208 0h8.8c.8 0 1.4.7 1.4 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-
.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S137 0 137.8 0h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S84.4 0 85.2 0H94c.9 0 1.5.7 1.5 1.5zM78 1.5c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S66.9 0 67.7 0h8.8c.8 0 1.5.7 1.5 1.5zm-17.6 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S49.3 0 50.1 0H59c.8 0 1.4.7 1.4 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S31.8 0 32.6 0h8.8c.9 0 1.5.7 1.5 1.5zm-17.5 0c0 .8-.7 1.5-1.5 1.5h-8.8c-.8 0-1.5-.7-1.5-1.5S14.3 0 15.1 0h8.8c.8 0 1.5.7 1.5 1.5z"/>
+ </g>
+ <path d="M-18-32h352v303H-18z"/>
+ </g>
+</svg>
diff --git a/browser/extensions/onboarding/content/img/figure_singlesearch.svg b/browser/extensions/onboarding/content/img/figure_singlesearch.svg
new file mode 100644
index 000000000000..9be029397ccf
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_singlesearch.svg
@@ -0,0 +1 @@
+<svg width="303" height="253" viewBox="0 0 303 253" xmlns="http://www.w3.org/2000/svg"><title>search</title><defs><linearGradient x1="-18.632%" y1="-397.383%" x2="117.795%" y2="492.152%" id="a"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-312.046%" y1="-3945.649%" x2="293.266%" y2="2768.992%" id="b"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-291.258%" y1="-362.215%" x2="267.9%" y2="331.228%" id="c"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-145.39%" y1="-145.464%" x2="148.231%" y2="148.054%" id="d"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-760.952%" y1="-957.112%" x2="540.851%" y2="637.214%" id="e"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></
linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-18-9h352v303H-18z"/><g fill-rule="nonzero"><g fill="#D7D7DB"><path d="M262.3 209.3H138.8c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h123.5c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1zM245.6 203.7h-31c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h31c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zM217.5 214.1h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-22.3 0h-3.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-11.1 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-22.4 0h-3.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-7.8 0H145c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-11.1 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6H135c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-22.3 0h-3.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6
-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-11.2 0H80.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-22.3 0H68c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.2.6-.5.6zm-7.8 0h-1.1c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1.1c.3 0 .6.2.6.6-.1.4-.3.6-.6.6zm-11.2 0H39c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6z"/></g><path d="M6.3 148.8c-2.8 0-5.1-2.3-5.1-5.1v-27.2c0-2.8 2.3-5.1 5.1-5.1h245.8c2.8 0 5.1 2.3 5.1 5.1v27.2c0 2.8-2.3 5.1-5.1 5.1H6.3z" fill="#FFF"/><path d="M252.1 2.4c2.2 0 4 1.8 4 4v27.2c0 2.2-1.8 4-4 4H6.3c-2.2 0-4-1.8-4-4V6.4c0-2.2 1.8-4 4-4h245.8zm0-2.2H6.3C2.9.2.1 3 .1 6.4v27.2c0 3.4 2.8 6.2 6.2 6.2h245.8c3.4 0 6.2-2.8 6.2-6.2V6.4c.1-3.4-2.7-6.2-6.2-6.2z" fill="url(#a)" transform="translate(0 110)"/><path d="M157 23.5h24.1s-7.5-16.9 8.5-19c14.3-1.9 19.9 12.7 19.9 12.7s1.7-8.5 10.2-6.8c8.4 1.6 14.6 15.1 14.6 15.1h21" fill="#F9F9FA"/><path d="M255.6 21.4h-6.2c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h6.2c.3 0 .6.2.6.6 0 .
4-.3.6-.6.6zm-16.2 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-57.9-.6h-1.8c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h1c-.1-.2-.2-.4-.3-.7-.1-.3.1-.6.3-.7.3-.1.6.1.7.3.3.9.5 1.4.5 1.4.1.2.1.4 0 .5 0 .3-.2.4-.4.4zm-10.7 0h-13.4c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.4c.3 0 .6.2.6.6-.1.3-.3.6-.6.6zm63.4-.1c-.2 0-.4-.1-.5-.3-.4-.6-.9-1.6-1.7-2.8-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.8 1.2 1.4 2.2 1.8 2.9.2.3.1.6-.2.8h-.4zM179.9 15c-.3 0-.5-.2-.6-.5-.1-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.2-.1.5-.5.6.1 0 0 0 0 0zm29.1-2.5c-.2 0-.4-.1-.5-.3-.2-.3-.3-.6-.5-1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.4.4.7.6 1 .1.3 0 .6-.2.8-.3.1-.3.1-.4.1zm17.7-1.4c-.1 0-.3 0-.4-.1-2.1-1.8-4.3-3-6.3-3.4-2-.4-3.8-.2-5.3.6-.3.1-.6 0-.8-.2-.1-.3 0-.6.2-.8 1.7-.9 3.8-1.1 6.1-.7 2.3.4 4.6 1.6 6.9 3.6.2.2.3.6.1.8-.2.1-.4.2-.5.2zm-20.9-3.2c-.2 0-.3-.1-.4-.2-.7-.8-1.5-1.6-2.3-2.3-.2-.2-.3-.6-.1-.8.2-.2.5-.3.8-.1.9.7 1.7 1.5 2.4 2.4.2.2.2.6-.1.8 0 .2-.2.2-.3.2zm-23-3.2c-.2 0-.3-.1-.4-.2-.2-.
2-.2-.6 0-.8 1.8-1.6 4.3-2.7 7.5-3.1 1.9-.3 3.8-.2 5.7.1.3.1.5.3.5.6-.1.3-.3.5-.6.5-1.7-.3-3.5-.3-5.3-.1-2.9.4-5.3 1.3-6.9 2.8-.2.1-.4.2-.5.2z" fill="#D7D7DB"/><path d="M256.3 25.7H157c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h99.4c.6 0 1.1.5 1.1 1.1 0 .6-.6 1.1-1.2 1.1zM4 46.5h13.4s-4.2-9.4 4.7-10.6C30 34.8 33.2 43 33.2 43s.9-4.7 5.7-3.8c4.7.9 8.1 8.4 8.1 8.4h11.7" fill="#F9F9FA"/><path d="M17.8 45H4.5c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.7.6zm41.3-.1h-.5c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h.5c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-5 0h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-20.4-3.4c-.2 0-.4-.2-.5-.4L33 41c-.1-.3 0-.6.2-.7.5-1.6 2-3.8 4.9-3.8.4 0 .8 0 1.3.1 1.7.3 3.3 1.3 5 2.9.2.2.2.6 0 .8-.2.2-.6.2-.8 0-1.5-1.4-3-2.3-4.4-2.6-.4-.1-.7-.1-1-.1-3.2 0-3.9 3.3-4 3.5-.1.2-.3.4-.5.4zm-15.6-4.9c-.1 0-.3 0-.4-.1-.2-.2-.3-.6-.1-.8.7-.9 1.8-1.5 3.1-1.9.3-.1.6.1.7.4.1.3-.1.6-.4.7-1.1.3-1.9.9-2.5 1.6 0 0-.2.1-.4.1zm8.3-1.9h-.1c-.3-.1-.7-.2-1-.2-.3
0-.5-.3-.5-.6s.3-.5.6-.5c.4.1.8.1 1.2.2.3.1.5.4.4.7-.1.2-.3.4-.6.4z" fill="#D7D7DB"/><path d="M59.5 48.8H4.3c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h55.3c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.2 1.1z" fill="#F9F9FA"/><g><path d="M210 92.1v-9.5c0-2-1.6-3.6-3.6-3.6H38.3c-2 0-3.6 1.6-3.6 3.6v9.5c0 2 1.6 3.6 3.6 3.6h168.1c2 0 3.6-1.6 3.6-3.6zm0-34.8v-9.5c0-2-1.6-3.6-3.6-3.6H38.3c-2 0-3.6 1.6-3.6 3.6v9.5c0 2 1.6 3.6 3.6 3.6h168.1c2 0 3.6-1.6 3.6-3.6zm0 121.3v-9.5c0-2-1.6-3.6-3.6-3.6H38.3c-2 0-3.6 1.6-3.6 3.6v9.5c0 2 1.6 3.6 3.6 3.6h168.1c2 0 3.6-1.6 3.6-3.6z" fill="#FFF"/><path d="M206 44.2c2.2 0 4 1.8 4 4v8.7c0 2.2-1.8 4-4 4H38.8c-2.2 0-4-1.8-4-4v-8.7c0-2.2 1.8-4 4-4H206zm0 34.8c2.2 0 4 1.8 4 4v8.7c0 2.2-1.8 4-4 4H38.8c-2.2 0-4-1.8-4-4V83c0-2.2 1.8-4 4-4H206zm0 86.5c2.2 0 4 1.8 4 4v8.7c0 2.2-1.8 4-4 4H38.8c-2.2 0-4-1.8-4-4v-8.7c0-2.2 1.8-4 4-4H206zm0-123.6H38.8c-3.4 0-6.2 2.8-6.2 6.2v8.7c0 3.4 2.8 6.2 6.2 6.2H206c3.4 0 6.2-2.8 6.2-6.2v-8.7c0-3.4-2.8-6.2-6.2-6.2zm0 34.8H38.8c-3.4 0-6.2 2.8-6.
2 6.2v8.7c0 3.4 2.8 6.2 6.2 6.2H206c3.4 0 6.2-2.8 6.2-6.2V83c0-3.5-2.8-6.3-6.2-6.3zm0 86.6H38.8c-3.4 0-6.2 2.8-6.2 6.2v8.7c0 3.4 2.8 6.2 6.2 6.2H206c3.4 0 6.2-2.8 6.2-6.2v-8.7c0-3.4-2.8-6.2-6.2-6.2z" fill="#D7D7DB"/></g><path d="M300.8 176.6l-.1-.1-4.7-4.3c-.2-1.2-.8-2.3-1.7-3.1l-17.4-16c-.9-.8-2-1.3-3.2-1.4l-8.3-7.6c-1-1-2.2-1.7-3.5-2.1 10.8-18 8.1-41.3-6.9-56.4-8.7-8.7-20.3-13.5-32.6-13.5s-23.9 4.8-32.6 13.5c-18 18-18 47.3 0 65.2 8.7 8.7 20.3 13.5 32.6 13.5 8.3 0 16.6-2.3 23.7-6.6.4 1.3 1.2 2.6 2.2 3.6l7.6 8.3c.1 1.2.6 2.3 1.4 3.2l16 17.4c.8.9 1.9 1.5 3.1 1.7l4.2 4.6.1.1c1.5 1.5 3.4 2.3 5.7 2.3 3.6 0 7.8-2 11.2-5.4 5.7-5.8 7.1-13 3.2-16.9z" fill="#F9F9FA"/><g><path d="M224.1 88.7c-10.7 0-20.3 5.1-26.3 13h52.6c-6.1-7.9-15.6-13-26.3-13z" fill="#F9F9FA"/><path d="M248.9 152.7c.5-1.5 1.4-3.1 3.1-4.8 1.6-1.6 3.2-2.6 4.8-3.1l-2.5-2.5c12-15.9 10.8-38.6-3.7-53.1-7.9-7.9-18.3-11.9-28.7-11.9-10.4 0-20.8 4-28.7 11.9-15.8 15.8-15.8 41.5 0 57.4 7.9 7.9 18.3 11.9 28.7 11.9 8.6 0 17.2-2.7 24.4-8
.2l2.6 2.4zm-27-1.8c-11.8 0-22.1-6.2-28-15.4.1.1.1.3.2.4-1-1.6-1.9-3.3-2.7-5.1v-.1c-.2-.4-.4-.9-.5-1.3l-.6-1.8v-.1c-.9-3-1.4-6.2-1.4-9.6 0-3.8.7-7.5 1.8-10.9.6-1.8 1.4-3.6 2.4-5.3h.2c5.7-10 16.4-16.7 28.8-16.7 12.3 0 23.1 6.7 28.7 16.7h.1c.9 1.7 1.7 3.4 2.4 5.3 1.2 3.4 1.8 7 1.8 10.9-.1 18.2-14.9 33-33.2 33z" fill="#CCEDF0"/><path d="M253.2 107h-58.7c-2.2 4.4-3.5 9.5-3.5 14.8 0 4.9 1.1 9.6 3 13.7 5.9 9.3 16.2 15.4 28 15.4 18.3 0 33.1-14.8 33.1-33.1-.1-3.8-.7-7.4-1.9-10.8zM190.8 107h-.1c-1.2 3.4-1.8 7-1.8 10.9 0 3.3.5 6.5 1.4 9.6-.9-3-1.3-6.1-1.3-9.3-.1-4 .6-7.8 1.8-11.2zM190.9 129.3l-.6-1.8.6 1.8z" fill="#FFF"/><path d="M71.3 26.7H18.7c-1.3 1.6-2.4 3.4-3.3 5.3h58.7c-.6-1.8-1.4-3.6-2.4-5.3h-.1c.4.7.8 1.5 1.2 2.2-.4-.7-.9-1.5-1.5-2.2z" fill="url(#b)" transform="translate(179 75)"/><path d="M193.3 101.7h-.2c-.9 1.7-1.7 3.4-2.4 5.3h.1c.7-1.9 1.5-3.6 2.5-5.3z" fill="#E9E9EE"/><path d="M15.5 32c.9-1.9 2-3.6 3.3-5.3 6-7.9 15.6-13 26.3-13 10.7 0 20.2 5.1 26.3 13 .5.7 1.1 1.5 1.6 2.2-.4-.8-.
7-1.5-1.2-2.2C66.1 16.7 55.4 10 43.1 10S20 16.7 14.3 26.7c-1 1.7-1.8 3.4-2.4 5.3-1.2 3.5-1.9 7.2-1.9 11.1 0 3.2.5 6.4 1.3 9.3v.1l.6 1.8c.2.5.3.9.5 1.3v.1c.7 1.8 1.6 3.5 2.7 5.1-.1-.1-.1-.3-.2-.4-1.9-4.2-3-8.8-3-13.7.1-5.3 1.4-10.3 3.6-14.7z" fill="url(#c)" opacity=".4" transform="translate(179 75)"/><path d="M119.1 103.6l-5.7-5.2c0-.2.1-.3.1-.5 0-.6-.3-1.2-.7-1.6l-17.4-16c-.4-.4-1-.6-1.5-.6-.2 0-.4 0-.7.1l-9.4-8.6c-.8-.8-1.8-1.3-3-1.5l-2.5-2.5c11.6-16.8 9.5-39.9-5-54.5C65.2 4.6 54.5.2 43 .2S20.8 4.7 12.7 12.7C-4 29.4-4 56.5 12.7 73.2c8.1 8.1 18.8 12.5 30.2 12.5 8.6 0 17.1-2.7 24.2-7.5l2.6 2.6c.2 1.2.8 2.2 1.6 3l8.6 9.4c-.2.7-.1 1.6.5 2.2l16 17.4c.4.4 1 .7 1.6.7.2 0 .3 0 .5-.1l5.2 5.7c.8.8 2 1.3 3.3 1.3 2.7 0 6.1-1.7 8.8-4.5 4.4-4.5 5.8-9.8 3.3-12.3zM14.3 71.5C-1.5 55.7-1.5 30 14.3 14.1 22.2 6.2 32.6 2.2 43 2.2c10.4 0 20.8 4 28.7 11.9 14.5 14.5 15.7 37.2 3.7 53.1l2.5 2.5c-1.6.5-3.2 1.5-4.8 3.1-1.7 1.7-2.7 3.3-3.1 4.8l-2.5-2.5c-7.2 5.5-15.8 8.2-24.4 8.2-10.5.1-20.9-3.9-28.8-11.8zm96.9
26.3L98 111.1 82 93.7l11.8-11.8 17.4 15.9z" fill="url(#d)" transform="translate(179 75)"/><path fill="#CCEDF0" d="M277 186.1l13.2-13.3-17.4-15.9-11.8 11.8"/></g><ellipse fill="#EDEDF0" cx="242.1" cy="246.7" rx="57.2" ry="5.8"/><g><path d="M21.3 33.9c-.6 0-1.3-.2-1.8-.6L7.1 23.2c-1.3-.9-2.4-2-3.2-3.2C1 15.5 1.6 9.5 5.4 5.8c2.1-2.1 5-3.3 8-3.3s5.8 1.1 7.9 3.2c2.1-2 4.9-3.2 7.9-3.2 3.3 0 6.5 1.5 8.7 4 3.2 3.8 3.5 9.4.8 13.5-.8 1.3-1.9 2.3-3.2 3.2l-12.3 10c-.6.5-1.2.7-1.9.7z" fill="url(#e)" transform="translate(201 113)"/><path d="M214.4 117c2.5 0 5 1 6.9 2.9.3.3.6.4 1 .4s.7-.1 1-.4c1.9-1.9 4.4-2.8 6.9-2.8 2.7 0 5.5 1.2 7.5 3.5 2.8 3.3 3 8.1.7 11.7-.8 1.1-1.7 2-2.7 2.7l-12.4 10.1c-.2.2-.5.3-.8.3-.3 0-.5-.1-.8-.3L209.2 135c-1.1-.7-2.1-1.6-2.8-2.8-2.5-3.8-2-9 1.3-12.2 1.7-2 4.2-3 6.7-3zm0-3.1c-3.4 0-6.7 1.3-9.1 3.8-4.3 4.3-5 11.1-1.7 16.2.9 1.4 2.2 2.7 3.6 3.7l12.4 10c.8.6 1.8 1 2.8 1 1 0 2-.3 2.7-1l12.3-10.1c1.4-1 2.6-2.1 3.5-3.5 3.1-4.7 2.8-11.1-.9-15.4-2.5-2.9-6.1-4.6-9.9-4.6-2.9 0-5.
6.9-7.9 2.7-2.2-1.9-4.9-2.8-7.8-2.8z" fill="#FFF"/><path d="M208.6 128.1h-.1c-.9-.1-1.6-.9-1.5-1.8.3-3.2 2.5-5.8 5.7-6.5.9-.2 1.8.4 1.9 1.2.2.9-.4 1.8-1.2 1.9-1.7.4-3 1.8-3.1 3.6-.2 1-.9 1.6-1.7 1.6z" fill="#F9F9FA"/></g></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/figure_sync.svg b/browser/extensions/onboarding/content/img/figure_sync.svg
new file mode 100644
index 000000000000..74562d37236d
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/figure_sync.svg
@@ -0,0 +1 @@
+<svg width="279" height="212" viewBox="0 0 279 212" xmlns="http://www.w3.org/2000/svg"><title>sync</title><defs><linearGradient x1="-424.525%" y1="-219.797%" x2="201.215%" y2="136.157%" id="a"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1416.558%" y1="-1417.275%" x2="631.855%" y2="631.14%" id="b"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1909.4%" y1="-1924.057%" x2="675.504%" y2="691.989%" id="c"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1453.558%" y1="-828.355%" x2="354.762%" y2="235.706%" id="d"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-608.073%" y1="-599.552%" x2="1804.502%" y2="1813.024%" id="e"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"
/></linearGradient><linearGradient x1="-55.527%" y1="-25.138%" x2="334.297%" y2="252.524%" id="f"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-359.418%" y1="-359.43%" x2="1512.409%" y2="1512.397%" id="g"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-393.876%" y1="-203.242%" x2="1247.254%" y2="755.651%" id="h"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-772.819%" y1="-773.412%" x2="1098.573%" y2="1098.414%" id="i"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-1129.33%" y1="-1133.526%" x2="1256.735%" y2="1279.05%" id="j"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-78.929%" y1="-156.663%" x2="182.03%" y2="261.703%" id
="k"><stop stop-color="#CCFBFF" offset="0%"/><stop stop-color="#C9E4FF" offset="100%"/></linearGradient><linearGradient x1="-2.965%" y1="-86.281%" x2="110.352%" y2="213.059%" id="l"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-833.673%" y1="-459.972%" x2="807.063%" y2="498.921%" id="m"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient><linearGradient x1="-17.606%" y1="-93.916%" x2="104.414%" y2="177.35%" id="n"><stop stop-color="#00C8D7" offset="0%"/><stop stop-color="#0A84FF" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><path d="M-37-28h352v268H-37z"/><g fill-rule="nonzero"><g><path d="M23 23.1h23.9S39.4 6.4 55.3 4.2c14.2-1.9 19.8 12.6 19.8 12.6s1.7-8.4 10.1-6.8c8.3 1.6 14.5 15 14.5 15h20.8" fill="#F9F9FA"/><path d="M121 21.1h-5.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h5.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-15.4 0h-1.1c-.3 0-.6-.2-.6-.6 0-.4
.2-.6.6-.6h1.1c.3 0 .6.2.6.6 0 .4-.2.6-.6.6zm-5.5-.1c-.2 0-.4-.1-.5-.3-.2-.3-.7-1.4-1.7-2.9-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2 1 1.5 1.6 2.6 1.7 2.9.1.3 0 .6-.2.8-.1.1-.2.1-.3.1zm-52.7-.6h-1.6c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h.8c-.1-.2-.2-.5-.3-.9-.1-.3.1-.6.4-.7.3-.1.6.1.7.4.3 1 .6 1.6.6 1.6.1.2.1.4 0 .5-.3.2-.5.3-.6.3zm-10.6 0H23.4c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h13.4c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm8.9-5.9c-.3 0-.5-.2-.6-.5 0-.4-.1-.8-.1-1.1 0-.3.2-.6.5-.6s.6.2.6.5c0 .4.1.7.1 1.1.1.2-.1.5-.5.6.1-.1.1 0 0 0zm29.2-1.8c-.2 0-.4-.1-.5-.3-.1-.3-.3-.6-.5-1-.2-.3-.1-.6.2-.8.3-.2.6-.1.8.2.2.4.4.7.5 1 .1.3 0 .6-.2.8-.2.1-.2.1-.3.1zm17.8-1.4c-.1 0-.3 0-.4-.1-2.3-2.1-4.6-3.4-6.8-3.8-.7-.1-1.4-.2-2-.2-1 0-2 .2-2.8.5-.3.1-.6 0-.7-.3-.1-.3 0-.6.3-.7 1-.4 2.1-.6 3.3-.6.7 0 1.4.1 2.2.2 2.4.5 4.9 1.8 7.3 4 .2.2.2.6 0 .8-.1.1-.2.2-.4.2zM71.8 8c-.2 0-.3-.1-.4-.2-.7-.9-1.5-1.6-2.3-2.3-.2-.2-.3-.6-.1-.8.2-.2.6-.3.8-.1.8.7 1.6 1.6 2.4 2.5.2.2.2.6-.1.8-.1.1-.2.1-.3.1zM48.9 4.2c-.2 0-.3-.1-.4-.2-.2-.2-.2-.6.
1-.8C50.4 1.7 52.8.8 55.8.3c2.1-.3 4.1-.2 6 .1.3.1.5.4.4.7-.1.3-.3.5-.7.4-1.8-.4-3.7-.4-5.6-.1-2.8.4-5 1.3-6.6 2.6-.2.2-.3.2-.4.2z" fill="#D7D7DB"/><path d="M121.6 25.3H23c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h98.6c.6 0 1.1.5 1.1 1.1 0 .6-.4 1.1-1.1 1.1zM222.4 31.5h13.3s-4.2-9.3 4.7-10.5c7.9-1.1 11 7 11 7s.9-4.7 5.6-3.8c4.6.9 8 8.3 8 8.3h11.6" fill="#F9F9FA"/><path d="M236.1 30h-13.3c-.3 0-.6-.2-.6-.6 0-.3.2-.6.6-.6h13.3v.5l.5-.2c.1.2.1.4 0 .6-.2.2-.3.3-.5.3zm36.5-.2h-3.3c-.3 0-.6-.2-.6-.6 0-.4.2-.6.6-.6h3.3c.3 0 .6.2.6.6 0 .4-.3.6-.6.6zm-20.8-3.3h-.1c-.3-.1-.5-.4-.4-.7.1-.4 1.1-4.3 5-4.3.4 0 .8 0 1.2.1 1.7.3 3.5 1.4 5.2 3.1.2.2.2.6 0 .8-.2.2-.6.2-.8 0-1.6-1.6-3.1-2.5-4.6-2.8-.4-.1-.7-.1-1-.1-3 0-3.8 2.8-3.9 3.4-.1.3-.4.5-.6.5zm-15.3-5.1c-.1 0-.3 0-.4-.1-.2-.2-.2-.6 0-.8.8-.8 1.8-1.5 3.1-1.8.3-.1.6.1.7.4.1.3-.1.6-.4.7-1.1.3-2 .8-2.6 1.5-.1.1-.3.1-.4.1zm8.3-1.6h-.2c-.3-.1-.7-.2-1-.2-.3-.1-.5-.3-.5-.6.1-.3.3-.5.6-.5l1.2.3c.3.1.5.4.4.7 0 .1-.2.3-.5.3z" fill="#D7D7DB"/><path d="M277.5
33.7h-54.9c-.6 0-1.1-.5-1.1-1.1 0-.6.5-1.1 1.1-1.1h54.9c.6 0 1.1.5 1.1 1.1 0 .6-.5 1.1-1.1 1.1z" fill="#F9F9FA"/><ellipse fill="#EDEDF0" cx="144.1" cy="206.4" rx="59.7" ry="5.2"/><path d="M187.8 21.6h.1c.7 0 1.3-.5 1.3-1.2.1-1.5 1.2-2.7 2.6-3 .7-.2 1.2-.9 1-1.6-.2-.7-.9-1.2-1.6-1-2.6.6-4.5 2.8-4.7 5.4 0 .7.6 1.4 1.3 1.4z" fill="#F9F9FA"/><ellipse fill="#EDEDF0" cx="248.8" cy="206.4" rx="25.7" ry="4.5"/><ellipse fill="#EDEDF0" cx="35.7" cy="206.4" rx="35" ry="4.5"/></g><path d="M173 63.2c-.1-.3-.5-.5-.9-.4-.9.4-1.8.7-2.7 1.1-.2.1-.3.3-.4.5h2.7c.3-.1.6-.3.9-.4.4-.1.6-.5.4-.8zM231.7 155.7c.1.1.3.2.5.2s.3-.1.5-.2c.2-.2.4-.5.7-.7h-1.8c-.1.2-.1.5.1.7zM149.2 63.7c.3-.2.3-.7.1-.9-.2-.3-.7-.3-.9-.1-.3.3-.7.6-1 .8-.3.2-.3.6-.1.9h1.1c.2-.2.5-.4.8-.7zM65.2 62.8c-.2.1-.3.1-.5.2.5 0 .9.1 1.3.2-.1-.4-.5-.5-.8-.4zM129.2 63.9c.1.1.3.2.4.2.2 0 .4-.1.5-.2.2-.3.2-.7-.1-.9-.3-.3-.7-.6-1-.8-.3-.2-.7-.2-.9.1-.2.3-.2.7.1.9.3.1.6.4 1 .7zM42.3 62.8c-.2-.3-.7-.3-.9-.1l-.3.3h1.4c-.1-.1-.1-.2-.2-.2z" fill="#F3
F3F7"/><path d="M196.2 171.5c0 .4-.3.7-.6.7-1 .1-2 .1-2.9.1h-.1c-3.9 0-7.9-.4-11.7-1.2-.4-.1-.6-.4-.5-.8.1-.4.4-.6.8-.5 3.7.8 7.6 1.2 11.4 1.2 1 0 2 0 2.9-.1.4-.1.7.2.7.6zm10.5-109.3c3.7 1 7.4 2.4 10.8 4.1.1 0 .2.1.3.1.2 0 .5-.1.6-.4.2-.3 0-.7-.3-.9-3.5-1.8-7.2-3.2-11.1-4.2-.4-.1-.7.1-.8.5 0 .3.2.7.5.8zm-11.3-3.1c-4.9-.2-9.9.2-14.7 1.2-.4.1-.6.4-.5.8.1.3.3.5.7.5h.1c4.7-1 9.6-1.4 14.4-1.2.4 0 .7-.3.7-.6-.1-.4-.3-.7-.7-.7zm-25.5 108.4c.3 0 .5-.1.6-.4.2-.3 0-.7-.3-.9-.6-.3-1.1-.5-1.7-.8h-2.9c1.3.7 2.7 1.4 4.1 2 0 0 .1.1.2.1zM223.3 68c-.3-.2-.7-.1-.9.2-.2.3-.1.7.2.9.8.5 1.6 1.1 2.4 1.6.1.1.3.1.4.1.2 0 .4-.1.5-.3.2-.3.1-.7-.2-.9-.8-.5-1.6-1-2.4-1.6zm-.6 94c-3.2 2.1-6.7 3.9-10.3 5.3-.3.1-.5.5-.4.9.1.3.4.4.6.4h.2c3.7-1.4 7.2-3.2 10.5-5.4.3-.2.4-.6.2-.9 0-.4-.5-.5-.8-.3zm-15.8 7c-.9.2-1.9.5-2.8.7-.4.1-.6.4-.5.8.1.3.3.5.7.5h.1c1-.2 1.9-.4 2.9-.7.4-.1.6-.5.5-.8-.1-.3-.5-.6-.9-.5zM192.6 54.7c16.8 0 32 6.8 43.1 17.9h3.7C227.7 60 211.1 52 192.6 52c-14.1 0-27.1 4.6-37.7 12.4h4.7c9.6-6.1 20.9-9.7
33-9.7zm0 121.8c-13.1 0-25.2-4.1-35.1-11.2H153c10.9 8.7 24.6 13.9 39.6 13.9 20.2 0 38.3-9.5 49.9-24.3H239c-11.1 13.2-27.8 21.6-46.4 21.6zm11.8 5.8c-5 .9-10.2 1.2-15.2.9-.3 0-.7.3-.7.6 0 .4.3.7.6.7 1.2.1 2.3.1 3.5.1 4 0 8.1-.4 12-1 .4-.1.6-.4.5-.8 0-.4-.3-.6-.7-.5zm-25.4-.4c-1.2-.3-2.5-.5-3.7-.9-.4-.1-.7.1-.8.5-.1.4.1.7.5.8 1.3.3 2.5.6 3.8.9h.1c.3 0 .6-.2.7-.5 0-.3-.2-.7-.6-.8zm37.7-3c-.4.2-.8.3-1.2.4-.3.1-.5.5-.4.9.1.3.4.4.6.4h.2c.4-.1.8-.3 1.2-.5.3-.1.5-.5.4-.9-.1-.3-.5-.5-.8-.3zm19.4-115c.1.1.3.2.4.2.2 0 .4-.1.5-.2.2-.3.2-.7-.1-.9-.3-.3-.7-.6-1-.8-.3-.2-.7-.2-.9.1-.2.3-.2.7.1.9.4.1.7.4 1 .7zm-65.7 115.7c-.4-.1-.8-.3-1.2-.4-.3-.1-.7 0-.9.4-.1.3 0 .7.4.9.4.2.8.3 1.2.4h.2c.3 0 .5-.2.6-.5.3-.3.1-.7-.3-.8zm54.4-4.4c-1.1.6-2.3 1.2-3.4 1.7-.3.2-.5.6-.3.9.1.2.4.4.6.4.1 0 .2 0 .3-.1 1.2-.6 2.3-1.1 3.5-1.8.3-.2.4-.6.3-.9-.3-.3-.7-.4-1-.2zm19.6-16.1c-3.3 3.9-7 7.4-11.1 10.5-.3.2-.4.6-.1.9.1.2.3.3.5.3.1 0 .3 0 .4-.1 4.1-3.1 7.9-6.7 11.3-10.7.2-.3.2-.7-.1-.9-.2-.3-.6-.3-.9 0zm.9-88c-.2-.3-.7-.
3-.9-.1-.3.2-.3.7-.1.9.2.2.3.4.5.6h1.7c-.4-.4-.8-.9-1.2-1.4zm-87-13.9c.1 0 .2 0 .3-.1 4.4-2.6 9.1-4.6 14-6.1.4-.1.6-.5.4-.8-.1-.4-.5-.6-.8-.4-5 1.5-9.8 3.6-14.3 6.3-.3.2-.4.6-.2.9.1.1.3.2.6.2zm45.8-8.2c5 .9 10 2.3 14.7 4.3.1 0 .2.1.3.1.3 0 .5-.2.6-.4.1-.3 0-.7-.4-.9-4.8-2-9.8-3.5-15-4.4-.4-.1-.7.2-.8.5 0 .3.3.7.6.8zm23.8 8.9c1.1.7 2.2 1.4 3.2 2.1.1.1.3.1.4.1.2 0 .4-.1.6-.3.2-.3.1-.7-.2-.9-1.1-.7-2.2-1.5-3.3-2.1-.3-.2-.7-.1-.9.2-.2.3-.1.7.2.9zM191.4 48h1.3c.4 0 .6-.3.6-.7 0-.4-.4-.7-.7-.7h-1.2c-.4 0-.7.3-.7.7 0 .4.3.7.7.7zm-45.8 118.2c3.8 3.5 8 6.7 12.5 9.3.1.1.2.1.3.1.2 0 .5-.1.6-.3.2-.3.1-.7-.2-.9-4.3-2.5-8.4-5.5-12.1-8.9h-1.2c-.1.1-.1.5.1.7zm36.8-117.5c.1 0 .1 0 0 0 1.3-.2 2.6-.3 3.9-.5.4 0 .6-.4.6-.7 0-.4-.4-.6-.7-.6-1.3.1-2.6.3-3.9.5-.4.1-.6.4-.6.8.1.3.4.5.7.5zM97.3 171h.1c1-.2 1.9-.4 2.9-.7.4-.1.6-.5.5-.8-.1-.4-.5-.6-.8-.5-.9.2-1.9.5-2.8.7-.4.1-.6.4-.5.8 0 .3.3.5.6.5zm2-109.6c-.1.4.1.7.5.8 2.3.6 4.5 1.4 6.7 2.3h3.3c-3.1-1.5-6.4-2.7-9.7-3.6-.4-.1-.7.1-.8.5zm-25.6-1.1c-.4.1-.6.4-
.5.8.1.3.3.5.7.5h.1c4.7-1 9.6-1.4 14.4-1.2.4 0 .7-.3.7-.6 0-.4-.3-.7-.6-.7-5-.3-10 .1-14.8 1.2zm-.3 110c-.1.4.2.7.5.8 3.8.8 7.8 1.2 11.7 1.2h.1c1 0 2 0 2.9-.1.4 0 .7-.3.6-.7 0-.4-.3-.7-.7-.6-1 0-1.9.1-2.9.1-3.9 0-7.7-.4-11.4-1.2-.4-.2-.7.1-.8.5zm31.7-2.2c.1.3.4.4.6.4h.2c2.3-.9 4.6-2 6.7-3.1h-2.9c-1.4.7-2.8 1.3-4.3 1.9-.3.1-.5.5-.3.8zm-42.2-.6c.3 0 .5-.1.6-.4.2-.3 0-.7-.3-.9-1.8-.8-3.6-1.7-5.3-2.7h-2.6c2.3 1.5 4.8 2.8 7.3 3.9.1 0 .2.1.3.1zM85.6 54.7c12.1 0 23.4 3.6 32.9 9.7h4.7C112.7 56.6 99.7 52 85.6 52 72.4 52 60.1 56 50 62.9h5.1c9-5.2 19.4-8.2 30.5-8.2zm0 121.8c-14.2 0-27.2-4.9-37.6-13.1h-4.2c11.2 9.8 25.8 15.7 41.8 15.7 15 0 28.7-5.2 39.6-13.9h-4.5c-9.9 7.2-22 11.3-35.1 11.3zm32.2-1.3c-1.1.6-2.3 1.2-3.4 1.7-.3.2-.5.6-.3.9.1.2.4.4.6.4.1 0 .2 0 .3-.1 1.2-.6 2.3-1.1 3.5-1.8.3-.2.4-.6.3-.9-.3-.3-.7-.4-1-.2zm3.1-117.3c1.1.7 2.2 1.4 3.2 2.1.1.1.3.1.4.1.2 0 .4-.1.6-.3.2-.3.1-.7-.2-.9-1.1-.7-2.2-1.5-3.3-2.1-.3-.2-.7-.1-.9.2-.2.3-.1.7.2.9zM97.4 182.3c-5 .9-10.2 1.2-15.2.9-.4 0-.7.3-.7.6 0
.4.3.7.6.7 1.2.1 2.3.1 3.5.1 4 0 8.1-.4 12-1 .4-.1.6-.4.5-.8 0-.4-.3-.6-.7-.5zm-34-2.7c-.4-.1-.8-.3-1.2-.4-.3-.1-.7 0-.9.4-.1.3 0 .7.4.9.4.2.8.3 1.2.4h.2c.3 0 .5-.2.6-.5.3-.3.1-.7-.3-.8zm8.7 2.3c-1.2-.3-2.5-.5-3.7-.9-.4-.1-.7.1-.8.5-.1.4.1.7.5.8 1.3.3 2.5.6 3.8.9h.1c.3 0 .6-.2.7-.5 0-.3-.3-.7-.6-.8zm54.3-12.3c-.3.2-.4.6-.1.9.1.2.3.3.5.3.1 0 .3 0 .4-.1 2.2-1.7 4.3-3.4 6.2-5.3h-2c-1.6 1.5-3.3 2.9-5 4.2zm-16.7 9.3c-.4.2-.8.3-1.2.4-.3.1-.5.5-.4.9.1.3.4.4.6.4h.2c.4-.1.8-.3 1.2-.5.3-.1.5-.5.4-.9-.1-.3-.5-.5-.8-.3zM97.1 49c5 .9 10 2.3 14.7 4.3.1 0 .2.1.3.1.3 0 .5-.2.6-.4.1-.3 0-.7-.4-.9-4.8-2-9.8-3.5-15-4.4-.4-.1-.7.2-.8.5 0 .3.3.7.6.8zm-12.7-1h1.3c.4 0 .6-.3.6-.7 0-.4-.4-.7-.7-.7h-1.2c-.4 0-.7.3-.7.7.1.4.4.7.7.7zm-33.1 9.2c.1 0 .2 0 .3-.1 4.4-2.6 9.1-4.6 14-6.1.4-.1.6-.5.4-.8-.1-.4-.5-.6-.8-.4-5 1.5-9.8 3.6-14.3 6.3-.3.2-.4.6-.2.9.1.1.3.2.6.2zm.6 117.1c-4.4-2.5-8.6-5.6-12.3-9.1-.3-.3-.7-.2-1 0-.3.3-.2.7 0 1 3.8 3.5 8 6.7 12.5 9.3.1.1.2.1.3.1.2 0 .5-.1.6-.3.3-.4.2-.8-.1-1zM75.4 48.7c.1 0
.1 0 0 0 1.3-.2 2.6-.3 3.9-.5.4 0 .6-.4.6-.7 0-.4-.4-.6-.7-.6-1.3.1-2.6.3-3.9.5-.4.1-.6.4-.6.8.1.3.4.5.7.5z" fill="#D7D7DB"/><path d="M261.6 34.4h-30.1c-1.3 0-2.3 1-2.3 2.3v56.4c0 1.3 1 2.3 2.3 2.3h30.1c1.3 0 2.3-1 2.3-2.3V36.7c0-1.2-1-2.3-2.3-2.3zm-15.5 4.9c4.2 0 7.7 3.5 7.7 7.7s-3.5 7.7-7.7 7.7-7.7-3.5-7.7-7.7 3.5-7.7 7.7-7.7zm-7.5 23.1c.1-.4.5-.8 1-.9l3.7-.7 2.1-4.1.8-.1c.5 0 .9.3 1.1.7l1.7 3.5 4.4.8.3.7c.1.4 0 .9-.3 1.3l-2.6 2.8.7 4.7-.6.5c-.4.3-.9.3-1.3.1l-3.3-1.7-4 2.1-.7-.4c-.4-.3-.6-.7-.5-1.2l.6-3.9-3.1-3.4v-.8zm8.2 17.3c0-.7.5-1.2 1.2-1.2h1.3c-.8-.9-1.9-1.4-3.2-1.4-2 0-3.8 1.4-4.3 3.3-.1.5-.6.9-1.1.9h-.3c-.6-.2-1-.8-.9-1.4.8-3 3.4-5.1 6.6-5.1 1.6 0 3.2.6 4.4 1.7V76c0-.7.5-1.2 1.2-1.2s1.2.5 1.2 1.2v3.7c0 .7-.5 1.2-1.2 1.2H248c-.7 0-1.2-.5-1.2-1.2zm-.7 8.7c-1.6 0-3.2-.6-4.4-1.7v.5c0 .7-.5 1.2-1.2 1.2s-1.2-.5-1.2-1.2v-3.7c0-.7.5-1.2 1.2-1.2h3.7c.7 0 1.2.5 1.2 1.2s-.5 1.2-1.2 1.2h-1.3c.8.9 1.9 1.4 3.2 1.4 2 0 3.8-1.4 4.3-3.3.2-.6.8-1 1.4-.9.6.2 1 .8.9 1.4-.8 3-3.5 5.1-6.6 5.1z"
fill="url(#a)" transform="translate(1 46)"/><path d="M246.1 52.4c2.9 0 5.3-2.4 5.3-5.3s-2.4-5.3-5.3-5.3-5.3 2.4-5.3 5.3 2.4 5.3 5.3 5.3zm-1.1-8.6c0-.4.3-.7.7-.7.4 0 .7.3.7.7v3.1h3.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-3.7c-.4 0-.7-.3-.7-.7v-3.8h-.1z" fill="url(#b)" transform="translate(1 46)"/><path fill="url(#c)" d="M243.6 68.7l2.5-1.3 2.6 1.3-.5-3 2.1-2.2-2.9-.5-1.3-2.6-1.3 2.6-2.9.5 2.1 2.2" transform="translate(1 46)"/><path d="M240.9 70.5c-.1.5.1.9.5 1.2l.7.4 4-2.1 3.3 1.7c.4.2.9.2 1.3-.1l.6-.5-.7-4.7 2.6-2.8c.3-.3.4-.8.3-1.3l-.3-.7-4.4-.8-1.7-3.5c-.2-.4-.7-.7-1.1-.7l-.8.1-2.1 4.1-3.7.7c-.5.1-.8.4-1 .9l-.2.8 3.1 3.4-.4 3.9zm3.9-7.5l1.3-2.6 1.3 2.6 2.9.5-2.1 2.2.4 3-2.5-1.3-2.5 1.3.4-3-2.1-2.2 2.9-.5z" fill="url(#d)" transform="translate(1 46)"/><path fill="url(#e)" d="M35 60.4l-1.4 2.8-3.1.6 2.2 2.4-.4 3.2 2.7-1.5 2.7 1.5-.4-3.2 2.2-2.4-3.1-.6" transform="translate(1 46)"/><path d="M10.2 103.3h50.7c1.4 0 2.5-1.1 2.5-2.5V27.6c0-1.4-1.1-2.5-2.5-2.5H10.2c-1.4 0-2.5 1.1-2.5 2.5v73.2c.1
1.4 1.2 2.5 2.5 2.5zm32.1-14.5c-.8 3.3-3.8 5.7-7.3 5.7-1.8 0-3.5-.7-4.8-1.8v.4c0 .7-.6 1.3-1.3 1.3-.7 0-1.3-.6-1.3-1.3V89c0-.7.6-1.3 1.3-1.3H33c.7 0 1.3.6 1.3 1.3 0 .7-.6 1.3-1.3 1.3h-1.3c.9.9 2.1 1.4 3.4 1.4 2.2 0 4.1-1.5 4.6-3.6.2-.7.9-1.2 1.6-1 .7.2 1.1 1 1 1.7zm.2-3.9c0 .7-.6 1.3-1.3 1.3h-4.1c-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.3-1.3h1.3c-.9-.9-2.1-1.4-3.4-1.4-2.2 0-4.1 1.5-4.6 3.6-.2.6-.7 1-1.3 1h-.3c-.7-.2-1.2-.9-1-1.6.8-3.3 3.8-5.7 7.3-5.7 1.8 0 3.5.7 4.8 1.8v-.4c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v4zm.5-21L40.1 67l.7 5.1-.7.6c-.4.3-1 .4-1.5.1L35 71l-4.4 2.3-.8-.5c-.4-.3-.7-.8-.6-1.4l.6-4.3-3.4-3.7.2-.9c.2-.5.6-.9 1.1-1l4-.7 2.3-4.6.9-.1c.6 0 1 .3 1.3.8l1.9 3.8 4.8.9.3.8c.3.6.2 1.2-.2 1.5zm-8-30.2c4.7 0 8.5 3.8 8.5 8.5s-3.8 8.5-8.5 8.5-8.5-3.8-8.5-8.5 3.8-8.5 8.5-8.5z" fill="url(#f)" transform="translate(1 46)"/><path d="M29.2 42.2c0 3.2 2.6 5.8 5.8 5.8 3.2 0 5.8-2.6 5.8-5.8 0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.8 2.6-5.8 5.8zm4.6-3.6c0-.4.3-.7.7-.7.4 0 .7.3.7.7V42h3.4c.4 0 .7.3.7.7 0
.4-.3.7-.7.7h-4.1c-.4 0-.7-.3-.7-.7v-4.1z" fill="url(#g)" transform="translate(1 46)"/><path d="M43 61.7l-4.8-.9-1.9-3.8c-.2-.5-.7-.8-1.3-.8l-.9.1-2.3 4.6-4 .7c-.5.1-1 .5-1.1 1l-.2.9 3.4 3.7-.6 4.3c-.1.5.1 1.1.6 1.4l.8.5L35 71l3.6 1.9c.5.3 1.1.2 1.5-.1l.7-.6-.7-5.1L43 64c.4-.4.5-.9.3-1.4l-.3-.9zm-5.7 4.5l.4 3.2L35 68l-2.7 1.4.4-3.2-2.2-2.4 3.1-.6 1.4-2.8 1.4 2.8 3.1.6-2.2 2.4z" fill="url(#h)" transform="translate(1 46)"/><path d="M119.4 59.6c3.2 0 5.8-2.6 5.8-5.8 0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.8 2.6-5.8 5.8-.1 3.1 2.6 5.8 5.8 5.8zm-1.2-9.5c0-.4.3-.7.7-.7.4 0 .7.3.7.7v3.4h3.4c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-4.1c-.4 0-.7-.3-.7-.7v-4.1z" fill="url(#i)" transform="translate(1 46)"/><path fill="url(#j)" d="M143.4 52.3l-1.3-2.8-1.4 2.8-3.2.6 2.3 2.4-.5 3.2 2.8-1.4 2.7 1.4-.5-3.2 2.3-2.4" transform="translate(1 46)"/><path d="M102.8 81.1h77.6c1.6 0 2.8-1.3 2.8-2.8V32c0-1.6-1.3-2.8-2.8-2.8h-77.6c-1.6 0-2.8 1.3-2.8 2.8v46.3c-.1 1.6 1.2 2.8 2.8 2.8zm44.4-24.9l.7 5.1-.7.6c-.4.3-1 .4-1.5.1l-3.6-1
.9-4.4 2.3-.8-.5c-.4-.3-.7-.8-.6-1.4l.6-4.3-3.4-3.7.2-.9c.2-.5.6-.9 1.1-1l4-.7 2.3-4.6.9-.1c.5 0 1 .3 1.3.8l1.9 3.8 4.8.9.3.8c.2.5 0 1.1-.3 1.4l-2.8 3.3zm10.3-4.3c.8-3.3 3.8-5.7 7.3-5.7 1.8 0 3.5.7 4.8 1.8v-.4c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v4.1c0 .7-.6 1.3-1.3 1.3h-4.1c-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.3-1.3h1.3c-.9-.9-2.1-1.4-3.4-1.4-2.2 0-4.1 1.5-4.6 3.6-.2.6-.7 1-1.3 1h-.3c-.8-.2-1.2-1-1-1.7zm-.3 3.9c0-.7.6-1.3 1.3-1.3h4.1c.7 0 1.3.6 1.3 1.3 0 .7-.6 1.3-1.3 1.3h-1.3c.9.9 2.1 1.4 3.4 1.4 2.2 0 4.1-1.5 4.6-3.6.2-.7.9-1.2 1.6-1 .7.2 1.2.9 1 1.6-.8 3.3-3.8 5.7-7.3 5.7-1.8 0-3.5-.7-4.8-1.8v.4c0 .7-.6 1.3-1.3 1.3-.7 0-1.3-.6-1.3-1.3v-4zm-37.8-10.6c4.7 0 8.5 3.8 8.5 8.5s-3.8 8.5-8.5 8.5-8.5-3.8-8.5-8.5c-.1-4.7 3.8-8.5 8.5-8.5z" fill="url(#k)" transform="translate(1 46)"/><path d="M264.7 75.3h-34.4c-2.6 0-4.6 2.1-4.6 4.6v67.7c0 2.6 2.1 4.6 4.6 4.6h34.4c2.6 0 4.6-2.1 4.6-4.6V79.9c.1-2.5-2-4.6-4.6-4.6zm-11.8 71.1c0 1.2-.9 2.1-2.1 2.1h-6.7c-1.2 0-2.1-.9-2.1-2.1v-.1c0-1.2.9-2.1 2.1-2.1
h6.7c1.2.1 2.1 1 2.1 2.2zm12-7.3c0 1.3-1 2.3-2.3 2.3h-30.1c-1.3 0-2.3-1-2.3-2.3V82.7c0-1.3 1-2.3 2.3-2.3h30.1c1.3 0 2.3 1 2.3 2.3v56.4zM9 160.8h55.2c2.7 0 4.9-2.2 4.9-4.9V70.6c0-2.7-2.2-4.9-4.9-4.9H9c-2.7 0-4.9 2.2-4.9 4.9v85.3c-.1 2.7 2.1 4.9 4.9 4.9zm19.4-5.3v-1.7c0-1 .8-1.8 1.8-1.8H43c1 0 1.8.8 1.8 1.8v1.7c0 1-.8 1.8-1.8 1.8H30.2c-1 0-1.8-.9-1.8-1.8zM8.8 73.6c0-1.4 1.1-2.5 2.5-2.5H62c1.4 0 2.5 1.1 2.5 2.5v73.2c0 1.4-1.1 2.5-2.5 2.5H11.2c-1.4 0-2.5-1.1-2.5-2.5V73.6h.1zm92.4 57.9h82.7c2.6 0 4.8-2.1 4.8-4.8V71.9c0-2.6-2.1-4.8-4.8-4.8h-82.7c-2.6 0-4.8 2.1-4.8 4.8v54.8c0 2.7 2.2 4.8 4.8 4.8zM141 71c0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6 0 .9-.7 1.6-1.6 1.6-.9 0-1.6-.7-1.6-1.6zm-40.1 7c0-1.6 1.3-2.8 2.8-2.8h77.6c1.6 0 2.8 1.3 2.8 2.8v46.3c0 1.6-1.3 2.8-2.8 2.8h-77.6c-1.6 0-2.8-1.3-2.8-2.8V78zm94.8 84.7c1.6 0 3-1.2 3-2.6v-1.4c0-.3-.1-.7-.2-1l-9.9-21.7c-.5-1-1.5-1.7-2.8-1.7H98.7c-1.2 0-2.4.7-2.8 1.7l-9.3 21.7c-.1.3-.2.6-.2.9v1.4c0 1.5 1.3 2.6 3 2.6h106.3v.1zm-11.4-20.2l.5 1.5c.1.4-.5.9-1.2
.9h-5c-.4 0-.8-.2-.8-.4-.1-.6-.2-.9-.5-1.5-.2-.4.4-.9 1.1-.9h5c.4 0 .8.1.9.4zm-7.4-5.3h4.7c.4 0 .7.2.8.4.1.6.2.9.4 1.5.1.4-.4.8-1 .8h-4.6c-.4 0-.8-.2-.9-.4l-.5-1.5c-.2-.4.4-.8 1.1-.8zm-4.3 5.3c.1.6.2.9.3 1.5.1.4-.6.9-1.3.9h-5.1c-.5 0-.8-.2-.9-.5-.2-.6-.2-.9-.4-1.5-.1-.4.5-.9 1.3-.9h5.3c.4.1.8.3.8.5zm-7.1-5.3h5c.4 0 .8.2.8.4.1.6.2.9.3 1.5.1.4-.5.8-1.2.8h-4.9c-.4 0-.8-.2-.8-.4-.2-.6-.2-.9-.4-1.5-.1-.4.5-.8 1.2-.8zm-5.8 5.5c.1.6.1.9.2 1.6.1.4-.5.8-1.2.8h-5.3c-.5 0-.9-.2-1-.5-.1-.6-.2-.9-.3-1.6-.1-.4.5-.8 1.2-.8h5.5c.4-.1.8.1.9.5zm-6.8-5.5h5.2c.5 0 .9.2.9.5.1.6.1.9.2 1.5.1.4-.5.8-1.1.8H153c-.5 0-.9-.2-.9-.5-.1-.6-.2-.9-.3-1.5-.1-.4.5-.8 1.1-.8zm-13.4.6c.1-.3.5-.5 1.1-.5h4.7c.5 0 1 .2 1 .5.1.6.1.9.2 1.5.1.4-.4.7-1.1.7h-5.3c-.6 0-1.1-.3-1-.7.2-.6.2-.9.4-1.5zm-.4 5c.1-.3.5-.6 1.1-.6h5c.6 0 1 .2 1.1.6.1.6.2.9.3 1.6.1.4-.5.8-1.1.8H140c-.7 0-1.2-.4-1.1-.8 0-.6.1-1 .2-1.6zm-11.4-5.5h5.2c.7 0 1.2.4 1.1.8l-.5 1.5c-.1.3-.5.5-1 .5h-5.1c-.6 0-1.2-.4-1.1-.8.1-.6.2-.9.3-1.5.2-.3.6-.5 1.1-.5zm-2 5.5c.
1-.3.5-.5 1-.5h5.5c.7 0 1.3.4 1.1.8-.2.6-.3 1-.4 1.6-.1.3-.5.5-1 .5h-5.3c-.7 0-1.3-.4-1.2-.8.1-.6.2-.9.3-1.6zm-17.7.4c-.3.6-.4 1-.5 1.6-.1.3-.4.5-.8.5h-5c-.7 0-1.3-.4-1.2-.9.2-.6.3-1 .5-1.6.1-.3.5-.5.9-.5h5c.7 0 1.2.5 1.1.9zm1.2-3.5c-.1.3-.5.4-.9.4h-4.6c-.6 0-1.1-.4-.9-.8l.5-1.5c.1-.3.4-.4.8-.4h4.7c.7 0 1.2.4 1.1.8-.3.6-.5.9-.7 1.5zm10.5 5.1c-.1.3-.4.5-.9.5h-5.1c-.7 0-1.3-.4-1.2-.9.1-.6.2-1 .4-1.6.1-.3.4-.5.9-.5h5.3c.7 0 1.3.4 1.2.9-.3.6-.4 1-.6 1.6zm1.1-5.1c-.1.3-.4.4-.9.4H115c-.7 0-1.2-.4-1.1-.8.2-.6.3-.9.4-1.5.1-.3.4-.4.9-.4h5c.7 0 1.2.4 1.1.8l-.5 1.5zm3.1 14.6c.4-2.3.6-3.5 1.1-5.9 0-.3.4-.6.9-.6 13.6-.1 20.5-.2 34.1-.3.5 0 .9.2.9.6.3 2.4.5 3.6.6 6.1 0 .4-.6.8-1.2.8h-35.4c-.6.1-1.1-.3-1-.7z" fill="#FFF"/><path d="M263.7 26.6h-.2v-1.3c0-.6-.5-1.2-1.2-1.2h-6.5c-.6 0-1.2.5-1.2 1.2v1.3h-25.4c-4 0-7.3 3.3-7.3 7.3v67.7c0 4 3.3 7.3 7.3 7.3h34.4c4 0 7.3-3.3 7.3-7.3V33.9c.1-4-3.1-7.3-7.2-7.3zm4.7 75c0 2.6-2.1 4.6-4.6 4.6h-34.4c-2.6 0-4.6-2.1-4.6-4.6V33.9c0-2.6 2.1-4.6 4.6-4.6h34.4c2.6 0 4
.6 2.1 4.6 4.6v67.7zm-16.5-1.2c0 1.2-.9 2.2-2.1 2.2h-6.7c-1.2 0-2.1-.9-2.1-2.1v-.1c0-1.2.9-2.1 2.1-2.1h6.7c1.2 0 2.1.9 2.1 2.1zM54.3 117.5h8.8c4.2 0 7.6-3.4 7.6-7.6V24.6c0-3.6-2.4-6.5-5.7-7.4-.4-.1-.9-.2-1.3-.2H8C3.8 17 .4 20.4.4 24.6v85.3c0 4.2 3.4 7.6 7.6 7.6h46.3zM3 24.6c0-2.7 2.2-4.9 4.9-4.9h55.2c2.7 0 4.9 2.2 4.9 4.9v85.3c0 2.7-2.2 4.9-4.9 4.9H8c-2.7 0-4.9-2.2-4.9-4.9V24.6H3zm26.2 86.7c-1 0-1.8-.8-1.8-1.8v-1.7c0-1 .8-1.8 1.8-1.8H42c1 0 1.8.8 1.8 1.8v1.7c0 1-.8 1.8-1.8 1.8H29.2zm135.3 8.1H194.6c3.1 0 5.7-2.4 5.7-5.3v-1.4c0-.7-.2-1.4-.5-2.1l-9.9-21.7c-.5-1-1.2-1.8-2.2-2.4 1.6-1.4 2.6-3.4 2.6-5.6V26.1c0-4.1-3.4-7.5-7.5-7.5h-82.5c-4.1 0-7.5 3.4-7.5 7.5v54.8c0 2.1.9 4.1 2.3 5.4-1.2.6-2.1 1.5-2.6 2.7l-9.3 21.7c-.3.6-.4 1.3-.4 2v1.4c0 2.9 2.5 5.3 5.7 5.3h76zm-76-2.7c-1.6 0-3-1.2-3-2.6v-1.4c0-.3.1-.6.2-.9L95 90.1c.4-1 1.5-1.7 2.8-1.7h87.1c1.2 0 2.3.7 2.8 1.7l9.9 21.7c.1.3.2.6.2 1v1.4c0 1.5-1.3 2.6-3 2.6H88.5v-.1zm6.9-35.9V26c0-2.6 2.1-4.8 4.8-4.8h82.7c2.6 0 4.8 2.1 4.8 4.8v54.8c0 2.6-2
.1 4.8-4.8 4.8h-82.7c-2.6-.1-4.8-2.2-4.8-4.8zm27.5 27.5c.4-2.3.6-3.5 1.1-5.9 0-.3.4-.6.9-.6 13.6-.1 20.5-.2 34.1-.3.5 0 .9.2.9.6.3 2.4.5 3.6.6 6.1 0 .4-.6.8-1.2.8h-35.4c-.6.1-1.1-.3-1-.7zm-3.8-11.1c-.2.6-.3 1-.5 1.6-.1.3-.4.5-.9.5h-5.1c-.7 0-1.3-.4-1.2-.9.1-.6.2-1 .4-1.6.1-.3.4-.5.9-.5h5.3c.7 0 1.3.5 1.1.9zm5.3 1.2c.1-.6.2-1 .3-1.6.1-.3.5-.5 1-.5h5.5c.7 0 1.3.4 1.1.8-.2.6-.3 1-.4 1.6-.1.3-.5.5-1 .5h-5.3c-.7 0-1.2-.4-1.2-.8zm33.3-2.3c.5 0 .9.2 1 .5.1.6.1.9.2 1.6.1.4-.5.8-1.2.8h-5.3c-.5 0-.9-.2-1-.5-.1-.6-.2-.9-.3-1.6-.1-.4.5-.8 1.2-.8h5.4zm-19.9 2.3c.1-.6.2-.9.3-1.6.1-.3.5-.6 1.1-.6h5c.6 0 1 .2 1.1.6.1.6.2.9.3 1.6.1.4-.5.8-1.1.8H139c-.8-.1-1.3-.4-1.2-.8zm27.7-2.3h5.3c.5 0 .8.2.9.5.1.6.2.9.3 1.5.1.4-.6.9-1.3.9h-5.1c-.5 0-.8-.2-.9-.5-.2-.6-.2-.9-.4-1.5-.2-.5.5-.9 1.2-.9zm-45.1-3.9l-.5 1.5c-.1.3-.4.4-.9.4h-4.9c-.7 0-1.2-.4-1.1-.8.2-.6.3-.9.4-1.5.1-.3.4-.4.9-.4h5c.7 0 1.2.4 1.1.8zm6.3-.9h5.2c.7 0 1.2.4 1.1.8l-.5 1.5c-.1.3-.5.5-1 .5h-5.1c-.6 0-1.2-.4-1.1-.8.1-.6.2-.9.3-1.5.2-.3.6-.5 1.1-.
5zm24.4 2.2c-.1-.6-.2-.9-.3-1.5-.1-.4.5-.8 1.1-.8h5.2c.5 0 .9.2.9.5.1.6.1.9.2 1.5.1.4-.5.8-1.1.8H152c-.4 0-.8-.2-.9-.5zm-13-.2c.1-.6.2-.9.4-1.5.1-.3.5-.5 1.1-.5h4.7c.5 0 1 .2 1 .5.1.6.1.9.2 1.5.1.4-.4.7-1.1.7h-5.3c-.6 0-1.1-.3-1-.7zm25.6.2c-.2-.6-.2-.9-.4-1.5-.1-.4.5-.8 1.2-.8h5c.4 0 .8.2.8.4.1.6.2.9.3 1.5.1.4-.5.8-1.2.8h-4.9c-.4 0-.7-.1-.8-.4zM107 97.2c-.3.6-.4 1-.5 1.6-.1.3-.4.5-.8.5h-5c-.7 0-1.3-.4-1.2-.9.2-.6.3-1 .5-1.6.1-.3.5-.5.9-.5h5c.7 0 1.2.5 1.1.9zm1.8-5c-.2.6-.3.9-.6 1.5-.1.3-.5.4-.9.4h-4.6c-.6 0-1.1-.4-.9-.8l.5-1.5c.1-.3.4-.4.8-.4h4.7c.6 0 1.1.4 1 .8zm68.5 3.9h5c.4 0 .8.2.9.5l.5 1.5c.1.4-.5.9-1.2.9h-5c-.4 0-.8-.2-.8-.4-.1-.6-.2-.9-.5-1.5-.1-.6.4-1 1.1-1zm-2.1-2.6l-.5-1.5c-.1-.4.5-.8 1.2-.8h4.7c.4 0 .7.2.8.4.1.6.2.9.4 1.5.1.4-.4.8-1 .8h-4.6c-.5 0-.9-.2-1-.4zm-33.6-66.9c-.9 0-1.6-.7-1.6-1.6 0-.9.7-1.6 1.6-1.6.9 0 1.6.7 1.6 1.6-.1.9-.8 1.6-1.6 1.6z" fill="url(#l)" transform="translate(1 46)"/><path d="M150.4 51.6l-.3-.8-4.8-.9-1.9-3.8c-.2-.5-.7-.8-1.3-.8l-.9.1-2.3 4.6-4 .7c
-.5.1-1 .5-1.1 1l-.2.9 3.4 3.7-.6 4.3c-.1.5.2 1.1.6 1.4l.8.5 4.4-2.3 3.6 1.9c.5.3 1.1.2 1.5-.1l.7-.6-.7-5.1 2.9-3.1c.3-.5.4-1.1.2-1.6zm-6.1 3.7l.4 3.2-2.7-1.4-2.7 1.4.4-3.2-2.2-2.4 3.1-.6 1.4-2.8 1.4 2.8 3.1.6-2.2 2.4z" fill="url(#m)" transform="translate(1 46)"/><path d="M238.4 47c0 4.2 3.5 7.7 7.7 7.7s7.7-3.5 7.7-7.7-3.5-7.7-7.7-7.7-7.7 3.5-7.7 7.7zm7.7-5.3c2.9 0 5.3 2.4 5.3 5.3s-2.4 5.3-5.3 5.3-5.3-2.4-5.3-5.3 2.4-5.3 5.3-5.3zm-1.1 5.8v-3.7c0-.4.3-.7.7-.7.4 0 .7.3.7.7v3.1h3.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-3.7c-.5-.1-.8-.4-.8-.8zm3 33.4c-.7 0-1.2-.5-1.2-1.2s.5-1.2 1.2-1.2h1.3c-.8-.9-1.9-1.4-3.2-1.4-2 0-3.8 1.4-4.3 3.3-.1.5-.6.9-1.1.9h-.3c-.6-.2-1-.8-.9-1.4.8-3 3.4-5.1 6.6-5.1 1.6 0 3.2.6 4.4 1.7V76c0-.7.5-1.2 1.2-1.2s1.2.5 1.2 1.2v3.7c0 .7-.5 1.2-1.2 1.2H248zm-1.9 7.5c-1.6 0-3.2-.6-4.4-1.7v.5c0 .7-.5 1.2-1.2 1.2s-1.2-.5-1.2-1.2v-3.7c0-.7.5-1.2 1.2-1.2h3.7c.7 0 1.2.5 1.2 1.2s-.5 1.2-1.2 1.2h-1.3c.8.9 1.9 1.4 3.2 1.4 2 0 3.8-1.4 4.3-3.3.2-.6.8-1 1.4-.9.6.2 1 .8.9 1.4-.8 3-3.5 5.1-6.
6 5.1zM35 50.7c4.7 0 8.5-3.8 8.5-8.5s-3.8-8.5-8.5-8.5-8.5 3.8-8.5 8.5 3.8 8.5 8.5 8.5zm0-14.3c3.2 0 5.8 2.6 5.8 5.8 0 3.2-2.6 5.8-5.8 5.8-3.2 0-5.8-2.6-5.8-5.8 0-3.2 2.6-5.8 5.8-5.8zm-1.2 6.3v-4.1c0-.4.3-.7.7-.7.4 0 .7.3.7.7V42h3.4c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-4.1c-.4 0-.7-.3-.7-.7zm8.7 38.1v4.1c0 .7-.6 1.3-1.3 1.3h-4.1c-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.3-1.3h1.3c-.9-.9-2.1-1.4-3.4-1.4-2.2 0-4.1 1.5-4.6 3.6-.2.6-.7 1-1.3 1h-.3c-.7-.2-1.2-.9-1-1.6.8-3.3 3.8-5.7 7.3-5.7 1.8 0 3.5.7 4.8 1.8v-.4c0-.7.6-1.3 1.3-1.3.7-.1 1.3.5 1.3 1.2zm-.2 8c-.8 3.3-3.8 5.7-7.3 5.7-1.8 0-3.5-.7-4.8-1.8v.4c0 .7-.6 1.3-1.3 1.3-.7 0-1.3-.6-1.3-1.3V89c0-.7.6-1.3 1.3-1.3H33c.7 0 1.3.6 1.3 1.3 0 .7-.6 1.3-1.3 1.3h-1.3c.9.9 2.1 1.4 3.4 1.4 2.2 0 4.1-1.5 4.6-3.6.2-.7.9-1.2 1.6-1 .7.2 1.1 1 1 1.7zm77.1-26.5c4.7 0 8.5-3.8 8.5-8.5s-3.8-8.5-8.5-8.5-8.5 3.8-8.5 8.5c-.1 4.6 3.8 8.5 8.5 8.5zm0-14.4c3.2 0 5.8 2.6 5.8 5.8 0 3.2-2.6 5.8-5.8 5.8-3.2 0-5.8-2.6-5.8-5.8-.1-3.2 2.6-5.8 5.8-5.8zm-1.2 6.3v-4.1c0-.4.3-.7.7-.7.4 0
.7.3.7.7v3.4h3.4c.4 0 .7.3.7.7 0 .4-.3.7-.7.7h-4.1c-.4 0-.7-.3-.7-.7zm39 5.7v-4.1c0-.7.6-1.3 1.3-1.3h4.1c.7 0 1.3.6 1.3 1.3 0 .7-.6 1.3-1.3 1.3h-1.3c.9.9 2.1 1.4 3.4 1.4 2.2 0 4.1-1.5 4.6-3.6.2-.7.9-1.2 1.6-1 .7.2 1.2.9 1 1.6-.8 3.3-3.8 5.7-7.3 5.7-1.8 0-3.5-.7-4.8-1.8v.4c0 .7-.6 1.3-1.3 1.3-.7.1-1.3-.5-1.3-1.2zm.3-8c.8-3.3 3.8-5.7 7.3-5.7 1.8 0 3.5.7 4.8 1.8v-.4c0-.7.6-1.3 1.3-1.3.7 0 1.3.6 1.3 1.3v4.1c0 .7-.6 1.3-1.3 1.3h-4.1c-.7 0-1.3-.6-1.3-1.3 0-.7.6-1.3 1.3-1.3h1.3c-.9-.9-2.1-1.4-3.4-1.4-2.2 0-4.1 1.5-4.6 3.6-.2.6-.7 1-1.3 1h-.3c-.8-.2-1.2-1-1-1.7z" fill="url(#n)" transform="translate(1 46)"/></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_addons.svg b/browser/extensions/onboarding/content/img/icons_addons.svg
new file mode 100644
index 000000000000..6b27dea39252
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_addons.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="8 8 16 16"><title>Icons / Extension</title><g fill="none"><path d="M0 0h16v16H0z"/><path d="M22.5 16c-1 0-1 1-1.7 1-.5 0-.8-.3-.8-.7V13c0-.6-.4-1-1-1h-3.2c-.5 0-.8-.3-.8-.7 0-.8 1-.8 1-1.8 0-.9-.9-1.5-2-1.5s-2 .6-2 1.5c0 1 1 1 1 1.8 0 .4-.3.7-.7.7H9c-.6 0-1 .4-1 1v2.3c0 .4.3.7.8.7.7 0 .7-1 1.7-1 .9 0 1.5.9 1.5 2s-.6 2-1.5 2c-1 0-1-1-1.7-1-.5 0-.8.3-.8.8V23c0 .6.4 1 1 1h3.3c.4 0 .7-.3.7-.7 0-.8-1-.8-1-1.8 0-.9.9-1.5 2-1.5s2 .6 2 1.5c0 1-1 1-1 1.8 0 .4.3.7.8.7H19c.6 0 1-.4 1-1v-3.2c0-.5.3-.8.8-.8.7 0 .7 1 1.7 1 .9 0 1.5-.9 1.5-2s-.6-2-1.5-2z" fill="#3E3D40"/></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_customize.svg b/browser/extensions/onboarding/content/img/icons_customize.svg
new file mode 100644
index 000000000000..ae0a9409fa5c
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_customize.svg
@@ -0,0 +1 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><title>Glyph / Customize</title><g id="Symbols" fill="none" fill-rule="evenodd"><g id="Glyph-/-Customize" fill-rule="nonzero" fill="#3E3D40"><path d="M4 10c-.886.002-1.665.59-1.91 1.44 0 .01-.015.015-.018.025-.362 1.135-.705 2.11-1.76 2.573l-.022.012-.024.012c-.162.086-.265.254-.266.438 0 .276.224.5.5.5 1.74.12 3.46-.414 4.825-1.5.006-.006.007-.013.013-.02.62-.55.832-1.428.534-2.202C5.575 10.504 4.83 9.995 4 10zM15.693.307c-.365-.363-.95-.383-1.338-.046l-8.03 7c-.206.18-.327.435-.336.707-.01.27.093.535.285.727l1.032 1.03c.184.185.433.288.693.288h.033c.272-.01.527-.13.706-.335l7-8.03c.338-.39.318-.975-.047-1.34z" id="Shape"/></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_default.svg b/browser/extensions/onboarding/content/img/icons_default.svg
new file mode 100644
index 000000000000..235f7d65b685
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_default.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><title>default-browser-16</title><path fill="context-fill" d="M8,6s0-4,3.5-4S15,5,15,6c0,4.5-7,9-7,9Z"/><path fill="context-fill" d="M8,6S8,2,4.5,2,1,5,1,6c0,4.5,7,9,7,9L9,9Z"/></svg>
diff --git a/browser/extensions/onboarding/content/img/icons_library.svg b/browser/extensions/onboarding/content/img/icons_library.svg
new file mode 100644
index 000000000000..064c2e619486
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_library.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg width="92px" height="92px" viewBox="0 0 92 92" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Tip / Icon / Library</title><desc>Created with Sketch.</desc><defs></defs><g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Tip-/-Icon-/-Library" fill-rule="nonzero" fill="#0C0C0D"><g id="Icon-/-Library-/-Web"><path d="M28.7405828,17.2350375 C25.5662458,17.2350375 22.9929371,19.8060508 22.9929371,22.9775563 L22.9929371,80.402744 C22.9929371,83.5742496 25.5662458,86.1452628 28.7405828,86.1452628 C31.9149199,86.1452628 34.4882285,83.5742496 34.4882285,80.402744 L34.4882285,22.9775563 C34.4882285,19.8060508 31.9149199,17.2350375 28.7405828,17.2350375 Z M45.98352,11.4925188 C42.8091829,11.4925188 40.2358743,14.063532 40.2358743,17.2350375 L40.2358743,80.402744 C40.2358743,83.5742496 42.8091829,86.1452628 45.98352,86.1452628 C49.157857,86.1452628 51.7311657,83.574249
6 51.7311657,80.402744 L51.7311657,17.2350375 C51.7311657,14.063532 49.157857,11.4925188 45.98352,11.4925188 Z M91.6140792,78.4388026 L68.6234964,15.2710961 C67.9500245,13.3049026 66.2658683,11.8556604 64.2198302,11.4816739 C62.1737921,11.1076875 60.0851643,11.8673187 58.7585671,13.4679283 C57.4319699,15.0685378 57.0744241,17.2603443 57.8236701,19.198979 L80.814253,82.3666855 C81.4877249,84.332879 83.1718811,85.7821212 85.2179192,86.1561076 C87.2639573,86.5300941 89.3525851,85.7704629 90.6791823,84.1698533 C92.0057794,82.5692438 92.3633253,80.3774372 91.6140792,78.4388026 L91.6140792,78.4388026 Z M11.4976457,5.75 C8.32330864,5.75 5.75,8.32101323 5.75,11.4925188 L5.75,80.402744 C5.75,83.5742496 8.32330864,86.1452628 11.4976457,86.1452628 C14.6719828,86.1452628 17.2452914,83.5742496 17.2452914,80.402744 L17.2452914,11.4925188 C17.2452914,8.32101323 14.6719828,5.75 11.4976457,5.75 Z" id="Shape"></path></g></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_performance.svg b/browser/extensions/onboarding/content/img/icons_performance.svg
new file mode 100644
index 000000000000..ad23ba27400c
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_performance.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="context-fill" d="M8 1a8.009 8.009 0 0 0-8 8 7.917 7.917 0 0 0 .78 3.43 1 1 0 1 0 1.8-.86A5.943 5.943 0 0 1 2 9a6 6 0 1 1 11.414 2.571 1 1 0 1 0 1.807.858A7.988 7.988 0 0 0 8 1z"/><path fill="context-fill" d="M11.769 7.078a.5.5 0 0 0-.69.153L8.616 11.1a2 2 0 1 0 .5 3.558 2.011 2.011 0 0 0 .54-.54 1.954 1.954 0 0 0-.2-2.479l2.463-3.871a.5.5 0 0 0-.15-.69z"/></svg>
diff --git a/browser/extensions/onboarding/content/img/icons_private.svg b/browser/extensions/onboarding/content/img/icons_private.svg
new file mode 100755
index 000000000000..7d4d2c416801
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_private.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="8 8 16 16"><title>Icons / Private Browsing</title><g fill="none"><path d="M0 0h32v32H0z"/><path d="M20.4 20c-1.7 0-2.8-2-4.4-2-1.6 0-2.8 2-4.4 2-2 0-3.5-2-3.5-5.3-.1-2 .6-2.7 3.2-2.7s3.4 1.1 4.7 1.1c1.3 0 2.1-1.1 4.7-1.1s3.3.7 3.2 2.7c0 3.3-1.5 5.3-3.5 5.3zm-7.8-5.4c-1.6 0-2.3 1-2.3 1.2 0 .3 1.1.9 2.1.9 1.1 0 2.3-.4 2.3-.7-.2-1-1.1-1.6-2.1-1.4zm6.8 0c-1-.2-1.9.4-2.1 1.4 0 .3 1.2.7 2.3.7 1 0 2.1-.6 2.1-.9 0-.2-.7-1.2-2.3-1.2z" fill="#3E3D40"/></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_screenshots.svg b/browser/extensions/onboarding/content/img/icons_screenshots.svg
new file mode 100644
index 000000000000..8d219dce78b5
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_screenshots.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg width="92px" height="92px" viewBox="0 0 92 92" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Tip / Icon / Screenshots</title><desc>Created with Sketch.</desc><defs></defs><g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><g id="Tip-/-Icon-/-Screenshots" fill-rule="nonzero" fill="#0C0C0D"><g id="Icon-/-Screenshot-/-Web"><path d="M23.0526905,5.75 C16.7062659,5.75 11.5614723,10.8982866 11.5614723,17.2490201 L23.0526905,17.2490201 L23.0526905,5.75 Z M57.5263453,5.75 L46.035127,5.75 L46.035127,17.2490201 L57.5263453,17.2490201 L57.5263453,5.75 Z M80.5087818,5.75 L80.5087818,17.2490201 L92,17.2490201 C92,10.8982866 86.8552063,5.75 80.5087818,5.75 Z M40.2895179,5.75 L28.7982997,5.75 L28.7982997,17.2490201 L40.2895179,17.2490201 L40.2895179,5.75 Z M74.7631726,5.75 L63.2719544,5.75 L63.2719544,17.2490201 L74.7631726,17.2490201 L74.7631726,5.75 Z M80.5087818,34.4975502
L92,34.4975502 L92,22.9985301 L80.5087818,22.9985301 L80.5087818,34.4975502 Z M80.5087818,68.9946104 C86.8552063,68.9946104 92,63.8463237 92,57.4955903 L80.5087818,57.4955903 L80.5087818,68.9946104 Z M80.5087818,51.7460803 L92,51.7460803 L92,40.2470602 L80.5087818,40.2470602 L80.5087818,51.7460803 Z M77.9749681,39.286892 C74.3364854,34.0846734 67.1729138,32.8182928 61.9734467,36.4581331 L39.9390357,52.734996 L28.631677,44.8006721 C28.7205927,44.2448747 28.7762328,43.6842562 28.7982997,43.1218152 C28.7892628,38.6172543 26.6604054,34.3800822 23.0526905,31.6860398 L23.0526905,22.9985301 L11.5614723,22.9985301 L11.5614723,29.0355156 C5.79583786,30.1835386 1.31120668,34.7313256 0.240775953,40.5156383 C-0.829654779,46.2999509 1.73019662,52.1531434 6.70268981,55.2910372 C11.675183,58.4289309 18.0565494,58.2180974 22.811375,54.7588235 L29.9474215,59.7551477 L21.9035687,65.4011666 C16.3310302,62.0167647 9.17796578,62.8225007 4.49677041,67.3619045 C-0.184424965,71.9013083 -1.21401,79.0303725
1.99130168,84.710299 C5.19661336,90.3902255 11.8290284,93.1895755 18.1311131,91.5224455 C24.4331979,89.8553154 28.8167193,84.1418505 28.7982997,77.6188754 C28.7959008,76.6687877 28.699673,75.721263 28.5110192,74.7901165 L77.9749681,39.286892 Z M14.4342769,50.3087028 C10.4677615,50.3087028 7.25226545,47.0910236 7.25226545,43.1218152 C7.25226545,39.1526068 10.4677615,35.9349277 14.4342769,35.9349277 C18.4007922,35.9349277 21.6162883,39.1526068 21.6162883,43.1218152 C21.6162883,47.0910236 18.4007922,50.3087028 14.4342769,50.3087028 Z M14.4342769,84.805763 C10.4677615,84.805763 7.25226545,81.5880838 7.25226545,77.6188754 C7.25226545,73.649667 10.4677615,70.4319879 14.4342769,70.4319879 C18.4007922,70.4319879 21.6162883,73.649667 21.6162883,77.6188754 C21.6162883,81.5880838 18.4007922,84.805763 14.4342769,84.805763 Z M45.4605661,70.8402031 L62.7950688,84.0640762 C67.9945359,87.7039165 75.1581075,86.4375358 78.7965902,81.2353172 L55.457926,63.8200513 L45.4605661,70.8402031 Z" id="Shape"><
/path></g></g></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_singlesearch.svg b/browser/extensions/onboarding/content/img/icons_singlesearch.svg
new file mode 100644
index 000000000000..3e06a3852288
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_singlesearch.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="8 8 16 16 "><title>Icons / Search</title><g fill="none"><path d="M0 0h32v32H0z"/><path d="M23.7 22.3l-4.8-4.8c1.8-2.5 1.4-6.1-1-8.1s-5.9-1.9-8.1.4c-2.3 2.2-2.4 5.7-.4 8.1 2 2.4 5.6 2.8 8.1 1l4.8 4.8c.4.4 1 .4 1.4 0 .4-.4.4-1 0-1.4zM14 18c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4c0 1.1-.4 2.1-1.1 2.9-.8.7-1.8 1.1-2.9 1.1z" fill="#3E3D40"/></g></svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/icons_sync.svg b/browser/extensions/onboarding/content/img/icons_sync.svg
new file mode 100644
index 000000000000..286422275aa7
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_sync.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="8 8 16 16"><title> Icons / Sync</title><desc> Created with Sketch.</desc><g fill="none"><rect width="32" height="32"/><path d="M22 9C21.4 9 21 9.4 21 10L21 11.1C19.2 9.3 16.6 8.6 14.2 9.2 11.7 9.9 9.8 11.8 9.2 14.3 9.1 14.7 9.2 15 9.5 15.3 9.8 15.5 10.1 15.6 10.5 15.5 10.8 15.4 11.1 15.1 11.2 14.8 11.7 12.6 13.7 11 16 11 17.6 11 19 11.7 20 13L18 13C17.4 13 17 13.4 17 14 17 14.6 17.4 15 18 15L22 15C22.6 15 23 14.6 23 14L23 10C23 9.4 22.6 9 22 9ZM22 16.5C21.8 16.4 21.5 16.5 21.3 16.6 21.1 16.7 20.9 17 20.8 17.2 20.3 19.4 18.3 21 16 21 14.4 21 13 20.3 12 19L14 19C14.6 19 15 18.6 15 18 15 17.4 14.6 17 14 17L10 17C9.4 17 9 17.4 9 18L9 22C9 22.6 9.4 23 10 23 10.6 23 11 22.6 11 22L11 20.9C12.8 22.7 15.4 23.4 17.8 22.8 20.3 22.1 22.2 20.2 22.8 17.7 22.9 17.2 22.6 16.6 22 16.5Z" fill="#3E3D40"/></g></svg>
diff --git a/browser/extensions/onboarding/content/img/icons_tour-complete.svg b/browser/extensions/onboarding/content/img/icons_tour-complete.svg
new file mode 100644
index 000000000000..173e72c332df
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/icons_tour-complete.svg
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Generator: Sketch 44.1 (41455) - http://www.bohemiancoding.com/sketch -->
+ <title>Tip / Check</title>
+ <desc>Created with Sketch.</desc>
+ <defs></defs>
+ <g id="Symbols" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="Tips-/-Navigation" transform="translate(-30.000000, -117.000000)" stroke-width="2">
+ <g id="Group">
+ <g id="Tip-/-Check" transform="translate(30.000000, 117.000000)">
+ <circle id="Oval-2" stroke="#FFFFFF" fill="#33F70C" fill-rule="evenodd" cx="10" cy="10" r="9"></circle>
+ <polyline id="Path-31" stroke="#165866" stroke-linecap="round" stroke-linejoin="round" points="5.5 10.5 8.5 13.5 14.5 6.5"></polyline>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/extensions/onboarding/content/img/watermark.svg b/browser/extensions/onboarding/content/img/watermark.svg
new file mode 100644
index 000000000000..c9345ed2ba1d
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/watermark.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32"><title>newtab-firefox-gry</title><path d="M31.359,14.615h0c-.044-.289-.088-.459-.088-.459s-.113.131-.3.378A10.77,10.77,0,0,0,30.6,12.5a13.846,13.846,0,0,0-.937-2.411,10.048,10.048,0,0,0-.856-1.468q-.176-.263-.359-.51c-.57-.931-1.224-1.5-1.981-2.576a7.806,7.806,0,0,1-.991-2.685A10.844,10.844,0,0,0,25,4.607c-.777-.784-1.453-1.341-1.861-1.721C21.126,1.006,21.36.031,21.36.031h0S17.6,4.228,19.229,8.6a8.4,8.4,0,0,0,2.8,3.733c1.576,1.3,3.273,2.323,4.168,4.937a8.377,8.377,0,0,0-3.144-3.317,7.573,7.573,0,0,1,.6,3,7.124,7.124,0,0,1-8.711,6.94,6.561,6.561,0,0,1-1.765-.6,7.183,7.183,0,0,1-2.115-1.955l-.01-.017.126.046a6.5,6.5,0,0,0,.9.241,5.628,5.628,0,0,0,3.583-.423c1.126-.625,1.808-1.088,2.361-.905l.01,0c.54.172.966-.352.58-.9a2.94,2.94,0,0,0-2.848-1.112c-1.127.164-2.16.965-3.637.189a3.129,3.129,0,0,1-.277-.163c-.1-.057.317.087.22.022a7.33,7.33,0,0,1-.928-.554c-.022-.018.223.07.2.052a3.581,3.581,0,0,1-.968-.979
,1.741,1.741,0,0,1-.066-1.554,1.371,1.371,0,0,1,.6-.564c.191.094.309.165.309.165s-.087-.16-.134-.244c.017-.006.032,0,.049-.011.167.072.537.26.732.375a1.016,1.016,0,0,1,.335.3s.067-.033.017-.173a.9.9,0,0,0-.346-.424l.016,0a2.94,2.94,0,0,1,.426.265,2.079,2.079,0,0,0,.17-.9,1.178,1.178,0,0,0-.069-.5c-.053-.1.03-.14.123-.035a.976.976,0,0,0-.079-.238v-.008h0s.053-.069.077-.094a1.43,1.43,0,0,1,.216-.176,9.973,9.973,0,0,1,1.465-.747c.414-.181.757-.319.827-.359a2.3,2.3,0,0,0,.293-.225,1.968,1.968,0,0,0,.66-1.14,1.6,1.6,0,0,0,.017-.178v-.05l0-.03v0l0-.012v0l0-.013h0c-.06-.225-.448-.394-2.476-.584a1.773,1.773,0,0,1-1.45-1.36l0,.009c-.029.074-.055.149-.081.225.026-.075.052-.15.081-.225l0-.016a5.138,5.138,0,0,1,1.986-2.466c.052-.042-.208.011-.156-.032a5.156,5.156,0,0,1,.53-.224c.091-.038-.39-.222-.815-.177a2.2,2.2,0,0,0-.756.178c.1-.086.4-.2.329-.2a4.865,4.865,0,0,0-1.542.583.314.314,0,0,1,.03-.14,2.4,2.4,0,0,0-.964.744,1.275,1.275,0,0,0,.01-.174,2.876,2.876,0,0,0-.473.444l-.009.007a6.285,6.285
,0,0,0-3.517-.3l-.01-.009.012,0a2.943,2.943,0,0,1-.625-.7L6.1,5.852,6.081,5.83c-.077-.114-.156-.243-.237-.387-.058-.1-.117-.217-.176-.338,0-.008-.009-.011-.013-.012-.024,0-.041.111-.061.082l0-.006a4.308,4.308,0,0,1-.283-1.687l-.016.008a1.884,1.884,0,0,0-.714.934c-.061.137-.1.212-.14.287,0,.006,0-.01,0-.035.009-.069.039-.211.032-.2s-.012.019-.019.029a1.733,1.733,0,0,0-.251.372,2.355,2.355,0,0,0-.15.382c-.006.021,0-.018,0-.064s.009-.128,0-.111l-.022.043a9.5,9.5,0,0,0-.8,3.035A3.022,3.022,0,0,0,3.2,8.7v.016a6.628,6.628,0,0,0-.817,1.1,15.606,15.606,0,0,0-1.727,4.23,10.351,10.351,0,0,1,.925-1.621,15,15,0,0,0-1.045,5.5,14.233,14.233,0,0,1,.45-1.629A13.807,13.807,0,0,0,2.234,22.76a15.037,15.037,0,0,0,5.951,6.748h0a13.016,13.016,0,0,0,3.468,1.662c.162.059.326.117.494.173-.053-.021-.1-.044-.153-.067a15.7,15.7,0,0,0,4.5.662c5.394,0,7.175-2.054,7.339-2.259h0a2.73,2.73,0,0,0,.637-.856h0q.156-.064.315-.137l.067-.03.121-.057a11.312,11.312,0,0,0,2.277-1.426,5.5,5.5,0,0,0,2.123-3.1h0a1.938,1.938,0,
0,0,.029-1.428q.083-.131.171-.28a12.706,12.706,0,0,0,1.907-6.181v-.006c0-.059,0-.118,0-.177A7.731,7.731,0,0,0,31.359,14.615Z" fill="context-fill"/></svg>
diff --git a/browser/extensions/onboarding/content/onboarding-tour-agent.js b/browser/extensions/onboarding/content/onboarding-tour-agent.js
new file mode 100644
index 000000000000..d60a41b2c9f5
--- /dev/null
+++ b/browser/extensions/onboarding/content/onboarding-tour-agent.js
@@ -0,0 +1,94 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* globals Mozilla */
+
+(function() {
+"use strict";
+
+let onCanSetDefaultBrowserInBackground = () => {
+ Mozilla.UITour.getConfiguration("appinfo", config => {
+ let canSetInBackGround = config.canSetDefaultBrowserInBackground;
+ let btn = document.getElementById("onboarding-tour-default-browser-button");
+ btn.setAttribute("data-cansetbg", canSetInBackGround);
+ btn.textContent = canSetInBackGround ? btn.getAttribute("data-bg") : btn.getAttribute("data-panel");
+ });
+};
+
+let onClick = evt => {
+ switch (evt.target.id) {
+ case "onboarding-tour-addons-button":
+ Mozilla.UITour.showHighlight("addons");
+ break;
+ case "onboarding-tour-customize-button":
+ Mozilla.UITour.showHighlight("customize");
+ break;
+ case "onboarding-tour-default-browser-button":
+ Mozilla.UITour.getConfiguration("appinfo", (config) => {
+ let isDefaultBrowser = config.defaultBrowser;
+ let btn = document.getElementById("onboarding-tour-default-browser-button");
+ let msg = document.getElementById("onboarding-tour-is-default-browser-msg");
+ let canSetInBackGround = btn.getAttribute("data-cansetbg") === "true";
+ if (isDefaultBrowser || canSetInBackGround) {
+ btn.classList.add("onboarding-hidden");
+ msg.classList.remove("onboarding-hidden");
+ if (canSetInBackGround) {
+ Mozilla.UITour.setConfiguration("defaultBrowser");
+ }
+ } else {
+ btn.disabled = true;
+ Mozilla.UITour.setConfiguration("defaultBrowser");
+ }
+ });
+ break;
+ case "onboarding-tour-library-button":
+ Mozilla.UITour.showHighlight("library");
+ break;
+ case "onboarding-tour-private-browsing-button":
+ Mozilla.UITour.showHighlight("privateWindow");
+ break;
+ case "onboarding-tour-singlesearch-button":
+ Mozilla.UITour.showMenu("urlbar");
+ break;
+ case "onboarding-tour-sync-button":
+ let emailInput = document.getElementById("onboarding-tour-sync-email-input");
+ if (emailInput.checkValidity()) {
+ Mozilla.UITour.showFirefoxAccounts(null, emailInput.value);
+ }
+ break;
+ case "onboarding-tour-sync-connect-device-button":
+ Mozilla.UITour.showConnectAnotherDevice();
+ break;
+ }
+ let classList = evt.target.classList;
+ // On keyboard navigation the target would be .onboarding-tour-item.
+ // On mouse clicking the target would be .onboarding-tour-item-container.
+ if (classList.contains("onboarding-tour-item") || classList.contains("onboarding-tour-item-container")) {
+ Mozilla.UITour.hideHighlight(); // Clean up UITour if a user tries to change to other tours.
+ }
+};
+
+let overlay = document.getElementById("onboarding-overlay");
+overlay.addEventListener("submit", e => e.preventDefault());
+overlay.addEventListener("click", onClick);
+overlay.addEventListener("keypress", e => {
+ let { target, key } = e;
+ let classList = target.classList;
+ if ((key == " " || key == "Enter") &&
+ // On keyboard navigation the target would be .onboarding-tour-item.
+ // On mouse clicking the target would be .onboarding-tour-item-container.
+ (classList.contains("onboarding-tour-item") || classList.contains("onboarding-tour-item-container"))) {
+ Mozilla.UITour.hideHighlight(); // Clean up UITour if a user tries to change to other tours.
+ }
+});
+let overlayObserver = new MutationObserver(mutations => {
+ if (!overlay.classList.contains("onboarding-opened")) {
+ Mozilla.UITour.hideHighlight(); // Clean up UITour if a user tries to close the dialog.
+ }
+});
+overlayObserver.observe(overlay, { attributes: true });
+document.getElementById("onboarding-overlay-button").addEventListener("Agent:Destroy", () => Mozilla.UITour.hideHighlight());
+document.addEventListener("Agent:CanSetDefaultBrowserInBackground", onCanSetDefaultBrowserInBackground);
+
+})();
diff --git a/browser/extensions/onboarding/content/onboarding.css b/browser/extensions/onboarding/content/onboarding.css
new file mode 100644
index 000000000000..8f2431477634
--- /dev/null
+++ b/browser/extensions/onboarding/content/onboarding.css
@@ -0,0 +1,589 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+#onboarding-overlay * {
+ box-sizing: border-box;
+}
+
+#onboarding-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ /* Ensuring we can put the overlay over elements using
+ z-index on original page */
+ z-index: 20999;
+ color: #4d4d4d;
+ background: var(--newtab-overlay-color, rgb(245, 245, 247, 0.9)); /* #f7f7f5, 0.9 opacity */
+ display: none;
+}
+
+#onboarding-overlay.onboarding-opened {
+ display: block;
+}
+
+#onboarding-overlay-button {
+ padding: 10px 0 0 0;
+ position: fixed;
+ cursor: pointer;
+ top: 4px;
+ inset-inline-start: 12px;
+ border: none;
+ /* Set to none so no grey contrast background in the high-contrast mode */
+ background: none;
+ /* make sure the icon stay above the activity-stream searchbar */
+ /* We want this always under #onboarding-overlay */
+ z-index: 10;
+}
+
+/* Keyboard focus styling */
+#onboarding-overlay-button:-moz-focusring {
+ outline: solid 2px rgba(0, 0, 0, 0.1);
+ -moz-outline-radius: 5px;
+ outline-offset: 5px;
+ transition: outline-offset 150ms;
+}
+
+#onboarding-overlay-button > img {
+ width: 32px;
+ vertical-align: top;
+}
+
+#onboarding-overlay-button::after {
+ content: " ";
+ border-radius: 50%;
+ margin-top: -1px;
+ margin-inline-start: -13px;
+ border: 2px solid #f2f2f2;
+ background: #0A84FF;
+ padding: 0;
+ width: 10px;
+ height: 10px;
+ min-width: unset;
+ max-width: unset;
+ display: block;
+ box-sizing: content-box;
+ float: inline-end;
+ position: relative;
+}
+
+#onboarding-overlay-button:hover::after,
+#onboarding-overlay-button.onboarding-speech-bubble::after {
+ background: #0060df;
+ font-size: 13px;
+ text-align: center;
+ color: #fff;
+ box-sizing: content-box;
+ font-weight: 400;
+ content: attr(aria-label);
+ border: 1px solid transparent;
+ border-radius: 2px;
+ padding: 10px 16px;
+ width: auto;
+ height: auto;
+ min-width: 100px;
+ max-width: 140px;
+ white-space: pre-line;
+ margin-inline-start: 4px;
+ margin-top: -10px;
+ box-shadow: -2px 0 5px 0 rgba(74, 74, 79, 0.25);
+}
+
+#onboarding-overlay-button:dir(rtl)::after {
+ box-shadow: 2px 0 5px 0 rgba(74, 74, 79, 0.25);
+}
+
+#onboarding-overlay-button-watermark-icon {
+ -moz-context-properties: fill;
+ fill: var(--newtab-icon-tertiary-color, #d7d7db);
+}
+
+#onboarding-overlay-button-watermark-icon,
+#onboarding-overlay-button.onboarding-watermark::after,
+#onboarding-overlay-button.onboarding-watermark:not(:hover) > #onboarding-overlay-button-icon {
+ display: none;
+}
+
+#onboarding-overlay-button.onboarding-watermark:not(:hover) > #onboarding-overlay-button-watermark-icon {
+ display: block;
+}
+
+#onboarding-overlay-dialog,
+.onboarding-hidden,
+#onboarding-tour-sync-page[data-login-state=logged-in] .show-on-logged-out,
+#onboarding-tour-sync-page[data-login-state=logged-out] .show-on-logged-in {
+ display: none;
+}
+
+.onboarding-close-btn {
+ position: absolute;
+ top: 15px;
+ inset-inline-end: 15px;
+ cursor: pointer;
+ width: 16px;
+ height: 16px;
+ border: none;
+ background: none;
+ padding: 0;
+ }
+
+.onboarding-close-btn::before {
+ content: url("chrome://global/skin/icons/close.svg");
+ -moz-context-properties: fill, fill-opacity;
+ fill-opacity: 0;
+ fill: var(--newtab-icon-primary-color, currentColor);
+}
+
+.onboarding-close-btn:-moz-any(:hover, :active, :focus, :-moz-focusring)::before {
+ fill-opacity: 0.1;
+}
+
+#onboarding-overlay.onboarding-opened > #onboarding-overlay-dialog {
+ width: 960px;
+ height: 510px;
+ background: #fff;
+ border: 1px solid rgba(9, 6, 13, 0.2); /* #09060D, 0.2 opacity */
+ border-radius: 3px;
+ position: relative;
+ margin: 0 calc(50% - 480px);
+ top: calc(50% - 255px);
+ display: grid;
+ grid-template-rows: [dialog-start] 70px [page-start] 1fr [footer-start] 30px [dialog-end];
+ grid-template-columns: [dialog-start] 230px [page-start] 1fr [dialog-end];
+ box-shadow: 0 3px rgba(0, 0, 0, 0.04);
+}
+
+#onboarding-overlay.onboarding-opened > #onboarding-overlay-dialog:-moz-focusring {
+ outline: none;
+}
+
+@media (max-height: 510px) {
+ #onboarding-overlay.onboarding-opened > #onboarding-overlay-dialog {
+ top: 0;
+ }
+}
+
+#onboarding-overlay-dialog > header {
+ grid-row: dialog-start / page-start;
+ grid-column: dialog-start / tour-end;
+ margin-top: 22px;
+ margin-bottom: 0;
+ margin-inline-end: 0;
+ margin-inline-start: 36px;
+ font-size: 22px;
+ font-weight: 200;
+}
+
+#onboarding-overlay-dialog > nav {
+ grid-row: dialog-start / footer-start;
+ grid-column-start: dialog-start;
+ margin-top: 40px;
+ margin-bottom: 0;
+ margin-inline-end: 0;
+ margin-inline-start: 0;
+ padding: 0;
+}
+
+#onboarding-overlay-dialog > footer {
+ grid-column: dialog-start / tour-end;
+ font-size: 13px;
+}
+
+#onboarding-skip-tour-button {
+ margin-inline-start: 27px;
+ margin-bottom: 27px;
+}
+
+/* Onboarding tour list */
+#onboarding-tour-list {
+ margin: 40px 0 0 0;
+ padding: 0;
+ margin-inline-start: 16px;
+}
+
+#onboarding-tour-list .onboarding-tour-item-container {
+ list-style: none;
+ outline: none;
+ position: relative;
+}
+
+#onboarding-tour-list .onboarding-tour-item {
+ pointer-events: none;
+ display: list-item;
+ padding-inline-start: 49px;
+ padding-top: 14px;
+ padding-bottom: 14px;
+ margin-bottom: 9px;
+ font-size: 16px;
+ cursor: pointer;
+ max-height: 54px;
+ --onboarding-tour-item-active-color: #0A84FF;
+}
+
+#onboarding-tour-list .onboarding-tour-item:dir(rtl) {
+ background-position-x: right 17px;
+}
+
+#onboarding-tour-list .onboarding-tour-item.onboarding-complete::before {
+ content: url("img/icons_tour-complete.svg");
+ position: relative;
+ inset-inline-start: 3px;
+ top: -10px;
+ float: inline-start;
+}
+
+#onboarding-tour-list .onboarding-tour-item.onboarding-complete {
+ padding-inline-start: 29px;
+}
+
+#onboarding-tour-list .onboarding-tour-item::after {
+ content: "";
+ display: block;
+ width: 48px;
+ height: 48px;
+ position: absolute;
+ inset-inline-start: 0px;
+ top: 0px;
+ background-color: #3E3D40;
+ mask-repeat: no-repeat;
+ mask-position: left 17px top 14px;
+ mask-size: 20px;
+}
+
+#onboarding-tour-list .onboarding-tour-item:dir(rtl)::after {
+ mask-position: right 17px top 14px;
+}
+
+#onboarding-tour-list .onboarding-tour-item.onboarding-active::after,
+#onboarding-tour-list .onboarding-tour-item-container:hover .onboarding-tour-item::after {
+ background-color: var(--onboarding-tour-item-active-color);
+}
+
+#onboarding-tour-list .onboarding-tour-item.onboarding-active,
+#onboarding-tour-list .onboarding-tour-item-container:hover .onboarding-tour-item {
+ color: var(--onboarding-tour-item-active-color);
+ /* With 1px transparent outline, could see a border in the high-constrast mode */
+ outline: 1px solid transparent;
+}
+
+/* Default browser tour */
+#onboarding-tour-is-default-browser-msg {
+ font-size: 16px;
+ line-height: 21px;
+ float: inline-end;
+ margin-inline-end: 26px;
+ margin-top: -32px;
+ text-align: center;
+}
+
+/* Sync tour */
+#onboarding-tour-sync-page form {
+ text-align: center;
+}
+
+#onboarding-tour-sync-page form > h3 {
+ text-align: center;
+ margin: 0;
+ font-size: 22px;
+ font-weight: normal;
+}
+
+#onboarding-tour-sync-page form > p {
+ text-align: center;
+ margin: 3px 0 0 0;
+ font-size: 15px;
+ font-weight: normal;
+}
+
+#onboarding-tour-sync-page form > input {
+ margin-top: 10px;
+ height: 40px;
+ width: 80%;
+ padding: 7px;
+}
+
+#onboarding-tour-sync-page form > #onboarding-tour-sync-button {
+ padding: 10px 20px;
+ min-width: 40%;
+ margin: 15px 0;
+ float: none;
+}
+
+/* Onboarding tour pages */
+.onboarding-tour-page {
+ grid-row: page-start / footer-end;
+ grid-column: page-start;
+ display: grid;
+ grid-template-rows: [tour-page-start] 393px [tour-button-start] 1fr [tour-page-end];
+ grid-template-columns: [tour-page-start] 368px [tour-content-start] 1fr [tour-page-end];
+}
+
+.onboarding-tour-description {
+ grid-row: tour-page-start / tour-page-end;
+ grid-column: tour-page-start / tour-content-start;
+ font-size: 15px;
+ line-height: 22px;
+ padding-inline-start: 40px;
+ padding-inline-end: 28px;
+ max-height: 360px;
+ overflow: auto;
+}
+
+.onboarding-tour-description > h1 {
+ font-size: 36px;
+ margin-top: 16px;
+ font-weight: 300;
+ line-height: 44px;
+}
+
+.onboarding-tour-content {
+ grid-row: tour-page-start / tour-button-start;
+ grid-column: tour-content-start / tour-page-end;
+ padding: 0;
+ text-align: end;
+}
+
+.onboarding-tour-content > img {
+ width: 352px;
+ margin: 0;
+}
+
+/* These illustrations need to be stuck on the right side to the border. Thus we
+ need to flip them horizontally on RTL . */
+.onboarding-tour-content > img:dir(rtl) {
+ transform: scaleX(-1);
+}
+
+.onboarding-tour-content > iframe {
+ width: 100%;
+ height: 100%;
+ border: none;
+}
+
+.onboarding-tour-button-container {
+ /* Get higher z-index in order to ensure buttons within container are selectable */
+ z-index: 2;
+ grid-row: tour-button-start / tour-page-end;
+ grid-column: tour-content-start / tour-page-end;
+}
+
+.onboarding-tour-action-button {
+ background: #0060df;
+ /* With 1px transparent border, could see a border in the high-constrast mode */
+ border: 1px solid transparent;
+ border-radius: 2px;
+ padding: 10px 20px;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 16px;
+ color: #fff;
+ float: inline-end;
+ margin-inline-end: 26px;
+ margin-top: -32px;
+}
+
+/* Remove default dotted outline around buttons' text */
+#onboarding-overlay button::-moz-focus-inner,
+#onboarding-overlay-button::-moz-focus-inner {
+ border: 0;
+}
+
+/* Keyboard focus specific outline */
+#onboarding-overlay button:-moz-focusring,
+.onboarding-action-button:-moz-focusring,
+#onboarding-tour-list .onboarding-tour-item:focus {
+ outline: 2px solid rgba(0,149,221,0.5);
+ outline-offset: 1px;
+ -moz-outline-radius: 2px;
+}
+
+.onboarding-tour-action-button:hover:not([disabled]) {
+ background: #003eaa;
+ cursor: pointer;
+}
+
+.onboarding-tour-action-button:active:not([disabled]) {
+ background: #002275;
+}
+
+.onboarding-tour-action-button:disabled {
+ opacity: 0.5;
+}
+
+/* Tour Icons */
+#onboarding-tour-singlesearch.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-singlesearch] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_singlesearch.svg");
+}
+
+#onboarding-tour-private-browsing.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-private-browsing] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_private.svg");
+}
+
+#onboarding-tour-addons.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-addons] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_addons.svg");
+}
+
+#onboarding-tour-customize.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-customize] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_customize.svg");
+}
+
+#onboarding-tour-default-browser.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-default-browser] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_default.svg");
+}
+
+#onboarding-tour-sync.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-sync] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_sync.svg");
+}
+
+#onboarding-tour-library.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-library] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_library.svg");
+}
+
+#onboarding-tour-performance.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-performance] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_performance.svg");
+}
+
+#onboarding-tour-screenshots.onboarding-tour-item::after,
+#onboarding-notification-bar[data-target-tour-id=onboarding-tour-screenshots] #onboarding-notification-tour-title::before {
+ mask-image: url("img/icons_screenshots.svg");
+}
+
+a#onboarding-tour-screenshots-button,
+a#onboarding-tour-screenshots-button:hover,
+a#onboarding-tour-screenshots-button:visited {
+ color: #fff;
+ text-decoration: none;
+}
+
+/* Tour Notifications */
+#onboarding-notification-bar {
+ position: fixed;
+ z-index: 20998; /* We want this always under #onboarding-overlay */
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ height: 100px;
+ min-width: 640px;
+ background: var(--newtab-snippets-background-color, rgba(255, 255, 255, 0.97));
+ border-top: 1px solid var(--newtab-snippets-hairline-color, #e9e9e9);
+ box-shadow: 0 -1px 4px 0 rgba(12, 12, 13, 0.1);
+ transition: transform 0.8s;
+ transform: translateY(122px);
+}
+
+#onboarding-notification-bar.onboarding-opened {
+ transition: none;
+ transform: translateY(0px);
+}
+
+#onboarding-notification-close-btn {
+ position: absolute;
+ inset-block-start: 50%;
+ inset-inline-end: 24px;
+ transform: translateY(-50%);
+}
+
+#onboarding-notification-message-section {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+}
+
+#onboarding-notification-body {
+ width: 500px;
+ margin: 0 18px;
+ color: var(--newtab-text-primary-color, #0c0c0d);
+ display: inline-block;
+ max-height: 120px;
+ overflow: auto;
+ padding: 15px 0;
+ box-sizing: border-box;
+}
+
+#onboarding-notification-body * {
+ font-size: 12px;
+ font-weight: normal;
+ margin-top: 5px;
+}
+
+#onboarding-notification-tour-title {
+ margin: 0;
+ font-weight: bold;
+ color: var(--newtab-text-primary-color, #0f1126);
+ font-size: 14px;
+}
+
+#onboarding-notification-tour-title::before {
+ content: "";
+ background-color: var(--newtab-text-primary-color, #0f1126);
+ mask-repeat: no-repeat;
+ mask-size: 14px;
+ height: 16px;
+ width: 16px;
+ float: inline-start;
+ margin-top: 2px;
+ margin-inline-end: 2px;
+}
+
+#onboarding-notification-tour-icon {
+ min-width: 64px;
+ height: 64px;
+ background-size: 64px;
+ background-repeat: no-repeat;
+ background-image: url("chrome://branding/content/icon64.png");
+}
+
+.onboarding-action-button {
+ background: #fbfbfb;
+ /* With 1px border, could see a border in the high-constrast mode */
+ border: 1px solid #c1c1c1;
+ border-radius: 2px;
+ padding: 10px 20px;
+ font-size: 14px;
+ font-weight: 600;
+ line-height: 16px;
+ color: #202340;
+ min-width: 130px;
+}
+
+.onboarding-action-button:hover {
+ background-color: #ebebeb;
+ cursor: pointer;
+}
+
+.onboarding-action-button:active {
+ background-color: #dadada;
+}
+
+#onboarding-notification-bar .onboarding-action-button {
+ background-color: var(--newtab-button-secondary-color);
+ border-color: var(--newtab-border-primary-color);
+ border-radius: 4px;
+ color: var(--newtab-text-primary-color);
+}
+
+#onboarding-notification-bar .onboarding-action-button:hover,
+#onboarding-notification-bar .onboarding-action-button:active {
+ background-color: var(--newtab-button-secondary-color);
+ box-shadow: 0 0 0 5px var(--newtab-card-active-outline-color);
+ transition: box-shadow 150ms;
+}
+
+@media (min-resolution: 2dppx) {
+ #onboarding-notification-tour-icon {
+ background-image: url("chrome://branding/content/icon128.png");
+ }
+}
diff --git a/browser/extensions/onboarding/content/onboarding.js b/browser/extensions/onboarding/content/onboarding.js
new file mode 100644
index 000000000000..c67bd8876201
--- /dev/null
+++ b/browser/extensions/onboarding/content/onboarding.js
@@ -0,0 +1,37 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+/* eslint-env mozilla/frame-script */
+
+"use strict";
+
+ChromeUtils.import("resource://gre/modules/Services.jsm");
+ChromeUtils.defineModuleGetter(this, "Onboarding", "resource://onboarding/Onboarding.jsm");
+
+const ABOUT_HOME_URL = "about:home";
+const ABOUT_NEWTAB_URL = "about:newtab";
+const ABOUT_WELCOME_URL = "about:welcome";
+
+// Load onboarding module only when we enable it.
+if (Services.prefs.getBoolPref("browser.onboarding.enabled", false)) {
+ addEventListener("load", function onLoad(evt) {
+ if (!content || evt.target != content.document) {
+ return;
+ }
+
+ let window = evt.target.defaultView;
+ let location = window.location.href;
+ if (location == ABOUT_NEWTAB_URL || location == ABOUT_HOME_URL || location == ABOUT_WELCOME_URL) {
+ // We just want to run tests as quickly as possible
+ // so in the automation test, we don't do `requestIdleCallback`.
+ if (Cu.isInAutomation) {
+ new Onboarding(this, window);
+ return;
+ }
+ window.requestIdleCallback(() => {
+ new Onboarding(this, window);
+ });
+ }
+ }, true);
+}
diff --git a/browser/extensions/onboarding/data_events.md b/browser/extensions/onboarding/data_events.md
new file mode 100644
index 000000000000..3fc5ffa41b86
--- /dev/null
+++ b/browser/extensions/onboarding/data_events.md
@@ -0,0 +1,154 @@
+# Metrics we collect
+
+We adhere to [Activity Stream's data collection policy](https://github.com/mozilla/activity-stream/blob/master/docs/v2-syst…. Data about your specific browsing behavior or the sites you visit is **never transmitted to any Mozilla server**. At any time, it is easy to **turn off** this data collection by [opting out of Firefox telemetry](https://support.mozilla.org/kb/share-telemetry-data-mozilla-help….
+
+## User event pings
+
+The Onboarding system add-on sends 2 types of pings(HTTPS POST) to the backend [Onyx server](https://github.com/mozilla/onyx) :
+- a `session` ping that describes the ending of an Onboarding session (a new tab is closed or refreshed, an overlay is closed, a notification bar is closed), and
+- an `event` ping that records specific data about individual user interactions while interacting with Onboarding
+
+For reference, Onyx is a Mozilla owned service to serve tiles for the current newtab in Firefox. It also receives all the telemetry from the about:newtab and about:home page as well as Activity Stream. It's operated and monitored by the Cloud Services team.
+
+# Example Onboarding `session` Log
+
+```js
+{
+ // These fields are sent from the client
+ "addon_version": "1.0.0",
+ "category": ["onboarding-interactions"|"overlay-interactions"|"notification-interactions"],
+ "client_id": "374dc4d8-0cb2-4ac5-a3cf-c5a9bc3c602e",
+ "locale": "en-US",
+ "type": ["onboarding_session" | "overlay_session" | "notification_session"],
+ "page": ["about:newtab" | "about:home" | "about:welcome"],
+ "parent_session_id": "{45cddbeb-2bec-4f3a-bada-fb87d4b79a6c}",
+ "root_session_id": "{45cddbeb-2bec-4f3a-bada-fb87d4b79a6c}",
+ "session_begin": 1505440017018,
+ "session_end": 1505440021992,
+ "session_id": "{12dasd-213asda-213dkakj}",
+ "tour_type" ["new" | "update"],
+
+ // These fields are generated on the server
+ "date": "2016-03-07",
+ "ip": "10.192.171.13",
+ "ua": "python-requests/2.9.1",
+ "receive_at": 1457396660000
+}
+```
+
+| KEY | DESCRIPTION | |
+|-----|-------------|:-----:|
+| `addon_version` | [Required] The version of the Onboarding addon. | :one:
+| `category` | [Required] Either ["", "overlay-interactions", "notification-interactions"] to identify which kind of the interaction | :one:
+| `client_id` | [Required] An identifier generated by [ClientID](https://github.com/mozilla/gecko-dev/blob/master/toolkit/modules/… module to provide an identifier for this device. This data is automatically appended by `ping-centre` module | :one:
+| `ip` | [Auto populated by Onyx] The IP address of the client. Onyx does use (with the permission) the IP address to infer user's geo-information so that it could prepare the corresponding tiles for the country she lives in. However, Ping-centre will NOT store IP address in the database, where only authorized Mozilla employees can access the telemetry data, and all the raw logs are being strictly managed by the Ops team and will expire according to the Mozilla's data retention policy.| :two:
+| `locale` | The browser chrome's language (e.g. en-US). | :two:
+| `page` | [Required] One of ["about:newtab", "about:home", "about:welcome"]| :one:
+| `parent_session_id` | [Required] The unique identifier generated by `gUUIDGenerator` service to identify this event belongs to which parent session. Events happen upon overlay will have the `overlay session uuid` as its `parent_session_id`. Events happen upon notification will have the `notification session uuid` as its `parent_session_id`. | :one:
+| `root_session_id` | [Required] The unique identifier generated by `gUUIDGenerator` service to identify this event belongs to which root session. Every event will have the same `onboarding session uuid` as its `root_session_id` when interact in the same tab. | :one:
+| `session_begin` | [Required] Timestamp in (integer) milliseconds when onboarding/overlay/notification becoming visible. | :one:
+| `session_end` | [Required] Timestamp in (integer) milliseconds when onboarding/overlay/notification losing focus. | :one:
+| `session_id` | [Required] The unique identifier generated by `gUUIDGenerator` service to identify the specific user session. We will log different uuid when onboarding is inited/when the overlay is opened/when notification is shown. | :one:
+| `tour_type` | [Required] One of ["new", "update"] indicates the user is a `new` user or the `update` user upgrade from the older version | :one:
+| `type` | [Required] The type of event. Allowed event strings are defined in the below section | :one:
+| `ua` | [Auto populated by Onyx] The user agent string. | :two:
+| `ver` | [Auto populated by Onyx] The version of the Onyx API the ping was sent to. | :one:
+
+# Example Onboarding `event` Log
+
+```js
+{
+ "addon_version": "1.0.0",
+ "bubble_state": ["bubble" | "dot" | "hide"],
+ "category": ["logo-interactions"|"overlay-interactions"|"notification-interactions"],
+ "client_id": "374dc4d8-0cb2-4ac5-a3cf-c5a9bc3c602e",
+ "locale": "en-US",
+ "logo_state": ["logo" | "watermark"],
+ "notification_impression": [1-8],
+ "notification_state": ["show" | "hide" | "finished"],
+ "page": ["about:newtab" | "about:home" | "about:welcome"],
+ "parent_session_id": "{45cddbeb-2bec-4f3a-bada-fb87d4b79a6c}",
+ "root_session_id": "{45cddbeb-2bec-4f3a-bada-fb87d4b79a6c}",
+ "current_tour_id": ["onboarding-tour-private-browsing" | "onboarding-tour-addons"|...], // tour ids defined in 'onboardingTourset'
+ "target_tour_id": ["onboarding-tour-private-browsing" | "onboarding-tour-addons"|...], // tour ids defined in 'onboardingTourset',
+ "tour_id": ["onboarding-tour-private-browsing" | "onboarding-tour-addons"|...], // tour ids defined in 'onboardingTourset'
+ "timestamp": 1505440017019,
+ "tour_type" ["new" | "update"],
+ "type": ["notification-cta-click" | "overlay-cta-click" | "overlay-nav-click" | "overlay-skip-tour"...],
+ "width": 950,
+
+ // These fields are generated on the server
+ "ip": "10.192.171.13",
+ "ua": "python-requests/2.9.1",
+ "receive_at": 1457396660000,
+ "date": "2016-03-07",
+}
+```
+
+
+| KEY | DESCRIPTION | |
+|-----|-------------|:-----:|
+| `addon_version` | [Required] The version of the Onboarding addon. | :one:
+| `bubble_state` | [Optional] | One of ["bubble", "dot", "hide"] indicates the current visual state of the speach bubble (content dialog besides the onboarding logo). | :one:
+| `category` | [Required] Either ("overlay-interactions", "notification-interactions") to identify which kind of the interaction | :one:
+| `client_id` | [Required] An identifier generated by [ClientID](https://github.com/mozilla/gecko-dev/blob/master/toolkit/modules/… module to provide an identifier for this device. This data is automatically appended by `ping-centre` module | :one:
+| `current_tour_id` | [Optional] id of the current tour. We put "" when this field is not relevant to this event. | :one:
+| `ip` | [Auto populated by Onyx] The IP address of the client. Onyx does use (with the permission) the IP address to infer user's geo-information so that it could prepare the corresponding tiles for the country she lives in. However, Ping-centre will NOT store IP address in the database, where only authorized Mozilla employees can access the telemetry data, and all the raw logs are being strictly managed by the Ops team and will expire according to the Mozilla's data retention policy.| :two:
+| `locale` | The browser chrome's language (e.g. en-US). | :two:
+| `logo_state` | [Optional] One of ["logo", "watermark"] indicates the overlay is opened while in the default or the watermark state. | :one:
+| `notification_impression` | [Optional] An integer to record how many times the current notification tour is shown to the user. Each Notification tour can show not more than 8 times. We put `-1` when this field is not relevant to this event | :one:
+| `notification_state` | [Optional] One of ["show", "hide", "finished"] indicates the current notification bar state. | :one:
+| `page` | [Required] One of ["about:newtab", "about:home"]| :one:
+| `parent_session_id` | [Required] The unique identifier generated by `gUUIDGenerator` service to identify this event belongs to which parent session. Events happen upon overlay will have the `overlay session uuid` as its `parent_session_id`. Events happen upon notification will have the `notification session uuid` as its `parent_session_id`. | :one:
+| `root_session_id` | [Required] The unique identifier generated by `gUUIDGenerator` service to identify this event belongs to which root session. Every event will have the same `onboarding session uuid` as its `root_session_id` when interact in the same tab. | :one:
+| `target_tour_id` | [Optional] id of the target switched tour. We put "" when this field is not relevant to this event. | :one:
+| `timestamp` | [Required] Timestamp in (integer) milliseconds when the event triggered | :one:
+| `tour_type` | [Required] One of ["new", "update"] indicates the user is a `new` user or the `update` user upgrade from the older version | :one:
+| `type` | [Required] The type of event. Allowed event strings are defined in the below section | :one:
+| `ua` | [Auto populated by Onyx] The user agent string. | :two:
+| `ver` | [Auto populated by Onyx] The version of the Onyx API the ping was sent to. | :one:
+| `width` | [Required] Current browser window width rounded by 50 pixels. Collecting rounded values reduces the risk to use these values to derive a unique user identifier. | :one:
+
+**Where:**
+
+:one: Firefox data
+:two: HTTP protocol data
+
+## Event types
+
+Here are all allowed event `type` strings that defined in `OnboardingTelemetry::EVENT_WHITELIST`.
+
+### Onboarding events
+
+| EVENT | DESCRIPTION |
+|-----------|---------------------|
+| `onboarding-logo-click` | event is triggered when a user clicks the logo to open the overlay. |
+| `onboarding-register-session` | internal event triggered when loading the onboarding module, will not send out any data. |
+| `onboarding-session` | event is sent when the tab unload to track the start and end time of the onboarding session. |
+| `onboarding-session-begin` | internal event triggered when the onboarding starts, will not send out any data. |
+| `onboarding-session-end` | internal event triggered when the onboarding ends, `onboarding-session` event is the actual event that send to the server. |
+
+### Overlay events
+
+| EVENT | DESCRIPTION |
+|-----------|---------------------|
+| `overlay-close-button-click` | event is triggered when a user clicks close overlay button. |
+| `overlay-close-outside-click` | event is triggered when a user clicks outside the overlay area to end the tour. |
+| `overlay-cta-click` | event is triggered when a user clicks overlay's Call-To-Action button. |
+| `overlay-current-tour` | event is sent when a tour is shown in the overlay. |
+| `overlay-nav-click` | event is sent when a user clicks a navigation button in the overlay. |
+| `overlay-session` | event is sent when an overlay is closed to track the start and end time of the overlay session. |
+| `overlay-session-begin` | internal event triggered when open the overlay, will not send out any data. |
+| `overlay-session-end` | internal event is triggered when an overlay session ends. `overlay-session` event is the actual event that send to the server. |
+| `overlay-skip-tour` | event is sent when a user clicks `Skip Tour` button in the overlay. |
+
+### Notification events
+
+| EVENT | DESCRIPTION |
+|-----------|---------------------|
+| `notification-appear` | event is sent when a notification appears. |
+| `notification-close-button-click` | event is sent when a user clicks close notification button. |
+| `notification-cta-click` | event is sent when a user clicks the notification's Call-To-Action button. |
+| `notification-session` | event is sent when user closes the notification to track the start and end time of the notification session. |
+| `notification-session-begin` | internal event triggered when user open the notification, will not send out any data. |
+| `notification-session-end` | internal event is triggered when a notification session ends. `notification-session` event is the actual event that send to the server. |
diff --git a/browser/extensions/onboarding/jar.mn b/browser/extensions/onboarding/jar.mn
new file mode 100644
index 000000000000..1d580be9861f
--- /dev/null
+++ b/browser/extensions/onboarding/jar.mn
@@ -0,0 +1,14 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[features/onboarding(a)mozilla.org] chrome.jar:
+ # resource://onboarding/ is referenced in about:home about:newtab and about:welcome,
+ # so make it content-accessible.
+% resource onboarding %content/ contentaccessible=yes
+ content/ (content/*)
+ # Package UITour-lib.js in here rather than under
+ # /browser/components/uitour to avoid "unreferenced files" error when
+ # Onboarding extension is not built.
+ content/lib/UITour-lib.js (/browser/components/uitour/UITour-lib.js)
+ content/modules/ (*.jsm)
diff --git a/browser/extensions/onboarding/locales/en-US/onboarding.properties b/browser/extensions/onboarding/locales/en-US/onboarding.properties
new file mode 100644
index 000000000000..cc545222a107
--- /dev/null
+++ b/browser/extensions/onboarding/locales/en-US/onboarding.properties
@@ -0,0 +1,126 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# LOCALIZATION NOTE(onboarding.overlay-title2): This string will be used in the overlay title.
+onboarding.overlay-title2=Let’s get started
+onboarding.skip-tour-button-label=Skip Tour
+#LOCALIZATION NOTE(onboarding.button.learnMore): this string is used as a button label, displayed near the message, and shared across all the onboarding notifications.
+onboarding.button.learnMore=Learn More
+# LOCALIZATION NOTE(onboarding.overlay-icon-tooltip2): This string will be used
+# to show the tooltip alongside the notification icon in the overlay tour. %S is
+# brandShortName. The tooltip is designed to show in two lines. Please use \n to
+# do appropriate line breaking.
+onboarding.overlay-icon-tooltip2=New to %S?\nLet’s get started.
+# LOCALIZATION NOTE(onboarding.overlay-icon-tooltip-updated2): %S is
+# brandShortName. The tooltip is designed to show in two lines. Please use \n to
+# do appropriate line breaking.
+onboarding.overlay-icon-tooltip-updated2=%S is all new.\nSee what you can do!
+# LOCALIZATION NOTE(onboarding.overlay-close-button-tooltip): The overlay close button is an icon button. This tooltip would be shown when mousing hovering on the button.
+onboarding.overlay-close-button-tooltip=Close
+onboarding.notification-icon-tooltip-updated=See what’s new!
+# LOCALIZATION NOTE(onboarding.notification-close-button-tooltip): The notification close button is an icon button. This tooltip would be shown when mousing hovering on the button.
+onboarding.notification-close-button-tooltip=Dismiss
+
+# LOCALIZATION NOTE(onboarding.complete): This string is used to describe an
+# onboarding tour item that is complete.
+onboarding.complete=Complete
+
+onboarding.tour-private-browsing=Private Browsing
+onboarding.tour-private-browsing.title2=Browse by yourself.
+# LOCALIZATION NOTE(onboarding.tour-private-browsing.description3): This string will be used in the private-browsing tour description. %S is brandShortName.
+onboarding.tour-private-browsing.description3=Want to keep something to yourself? Use Private Browsing with Tracking Protection. %S will block online trackers while you browse and won’t remember your history after you’ve ended your session.
+onboarding.tour-private-browsing.button=Show Private Browsing in Menu
+onboarding.notification.onboarding-tour-private-browsing.title=Browse by yourself.
+onboarding.notification.onboarding-tour-private-browsing.message2=Want to keep something to yourself? Use Private Browsing with Tracking Protection.
+
+onboarding.tour-addons=Add-ons
+onboarding.tour-addons.title2=Get more done.
+# LOCALIZATION NOTE(onboarding.tour-addons.description2): This string will be used in the add-on tour description. %S is brandShortName
+onboarding.tour-addons.description2=Add-ons let you add features to %S, so your browser works harder for you. Compare prices, check the weather or express your personality with a custom theme.
+onboarding.tour-addons.button=Show Add-ons in Menu
+onboarding.notification.onboarding-tour-addons.title=Get more done.
+# LOCALIZATION NOTE(onboarding.notification.onboarding-tour-addons.message): This string will be used in the notification message for the add-ons tour. %S is brandShortName.
+onboarding.notification.onboarding-tour-addons.message=Add-ons are small apps you can add to %S that do lots of things — from managing to-do lists, to downloading videos, to changing the look of your browser.
+
+onboarding.tour-customize=Customize
+onboarding.tour-customize.title2=Rearrange your toolbar.
+# LOCALIZATION NOTE(onboarding.tour-customize.description2): This string will be used in the customize tour description. %S is brandShortName
+onboarding.tour-customize.description2=Put the tools you use most right at your fingertips. Drag, drop, and reorder %S’s toolbar and menu to fit your needs. Or choose a compact theme to make more room for tabbed browsing.
+onboarding.tour-customize.button=Show Customize in Menu
+onboarding.notification.onboarding-tour-customize.title=Rearrange your toolbar.
+# LOCALIZATION NOTE(onboarding.notification.onboarding-tour-customize.message): This string will be used in the notification message for Customize tour. %S is brandShortName.
+onboarding.notification.onboarding-tour-customize.message=Put the tools you use most right at your fingertips. Add more options to your toolbar. Or select a theme to make %S reflect your personality.
+
+onboarding.tour-default-browser=Default Browser
+# LOCALIZATION NOTE(onboarding.tour-default-browser.title2): This string will be used in the default browser tour title. %S is brandShortName
+onboarding.tour-default-browser.title2=Make %S your go-to browser.
+# LOCALIZATION NOTE(onboarding.tour-default-browser.description2): This string will be used in the default browser tour description. %1$S is brandShortName
+onboarding.tour-default-browser.description2=Love %1$S? Set it as your default browser. Open a link from another application, and %1$S will be there for you.
+# LOCALIZATION NOTE(onboarding.tour-default-browser.button): Label for a button to open the OS default browser settings where it's not possible to set the default browser directly. (OSX, Linux, Windows 8 and higher)
+onboarding.tour-default-browser.button=Open Default Browser Settings
+# LOCALIZATION NOTE(onboarding.tour-default-browser.win7.button): Label for a button to directly set the default browser (Windows 7). %S is brandShortName
+onboarding.tour-default-browser.win7.button=Make %S Your Default Browser
+# LOCALIZATION NOTE(onboarding.tour-default-browser.is-default.message): Label displayed when Firefox is already set as default browser. followed on a new line by "tour-default-browser.is-default.2nd-message".
+onboarding.tour-default-browser.is-default.message=You’ve got this!
+# LOCALIZATION NOTE(onboarding.tour-default-browser.is-default.2nd-message): Label displayed when Firefox is already set as default browser. %S is brandShortName
+onboarding.tour-default-browser.is-default.2nd-message=%S is already your default browser.
+# LOCALIZATION NOTE(onboarding.notification.onboarding-tour-default-browser.title): This string will be used in the notification title for the default browser tour. %S is brandShortName.
+onboarding.notification.onboarding-tour-default-browser.title=Make %S your go-to browser.
+# LOCALIZATION NOTE(onboarding.notification.onboarding-tour-default-browser.message): This string will be used in the notification message for the default browser tour. %1$S is brandShortName
+onboarding.notification.onboarding-tour-default-browser.message=It doesn’t take much to get the most from %1$S. Just set %1$S as your default browser and put control, customization, and protection on autopilot.
+
+onboarding.tour-sync2=Sync
+onboarding.tour-sync.title2=Pick up where you left off.
+onboarding.tour-sync.description2=Sync makes it easy to access bookmarks, passwords, and even open tabs on all your devices. Sync also gives you control of the types of information you want, and don’t want, to share.
+onboarding.tour-sync.logged-in.title=You’re signed in to Sync!
+# LOCALIZATION NOTE(onboarding.tour-sync.logged-in.description): %1$S is brandShortName.
+onboarding.tour-sync.logged-in.description=Sync works when you’re signed in to %1$S on more than one device. Have a mobile device? Install the %1$S app and sign in to get your bookmarks, history, and passwords on the go.
+# LOCALIZATION NOTE(onboarding.tour-sync.form.title): This string is displayed
+# as a title and followed by onboarding.tour-sync.form.description.
+onboarding.tour-sync.form.title=Create a Firefox Account
+# LOCALIZATION NOTE(onboarding.tour-sync.form.description): The description
+# continues after onboarding.tour-sync.form.title to create a complete sentence.
+# If it's not possible for your locale, you can translate this string as
+# "Continue to Firefox Sync" instead.
+onboarding.tour-sync.form.description=to continue to Firefox Sync
+onboarding.tour-sync.button=Next
+onboarding.tour-sync.connect-device.button=Connect Another Device
+onboarding.tour-sync.email-input.placeholder=Email
+onboarding.notification.onboarding-tour-sync.title=Pick up where you left off.
+onboarding.notification.onboarding-tour-sync.message=Still sending yourself links to save or read on your phone? Do it the easy way: get Sync and have the things you save here show up on all of your devices.
+
+onboarding.tour-library=Library
+onboarding.tour-library.title=Keep it together.
+# LOCALIZATION NOTE (onboarding.tour-library.description2): This string will be used in the library tour description. %1$S is brandShortName
+onboarding.tour-library.description2=Check out the new %1$S library in the redesigned toolbar. The library puts the things you’ve seen and saved to %1$S — your browsing history, bookmarks, Pocket list, and synced tabs — in one convenient place.
+onboarding.tour-library.button2=Show Library Menu
+onboarding.notification.onboarding-tour-library.title=Keep it together.
+# LOCALIZATION NOTE(onboarding.notification.onboarding-tour-library.message): This string will be used in the notification message for the library tour. %S is brandShortName
+onboarding.notification.onboarding-tour-library.message=The new %S library puts the great things you’ve discovered on the web in one convenient place.
+
+onboarding.tour-singlesearch=Address Bar
+onboarding.tour-singlesearch.title=Find it faster.
+# LOCALIZATION NOTE(onboarding.tour-singlesearch.description): %S is brandShortName
+onboarding.tour-singlesearch.description=The address bar might be the most powerful tool in the sleek new %S toolbar. Start typing, and see suggestions based on your browsing and search history. Go to a web address, search the whole web with your default search engine, or send your query directly to a single site with one-click search.
+onboarding.tour-singlesearch.button=Show Address Bar
+onboarding.notification.onboarding-tour-singlesearch.title=Find it faster.
+onboarding.notification.onboarding-tour-singlesearch.message=The unified address bar is the only tool you need to find your way around the web.
+
+onboarding.tour-performance=Performance
+onboarding.tour-performance.title=Browse with the best of ‘em.
+# LOCALIZATION NOTE(onboarding.tour-performance.description): %1$S is brandShortName.
+onboarding.tour-performance.description=It’s a whole new %1$S, built for faster page loading, smoother scrolling, and more responsive tab switching. These performance upgrades come paired with a modern, intuitive design. Start browsing and experience it for yourself: the best %1$S yet.
+onboarding.notification.onboarding-tour-performance.title=Browse with the best of ‘em.
+# LOCALIZATION NOTE(onboarding.notification.onboarding-tour-performance.message): %S is brandShortName.
+onboarding.notification.onboarding-tour-performance.message=Prepare yourself for the fastest, smoothest, most reliable %S yet.
+
+# LOCALIZATION NOTE (onboarding.tour-screenshots): "Screenshots" is the name of the Firefox Screenshots feature and should not be localized.
+onboarding.tour-screenshots=Screenshots
+onboarding.tour-screenshots.title=Take better screenshots.
+# LOCALIZATION NOTE(onboarding.tour-screenshots.description): %S is brandShortName.
+onboarding.tour-screenshots.description=Take, save and share screenshots — without leaving %S. Capture a region or an entire page as you browse. Then save to the web for easy access and sharing.
+# LOCALIZATION NOTE (onboarding.tour-screenshots.button): "Screenshots" is the name of the Firefox Screenshots feature and should not be localized.
+onboarding.tour-screenshots.button=Open Screenshots Website
+onboarding.notification.onboarding-tour-screenshots.title=Take better screenshots.
+# LOCALIZATION NOTE(onboarding.notification.onboarding-tour-screenshots.message): %S is brandShortName.
+onboarding.notification.onboarding-tour-screenshots.message=Take, save and share screenshots — without leaving %S.
diff --git a/browser/extensions/onboarding/locales/jar.mn b/browser/extensions/onboarding/locales/jar.mn
new file mode 100644
index 000000000000..0801f8512775
--- /dev/null
+++ b/browser/extensions/onboarding/locales/jar.mn
@@ -0,0 +1,8 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[features/onboarding(a)mozilla.org] @AB_CD@.jar:
+% locale onboarding @AB_CD@ %locale/@AB_CD@/
+ locale/@AB_CD@/onboarding.properties (%onboarding.properties)
diff --git a/browser/extensions/onboarding/locales/moz.build b/browser/extensions/onboarding/locales/moz.build
new file mode 100644
index 000000000000..aac3a838c4c2
--- /dev/null
+++ b/browser/extensions/onboarding/locales/moz.build
@@ -0,0 +1,7 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
diff --git a/browser/extensions/onboarding/manifest.json b/browser/extensions/onboarding/manifest.json
new file mode 100644
index 000000000000..fcf46b444c9b
--- /dev/null
+++ b/browser/extensions/onboarding/manifest.json
@@ -0,0 +1,26 @@
+{
+ "manifest_version": 2,
+ "name": "Onboarding",
+ "version": "1.0",
+
+ "applications": {
+ "gecko": {
+ "id": "onboarding(a)mozilla.org"
+ }
+ },
+
+ "background": {
+ "scripts": ["background.js"]
+ },
+
+ "experiment_apis": {
+ "onboarding": {
+ "schema": "schema.json",
+ "parent": {
+ "scopes": ["addon_parent"],
+ "script": "api.js",
+ "events": ["startup"]
+ }
+ }
+ }
+ }
diff --git a/browser/extensions/onboarding/moz.build b/browser/extensions/onboarding/moz.build
new file mode 100644
index 000000000000..d2f73eb8fd74
--- /dev/null
+++ b/browser/extensions/onboarding/moz.build
@@ -0,0 +1,29 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+with Files("**"):
+ BUG_COMPONENT = ("Firefox", "Tours")
+
+DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION']
+DEFINES['MOZ_APP_MAXVERSION'] = CONFIG['MOZ_APP_MAXVERSION']
+
+DIRS += ['locales']
+
+FINAL_TARGET_FILES.features['onboarding(a)mozilla.org'] += [
+ 'background.js',
+ 'manifest.json',
+ 'schema.json',
+]
+
+FINAL_TARGET_PP_FILES.features['onboarding(a)mozilla.org'] += [
+ 'api.js',
+]
+
+BROWSER_CHROME_MANIFESTS += ['test/browser/browser.ini']
+
+XPCSHELL_TESTS_MANIFESTS += ['test/unit/xpcshell.ini']
+
+JAR_MANIFESTS += ['jar.mn']
diff --git a/browser/extensions/onboarding/schema.json b/browser/extensions/onboarding/schema.json
new file mode 100644
index 000000000000..fe51488c7066
--- /dev/null
+++ b/browser/extensions/onboarding/schema.json
@@ -0,0 +1 @@
+[]
diff --git a/browser/extensions/onboarding/test/browser/.eslintrc.js b/browser/extensions/onboarding/test/browser/.eslintrc.js
new file mode 100644
index 000000000000..9236696e5732
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/.eslintrc.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = {
+ "extends": [
+ "plugin:mozilla/browser-test"
+ ],
+};
diff --git a/browser/extensions/onboarding/test/browser/browser.ini b/browser/extensions/onboarding/test/browser/browser.ini
new file mode 100644
index 000000000000..abc2e915d551
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser.ini
@@ -0,0 +1,18 @@
+[DEFAULT]
+support-files =
+ head.js
+
+[browser_onboarding_accessibility.js]
+[browser_onboarding_keyboard.js]
+skip-if = debug || os == "mac" # Full keyboard navigation on OSX only works if Full Keyboard Access setting is set to All Control in System Keyboard Preferences
+[browser_onboarding_notification.js]
+[browser_onboarding_notification_2.js]
+[browser_onboarding_notification_3.js]
+[browser_onboarding_notification_4.js]
+[browser_onboarding_notification_5.js]
+[browser_onboarding_notification_click_auto_complete_tour.js]
+[browser_onboarding_select_default_tour.js]
+[browser_onboarding_skip_tour.js]
+[browser_onboarding_tours.js]
+[browser_onboarding_tourset.js]
+[browser_onboarding_uitour.js]
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_accessibility.js b/browser/extensions/onboarding/test/browser/browser_onboarding_accessibility.js
new file mode 100644
index 000000000000..37abbd3541d4
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_accessibility.js
@@ -0,0 +1,89 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+ "use strict";
+
+add_task(async function test_onboarding_overlay_button() {
+ resetOnboardingDefaultState();
+
+ info("Wait for onboarding overlay loaded");
+ let tab = await openTab(ABOUT_HOME_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+
+ info("Test accessibility and semantics of the overlay button");
+ await ContentTask.spawn(tab.linkedBrowser, {}, function() {
+ let doc = content.document;
+ let button = doc.body.firstElementChild;
+ is(button.id, "onboarding-overlay-button",
+ "First child is an overlay button");
+ ok(button.getAttribute("aria-label"),
+ "Onboarding button has an accessible label");
+ is(button.getAttribute("aria-haspopup"), "true",
+ "Onboarding button should indicate that it triggers a popup");
+ is(button.getAttribute("aria-controls"), "onboarding-overlay-dialog",
+ "Onboarding button semantically controls an overlay dialog");
+ is(button.firstElementChild.getAttribute("role"), "presentation",
+ "Onboarding button icon should have presentation only semantics");
+ });
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_onboarding_notification_bar() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+
+ info("Test accessibility and semantics of the notification bar");
+ await ContentTask.spawn(tab.linkedBrowser, {}, function() {
+ let doc = content.document;
+ let footer = doc.getElementById("onboarding-notification-bar");
+
+ is(footer.getAttribute("aria-labelledby"), doc.getElementById("onboarding-notification-tour-title").id,
+ "Notification bar should be labelled by the notification tour title text");
+
+ is(footer.getAttribute("aria-live"), "polite",
+ "Notification bar should be a live region");
+ // Presentational elements
+ [
+ "onboarding-notification-message-section",
+ "onboarding-notification-tour-icon",
+ "onboarding-notification-body",
+ ].forEach(id =>
+ is(doc.getElementById(id).getAttribute("role"), "presentation",
+ "Element is only used for presentation"));
+ });
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_onboarding_overlay_dialog() {
+ resetOnboardingDefaultState();
+
+ info("Wait for onboarding overlay loaded");
+ let tab = await openTab(ABOUT_HOME_URL);
+ let browser = tab.linkedBrowser;
+ await promiseOnboardingOverlayLoaded(browser);
+
+ info("Test accessibility and semantics of the dialog overlay");
+ await assertModalDialog(browser, { visible: false });
+
+ info("Click on overlay button and check modal dialog state");
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button",
+ {}, browser);
+ await promiseOnboardingOverlayOpened(browser);
+ await assertModalDialog(browser,
+ { visible: true, focusedId: "onboarding-overlay-dialog" });
+
+ info("Close the dialog and check modal dialog state");
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-close-btn",
+ {}, browser);
+ await promiseOnboardingOverlayClosed(browser);
+ await assertModalDialog(browser, { visible: false });
+
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_keyboard.js b/browser/extensions/onboarding/test/browser/browser_onboarding_keyboard.js
new file mode 100644
index 000000000000..ab9d2ed6afbc
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_keyboard.js
@@ -0,0 +1,137 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+ "use strict";
+
+function assertOverlayState(browser, args) {
+ return ContentTask.spawn(browser, args, ({ tourId, focusedId, visible }) => {
+ let { document: doc, window} = content;
+ if (tourId) {
+ let items = [...doc.querySelectorAll(".onboarding-tour-item")];
+ items.forEach(item => is(item.getAttribute("aria-selected"),
+ item.id === tourId ? "true" : "false",
+ "Active item should have aria-selected set to true and inactive to false"));
+ }
+ if (focusedId) {
+ let focused = doc.getElementById(focusedId);
+ is(focused, doc.activeElement, `Focus should be set on ${focusedId}`);
+ }
+ if (visible !== undefined) {
+ let overlay = doc.getElementById("onboarding-overlay");
+ is(window.getComputedStyle(overlay).getPropertyValue("display"),
+ visible ? "block" : "none",
+ `Onboarding overlay should be ${visible ? "visible" : "invisible"}`);
+ }
+ });
+}
+
+const TOUR_LIST_TEST_DATA = [
+ { key: "VK_DOWN", expected: { tourId: TOUR_IDs[1], focusedId: TOUR_IDs[1] }},
+ { key: "VK_DOWN", expected: { tourId: TOUR_IDs[2], focusedId: TOUR_IDs[2] }},
+ { key: "VK_DOWN", expected: { tourId: TOUR_IDs[3], focusedId: TOUR_IDs[3] }},
+ { key: "VK_DOWN", expected: { tourId: TOUR_IDs[4], focusedId: TOUR_IDs[4] }},
+ { key: "VK_UP", expected: { tourId: TOUR_IDs[3], focusedId: TOUR_IDs[3] }},
+ { key: "VK_UP", expected: { tourId: TOUR_IDs[2], focusedId: TOUR_IDs[2] }},
+ { key: "VK_TAB", expected: { tourId: TOUR_IDs[2], focusedId: TOUR_IDs[3] }},
+ { key: "VK_TAB", expected: { tourId: TOUR_IDs[2], focusedId: TOUR_IDs[4] }},
+ { key: "VK_RETURN", expected: { tourId: TOUR_IDs[4], focusedId: TOUR_IDs[4] }},
+ { key: "VK_TAB", options: { shiftKey: true }, expected: { tourId: TOUR_IDs[4], focusedId: TOUR_IDs[3] }},
+ { key: "VK_TAB", options: { shiftKey: true }, expected: { tourId: TOUR_IDs[4], focusedId: TOUR_IDs[2] }},
+ // VK_SPACE does not work well with EventUtils#synthesizeKey use " " instead
+ { key: " ", expected: { tourId: TOUR_IDs[2], focusedId: TOUR_IDs[2] }},
+];
+
+const BUTTONS_TEST_DATA = [
+ { key: " ", expected: { focusedId: TOUR_IDs[0], visible: true }},
+ { key: "VK_ESCAPE", expected: { focusedId: "onboarding-overlay-button", visible: false }},
+ { key: "VK_RETURN", expected: { focusedId: TOUR_IDs[1], visible: true }},
+ { key: "VK_TAB", options: { shiftKey: true }, expected: { focusedId: TOUR_IDs[0], visible: true }},
+ { key: "VK_TAB", options: { shiftKey: true }, expected: { focusedId: "onboarding-overlay-close-btn", visible: true }},
+ { key: " ", expected: { focusedId: "onboarding-overlay-button", visible: false }},
+ { key: "VK_RETURN", expected: { focusedId: TOUR_IDs[1], visible: true }},
+ { key: "VK_TAB", options: { shiftKey: true }, expected: { focusedId: TOUR_IDs[0], visible: true }},
+ { key: "VK_TAB", options: { shiftKey: true }, expected: { focusedId: "onboarding-overlay-close-btn", visible: true }},
+ { key: "VK_TAB", expected: { focusedId: TOUR_IDs[0], visible: true }},
+ { key: "VK_TAB", options: { shiftKey: true }, expected: { focusedId: "onboarding-overlay-close-btn", visible: true }},
+ { key: "VK_RETURN", expected: { focusedId: "onboarding-overlay-button", visible: false }},
+];
+
+add_task(async function test_tour_list_keyboard_navigation() {
+ resetOnboardingDefaultState();
+
+ info("Display onboarding overlay on the home page");
+ let tab = await openTab(ABOUT_HOME_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button",
+ {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+
+ info("Checking overall overlay tablist semantics");
+ await assertOverlaySemantics(tab.linkedBrowser);
+
+ info("Set initial focus on the currently active tab");
+ await ContentTask.spawn(tab.linkedBrowser, {}, () =>
+ content.document.querySelector(".onboarding-active").focus());
+ await assertOverlayState(tab.linkedBrowser,
+ { tourId: TOUR_IDs[0], focusedId: TOUR_IDs[0] });
+
+ for (let { key, options = {}, expected } of TOUR_LIST_TEST_DATA) {
+ info(`Pressing ${key} to select ${expected.tourId} and have focus on ${expected.focusedId}`);
+ await BrowserTestUtils.synthesizeKey(key, options, tab.linkedBrowser);
+ await assertOverlayState(tab.linkedBrowser, expected);
+ }
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_buttons_keyboard_navigation() {
+ resetOnboardingDefaultState();
+
+ info("Wait for onboarding overlay loaded");
+ let tab = await openTab(ABOUT_HOME_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+
+ info("Set keyboard focus on the onboarding overlay button");
+ await ContentTask.spawn(tab.linkedBrowser, {}, () =>
+ content.document.getElementById("onboarding-overlay-button").focus());
+ await assertOverlayState(tab.linkedBrowser,
+ { focusedId: "onboarding-overlay-button", visible: false });
+
+ for (let { key, options = {}, expected } of BUTTONS_TEST_DATA) {
+ info(`Pressing ${key} to have ${expected.visible ? "visible" : "invisible"} overlay and have focus on ${expected.focusedId}`);
+ await BrowserTestUtils.synthesizeKey(key, options, tab.linkedBrowser);
+ await assertOverlayState(tab.linkedBrowser, expected);
+ }
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_overlay_dialog_keyboard_navigation() {
+ resetOnboardingDefaultState();
+
+ info("Wait for onboarding overlay loaded");
+ let tab = await openTab(ABOUT_HOME_URL);
+ let browser = tab.linkedBrowser;
+ await promiseOnboardingOverlayLoaded(browser);
+
+ info("Test accessibility and semantics of the dialog overlay");
+ await assertModalDialog(browser, { visible: false });
+
+ info("Set keyboard focus on the onboarding overlay button");
+ await ContentTask.spawn(browser, {}, () =>
+ content.document.getElementById("onboarding-overlay-button").focus());
+ info("Open dialog with keyboard and check the dialog state");
+ await BrowserTestUtils.synthesizeKey(" ", {}, browser);
+ await promiseOnboardingOverlayOpened(browser);
+ await assertModalDialog(browser,
+ { visible: true, keyboardFocus: true, focusedId: TOUR_IDs[0] });
+
+ info("Close the dialog and check modal dialog state");
+ await BrowserTestUtils.synthesizeKey("VK_ESCAPE", {}, browser);
+ await promiseOnboardingOverlayClosed(browser);
+ await assertModalDialog(browser,
+ { visible: false, keyboardFocus: true, focusedId: "onboarding-overlay-button" });
+
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_notification.js b/browser/extensions/onboarding/test/browser/browser_onboarding_notification.js
new file mode 100644
index 000000000000..b3e7fc788681
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_notification.js
@@ -0,0 +1,62 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+requestLongerTimeout(3);
+
+add_task(async function test_show_tour_notifications_in_order() {
+ resetOnboardingDefaultState();
+ Preferences.set("browser.onboarding.notification.max-prompt-count-per-tour", 1);
+ skipMuteNotificationOnFirstSession();
+
+ let tourIds = TOUR_IDs;
+ let tab = null;
+ let targetTourId = null;
+ let expectedPrefUpdates = null;
+ await loopTourNotificationQueueOnceInOrder();
+ await loopTourNotificationQueueOnceInOrder();
+
+ expectedPrefUpdates = Promise.all([
+ promisePrefUpdated("browser.onboarding.notification.finished", true),
+ promisePrefUpdated("browser.onboarding.state", ICON_STATE_WATERMARK),
+ ]);
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await expectedPrefUpdates;
+ await assertWatermarkIconDisplayed(tab.linkedBrowser);
+ let tourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ ok(!tourId, "Should not prompt each tour for more than 2 chances.");
+ BrowserTestUtils.removeTab(tab);
+
+ async function loopTourNotificationQueueOnceInOrder() {
+ for (let i = 0; i < tourIds.length; ++i) {
+ if (tab) {
+ await reloadTab(tab);
+ } else {
+ tab = await openTab(ABOUT_NEWTAB_URL);
+ }
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ targetTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ is(targetTourId, tourIds[i], "Should show tour notifications in order");
+ }
+ }
+});
+
+add_task(async function test_open_target_tour_from_notification() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let targetTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-notification-action-btn", {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+ let { activeNavItemId, activePageId } = await getCurrentActiveTour(tab.linkedBrowser);
+
+ is(targetTourId, activeNavItemId, "Should navigate to the target tour item.");
+ is(`${targetTourId}-page`, activePageId, "Should display the target tour page.");
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_notification_2.js b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_2.js
new file mode 100644
index 000000000000..966102099f50
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_2.js
@@ -0,0 +1,80 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+requestLongerTimeout(3);
+
+add_task(async function test_not_show_notification_for_completed_tour() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+
+ let tourIds = TOUR_IDs;
+ // Make only the last tour uncompleted
+ let lastTourId = tourIds[tourIds.length - 1];
+ for (let id of tourIds) {
+ if (id != lastTourId) {
+ setTourCompletedState(id, true);
+ }
+ }
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let targetTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ is(targetTourId, lastTourId, "Should not show notification for completed tour");
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_skip_notification_for_completed_tour() {
+ resetOnboardingDefaultState();
+ Preferences.set("browser.onboarding.notification.max-prompt-count-per-tour", 1);
+ skipMuteNotificationOnFirstSession();
+
+ let tourIds = TOUR_IDs;
+ // Make only 2nd tour completed
+ await setTourCompletedState(tourIds[1], true);
+
+ // Test show notification for the 1st tour
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let targetTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ is(targetTourId, tourIds[0], "Should show notification for incompleted tour");
+
+ // Test skip the 2nd tour and show notification for the 3rd tour
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ targetTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ is(targetTourId, tourIds[2], "Should skip notification for the completed 2nd tour");
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_mute_notification_on_1st_session() {
+ resetOnboardingDefaultState();
+
+ // Test no notifications during the mute duration on the 1st session
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ // The tour notification would be prompted on idle, so we wait idle twice here before proceeding
+ await waitUntilWindowIdle(tab.linkedBrowser);
+ await waitUntilWindowIdle(tab.linkedBrowser);
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await waitUntilWindowIdle(tab.linkedBrowser);
+ await waitUntilWindowIdle(tab.linkedBrowser);
+ let promptCount = Preferences.get("browser.onboarding.notification.prompt-count", 0);
+ is(0, promptCount, "Should not prompt tour notification during the mute duration on the 1st session");
+
+ // Test notification prompted after the mute duration on the 1st session
+ let muteTime = Preferences.get("browser.onboarding.notification.mute-duration-on-first-session-ms");
+ let lastTime = Math.floor((Date.now() - muteTime - 1) / 1000);
+ Preferences.set("browser.onboarding.notification.last-time-of-changing-tour-sec", lastTime);
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ promptCount = Preferences.get("browser.onboarding.notification.prompt-count", 0);
+ is(1, promptCount, "Should prompt tour notification after the mute duration on the 1st session");
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_notification_3.js b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_3.js
new file mode 100644
index 000000000000..0010cd90263b
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_3.js
@@ -0,0 +1,82 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+requestLongerTimeout(3);
+
+add_task(async function test_move_on_to_next_notification_when_reaching_max_prompt_count() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+ let maxCount = Preferences.get("browser.onboarding.notification.max-prompt-count-per-tour");
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let previousTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+
+ let currentTourId = null;
+ for (let i = maxCount - 1; i > 0; --i) {
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ currentTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ is(previousTourId, currentTourId, "Should not move on to next tour notification until reaching the max prompt count per tour");
+ }
+
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ currentTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ isnot(previousTourId, currentTourId, "Should move on to next tour notification when reaching the max prompt count per tour");
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_move_on_to_next_notification_when_reaching_max_life_time() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let previousTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+
+ let maxTime = Preferences.get("browser.onboarding.notification.max-life-time-per-tour-ms");
+ let lastTime = Math.floor((Date.now() - maxTime - 1) / 1000);
+ Preferences.set("browser.onboarding.notification.last-time-of-changing-tour-sec", lastTime);
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let currentTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ isnot(previousTourId, currentTourId, "Should move on to next tour notification when reaching the max life time per tour");
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_move_on_to_next_notification_after_interacting_with_notification() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let previousTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-notification-close-btn", {}, tab.linkedBrowser);
+
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let currentTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ isnot(previousTourId, currentTourId, "Should move on to next tour notification after clicking #onboarding-notification-close-btn");
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-notification-action-btn", {}, tab.linkedBrowser);
+ previousTourId = currentTourId;
+
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ currentTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ isnot(previousTourId, currentTourId, "Should move on to next tour notification after clicking #onboarding-notification-action-btn");
+
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_notification_4.js b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_4.js
new file mode 100644
index 000000000000..57e8ce840f2a
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_4.js
@@ -0,0 +1,84 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+requestLongerTimeout(3);
+
+add_task(async function test_remove_all_tour_notifications_through_close_button() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+
+ let tourIds = TOUR_IDs;
+ let tab = null;
+ let targetTourId = null;
+ await closeTourNotificationsOneByOne();
+
+ let expectedPrefUpdates = [
+ promisePrefUpdated("browser.onboarding.notification.finished", true),
+ promisePrefUpdated("browser.onboarding.state", ICON_STATE_WATERMARK),
+ ];
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await Promise.all(expectedPrefUpdates);
+ await assertWatermarkIconDisplayed(tab.linkedBrowser);
+
+ let tourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ ok(!tourId, "Should not prompt tour notifications any more after closing all notifcations.");
+ BrowserTestUtils.removeTab(tab);
+
+ async function closeTourNotificationsOneByOne() {
+ for (let i = 0; i < tourIds.length; ++i) {
+ if (tab) {
+ await reloadTab(tab);
+ } else {
+ tab = await openTab(ABOUT_NEWTAB_URL);
+ }
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ targetTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ is(targetTourId, tourIds[i], `Should show tour notifications of ${targetTourId}`);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-notification-close-btn", {}, tab.linkedBrowser);
+ await promiseTourNotificationClosed(tab.linkedBrowser);
+ }
+ }
+});
+
+add_task(async function test_remove_all_tour_notifications_through_action_button() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+
+ let tourIds = TOUR_IDs;
+ let tab = null;
+ let targetTourId = null;
+ await clickTourNotificationActionButtonsOneByOne();
+
+ let expectedPrefUpdates = [
+ promisePrefUpdated("browser.onboarding.notification.finished", true),
+ promisePrefUpdated("browser.onboarding.state", ICON_STATE_WATERMARK),
+ ];
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await Promise.all(expectedPrefUpdates);
+ await assertWatermarkIconDisplayed(tab.linkedBrowser);
+
+ let tourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ ok(!tourId, "Should not prompt tour notifcations any more after taking actions on all notifcations.");
+ BrowserTestUtils.removeTab(tab);
+
+ async function clickTourNotificationActionButtonsOneByOne() {
+ for (let i = 0; i < tourIds.length; ++i) {
+ if (tab) {
+ await reloadTab(tab);
+ } else {
+ tab = await openTab(ABOUT_NEWTAB_URL);
+ }
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ targetTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ is(targetTourId, tourIds[i], `Should show tour notifications of ${targetTourId}`);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-notification-action-btn", {}, tab.linkedBrowser);
+ await promiseTourNotificationClosed(tab.linkedBrowser);
+ }
+ }
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_notification_5.js b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_5.js
new file mode 100644
index 000000000000..9fd2f25dfe4f
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_5.js
@@ -0,0 +1,25 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+add_task(async function test_finish_tour_notifcations_after_total_max_life_time() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+
+ let totalMaxTime = Preferences.get("browser.onboarding.notification.max-life-time-all-tours-ms");
+ Preferences.set("browser.onboarding.notification.last-time-of-changing-tour-sec", Math.floor((Date.now() - totalMaxTime) / 1000));
+ let expectedPrefUpdates = Promise.all([
+ promisePrefUpdated("browser.onboarding.notification.finished", true),
+ promisePrefUpdated("browser.onboarding.state", ICON_STATE_WATERMARK),
+ ]);
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await expectedPrefUpdates;
+ await assertWatermarkIconDisplayed(tab.linkedBrowser);
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_notification_click_auto_complete_tour.js b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_click_auto_complete_tour.js
new file mode 100644
index 000000000000..c505b62f7d38
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_notification_click_auto_complete_tour.js
@@ -0,0 +1,33 @@
+add_task(async function test_show_click_auto_complete_tour_in_notification() {
+ resetOnboardingDefaultState();
+ skipMuteNotificationOnFirstSession();
+ // the second tour is an click-auto-complete tour
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.newtour", "customize,library"],
+ ]});
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+
+ // Trigger CTA button to mark the tour as complete
+ let expectedPrefUpdates = [
+ promisePrefUpdated(`browser.onboarding.tour.onboarding-tour-customize.completed`, true),
+ ];
+ BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-tour-customize", {}, tab.linkedBrowser);
+ BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-tour-customize-button", {}, tab.linkedBrowser);
+ await Promise.all(expectedPrefUpdates);
+
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-close-btn", {}, gBrowser.selectedBrowser);
+ let { activeNavItemId } = await getCurrentActiveTour(tab.linkedBrowser);
+ is("onboarding-tour-customize", activeNavItemId, "the active tour should be the previous shown tour");
+
+ await reloadTab(tab);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await promiseTourNotificationOpened(tab.linkedBrowser);
+ let targetTourId = await getCurrentNotificationTargetTourId(tab.linkedBrowser);
+ is("onboarding-tour-library", targetTourId, "correctly show the click-autocomplete-tour in notification");
+
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_select_default_tour.js b/browser/extensions/onboarding/test/browser/browser_onboarding_select_default_tour.js
new file mode 100644
index 000000000000..37f345f515fa
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_select_default_tour.js
@@ -0,0 +1,80 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+const OVERLAY_ICON_ID = "#onboarding-overlay-button";
+const PRIVATE_BROWSING_TOUR_ID = "#onboarding-tour-private-browsing";
+const ADDONS_TOUR_ID = "#onboarding-tour-addons";
+const CUSTOMIZE_TOUR_ID = "#onboarding-tour-customize";
+const CLASS_ACTIVE = "onboarding-active";
+
+add_task(async function test_default_tour_open_the_right_page() {
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.tour-type", "new"],
+ ["browser.onboarding.tourset-version", 1],
+ ["browser.onboarding.seen-tourset-version", 1],
+ ["browser.onboarding.newtour", "private,addons,customize"],
+ ]});
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter(OVERLAY_ICON_ID, {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+
+ info("Make sure the default tour is active and open the right page");
+ let { activeNavItemId, activePageId } = await getCurrentActiveTour(tab.linkedBrowser);
+ is(`#${activeNavItemId}`, PRIVATE_BROWSING_TOUR_ID, "default tour is active");
+ is(activePageId, "onboarding-tour-private-browsing-page", "default tour page is shown");
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_select_first_uncomplete_tour() {
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.tour-type", "new"],
+ ["browser.onboarding.tourset-version", 1],
+ ["browser.onboarding.seen-tourset-version", 1],
+ ["browser.onboarding.newtour", "private,addons,customize"],
+ ]});
+ setTourCompletedState("onboarding-tour-private-browsing", true);
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter(OVERLAY_ICON_ID, {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+
+ info("Make sure the first uncomplete tour is selected");
+ let { activeNavItemId, activePageId } = await getCurrentActiveTour(tab.linkedBrowser);
+ is(`#${activeNavItemId}`, ADDONS_TOUR_ID, "default tour is active");
+ is(activePageId, "onboarding-tour-addons-page", "default tour page is shown");
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_select_first_tour_when_all_tours_are_complete() {
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.tour-type", "new"],
+ ["browser.onboarding.tourset-version", 1],
+ ["browser.onboarding.seen-tourset-version", 1],
+ ["browser.onboarding.newtour", "private,addons,customize"],
+ ]});
+ setTourCompletedState("onboarding-tour-private-browsing", true);
+ setTourCompletedState("onboarding-tour-addons", true);
+ setTourCompletedState("onboarding-tour-customize", true);
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter(OVERLAY_ICON_ID, {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+
+ info("Make sure the first tour is selected when all tours are completed");
+ let { activeNavItemId, activePageId } = await getCurrentActiveTour(tab.linkedBrowser);
+ is(`#${activeNavItemId}`, PRIVATE_BROWSING_TOUR_ID, "default tour is active");
+ is(activePageId, "onboarding-tour-private-browsing-page", "default tour page is shown");
+
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_skip_tour.js b/browser/extensions/onboarding/test/browser/browser_onboarding_skip_tour.js
new file mode 100644
index 000000000000..58b2870ce7e6
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_skip_tour.js
@@ -0,0 +1,47 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+ "use strict";
+
+add_task(async function test_skip_onboarding_tours() {
+ resetOnboardingDefaultState();
+
+ let tourIds = TOUR_IDs;
+ let expectedPrefUpdates = [
+ promisePrefUpdated("browser.onboarding.notification.finished", true),
+ promisePrefUpdated("browser.onboarding.state", ICON_STATE_WATERMARK),
+ ];
+ tourIds.forEach((id, idx) => expectedPrefUpdates.push(promisePrefUpdated(`browser.onboarding.tour.${id}.completed`, true)));
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+
+ let overlayClosedPromise = promiseOnboardingOverlayClosed(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-skip-tour-button", {}, tab.linkedBrowser);
+ await overlayClosedPromise;
+ await Promise.all(expectedPrefUpdates);
+ await assertWatermarkIconDisplayed(tab.linkedBrowser);
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_hide_skip_button_via_perf() {
+ resetOnboardingDefaultState();
+ Preferences.set("browser.onboarding.skip-tour-button.hide", true);
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ let browser = tab.linkedBrowser;
+ await promiseOnboardingOverlayLoaded(browser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, browser);
+ await promiseOnboardingOverlayOpened(browser);
+
+ let hasTourButton = await ContentTask.spawn(browser, null, () => {
+ return content.document.querySelector("#onboarding-skip-tour-button") != null;
+ });
+
+ ok(!hasTourButton, "should not render the skip button");
+
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js b/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js
new file mode 100644
index 000000000000..612c06ea6e25
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_tours.js
@@ -0,0 +1,115 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+ "use strict";
+
+requestLongerTimeout(2);
+
+function assertTourCompleted(tourId, expectComplete, browser) {
+ return ContentTask.spawn(browser, { tourId, expectComplete }, function(args) {
+ let item = content.document.querySelector(`#${args.tourId}.onboarding-tour-item`);
+ let completedTextId = `onboarding-complete-${args.tourId}-text`;
+ let completedText = item.querySelector(`#${completedTextId}`);
+ if (args.expectComplete) {
+ ok(item.classList.contains("onboarding-complete"), `Should set the complete #${args.tourId} tour with the complete style`);
+ ok(completedText, "Text label should be present for a completed item");
+ is(completedText.id, completedTextId, "Text label node should have a unique id");
+ ok(completedText.getAttribute("aria-label"), "Text label node should have an aria-label attribute set");
+ is(item.getAttribute("aria-describedby"), completedTextId,
+ "Completed item should have aria-describedby attribute set to text label node's id");
+ } else {
+ ok(!item.classList.contains("onboarding-complete"), `Should not set the incomplete #${args.tourId} tour with the complete style`);
+ ok(!completedText, "Text label should not be present for an incomplete item");
+ ok(!item.hasAttribute("aria-describedby"), "Incomplete item should not have aria-describedby attribute set");
+ }
+ });
+}
+
+add_task(async function test_set_right_tour_completed_style_on_overlay() {
+ resetOnboardingDefaultState();
+
+ let tourIds = TOUR_IDs;
+ // Mark the tours of even number as completed
+ for (let i = 0; i < tourIds.length; ++i) {
+ setTourCompletedState(tourIds[i], i % 2 == 0);
+ }
+
+ let tabs = [];
+ for (let url of URLs) {
+ let tab = await openTab(url);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+ tabs.push(tab);
+ }
+
+ for (let i = tabs.length - 1; i >= 0; --i) {
+ let tab = tabs[i];
+ await assertOverlaySemantics(tab.linkedBrowser);
+ for (let j = 0; j < tourIds.length; ++j) {
+ await assertTourCompleted(tourIds[j], j % 2 == 0, tab.linkedBrowser);
+ }
+ BrowserTestUtils.removeTab(tab);
+ }
+});
+
+add_task(async function test_click_action_button_to_set_tour_completed() {
+ resetOnboardingDefaultState();
+ const CUSTOM_TOUR_IDs = [
+ "onboarding-tour-private-browsing",
+ "onboarding-tour-addons",
+ "onboarding-tour-customize",
+ ];
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.newtour", "private,addons,customize"],
+ ]});
+
+ let tourIds = CUSTOM_TOUR_IDs;
+ let tabs = [];
+ for (let url of URLs) {
+ let tab = await openTab(url);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+ tabs.push(tab);
+ }
+
+ let completedTourId = tourIds[0];
+ let expectedPrefUpdate = promisePrefUpdated(`browser.onboarding.tour.${completedTourId}.completed`, true);
+ await BrowserTestUtils.synthesizeMouseAtCenter(`#${completedTourId}-page .onboarding-tour-action-button`, {}, gBrowser.selectedBrowser);
+ await expectedPrefUpdate;
+
+ for (let i = tabs.length - 1; i >= 0; --i) {
+ let tab = tabs[i];
+ await assertOverlaySemantics(tab.linkedBrowser);
+ for (let id of tourIds) {
+ await assertTourCompleted(id, id == completedTourId, tab.linkedBrowser);
+ }
+ BrowserTestUtils.removeTab(tab);
+ }
+});
+
+add_task(async function test_set_watermark_after_all_tour_completed() {
+ resetOnboardingDefaultState();
+
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.tour-type", "new"],
+ ]});
+
+ let tabs = [];
+ for (let url of URLs) {
+ let tab = await openTab(url);
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayOpened(tab.linkedBrowser);
+ tabs.push(tab);
+ }
+ let expectedPrefUpdate = promisePrefUpdated("browser.onboarding.state", ICON_STATE_WATERMARK);
+ TOUR_IDs.forEach(id => Preferences.set(`browser.onboarding.tour.${id}.completed`, true));
+ await expectedPrefUpdate;
+
+ for (let tab of tabs) {
+ await assertWatermarkIconDisplayed(tab.linkedBrowser);
+ BrowserTestUtils.removeTab(tab);
+ }
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js b/browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js
new file mode 100644
index 000000000000..3bbc50b69083
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_tourset.js
@@ -0,0 +1,82 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+requestLongerTimeout(2);
+
+async function testTourIDs(browser, tourIDs) {
+ await ContentTask.spawn(browser, tourIDs, async (tourIDsContent) => {
+ let doc = content.document;
+ let doms = doc.querySelectorAll(".onboarding-tour-item");
+ Assert.equal(doms.length, tourIDsContent.length, "has exact tour numbers");
+ doms.forEach((dom, idx) => {
+ Assert.equal(tourIDsContent[idx], dom.id, "contain defined onboarding id");
+ });
+ });
+}
+
+add_task(async function test_onboarding_default_new_tourset() {
+ resetOnboardingDefaultState();
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ let browser = tab.linkedBrowser;
+ await promiseOnboardingOverlayLoaded(browser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, browser);
+ await promiseOnboardingOverlayOpened(browser);
+
+ await testTourIDs(browser, TOUR_IDs);
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_onboarding_custom_new_tourset() {
+ const CUSTOM_NEW_TOURs = [
+ "onboarding-tour-private-browsing",
+ "onboarding-tour-addons",
+ "onboarding-tour-customize",
+ ];
+
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.tour-type", "new"],
+ ["browser.onboarding.tourset-version", 1],
+ ["browser.onboarding.seen-tourset-version", 1],
+ ["browser.onboarding.newtour", "private,addons,customize"],
+ ]});
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ let browser = tab.linkedBrowser;
+ await promiseOnboardingOverlayLoaded(browser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, browser);
+ await promiseOnboardingOverlayOpened(browser);
+
+ await testTourIDs(browser, CUSTOM_NEW_TOURs);
+
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_onboarding_custom_update_tourset() {
+ const CUSTOM_UPDATE_TOURs = [
+ "onboarding-tour-customize",
+ "onboarding-tour-private-browsing",
+ "onboarding-tour-addons",
+ ];
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.tour-type", "update"],
+ ["browser.onboarding.tourset-version", 1],
+ ["browser.onboarding.seen-tourset-version", 1],
+ ["browser.onboarding.updatetour", "customize,private,addons"],
+ ]});
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ let browser = tab.linkedBrowser;
+ await promiseOnboardingOverlayLoaded(browser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, browser);
+ await promiseOnboardingOverlayOpened(browser);
+
+ await testTourIDs(browser, CUSTOM_UPDATE_TOURs);
+
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/browser_onboarding_uitour.js b/browser/extensions/onboarding/test/browser/browser_onboarding_uitour.js
new file mode 100644
index 000000000000..716dd59651e4
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/browser_onboarding_uitour.js
@@ -0,0 +1,167 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+requestLongerTimeout(3);
+
+function promisePopupChange(popup, expectedState) {
+ return new Promise(resolve => {
+ let event = expectedState == "open" ? "popupshown" : "popuphidden";
+ popup.addEventListener(event, resolve, { once: true });
+ });
+}
+
+async function promiseOpenOnboardingOverlay(tab) {
+ await promiseOnboardingOverlayLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-overlay-button", {}, tab.linkedBrowser);
+ return promiseOnboardingOverlayOpened(tab.linkedBrowser);
+}
+
+async function triggerUITourHighlight(tourName, tab) {
+ await promiseOpenOnboardingOverlay(tab);
+ BrowserTestUtils.synthesizeMouseAtCenter(`#onboarding-tour-${tourName}`, {}, tab.linkedBrowser);
+ BrowserTestUtils.synthesizeMouseAtCenter(`#onboarding-tour-${tourName}-button`, {}, tab.linkedBrowser);
+}
+
+add_task(async function test_clean_up_uitour_after_closing_overlay() {
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.newtour", "library"],
+ ]});
+
+ // Trigger UITour showHighlight
+ let highlight = document.getElementById("UITourHighlightContainer");
+ let highlightOpenPromise = promisePopupChange(highlight, "open");
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await triggerUITourHighlight("library", tab);
+ await highlightOpenPromise;
+ is(highlight.state, "open", "Should show UITour highlight");
+ is(highlight.getAttribute("targetName"), "library", "UITour should highlight library");
+
+ // Close the overlay by clicking the overlay
+ let highlightClosePromise = promisePopupChange(highlight, "closed");
+ BrowserTestUtils.synthesizeMouseAtPoint(2, 2, {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayClosed(tab.linkedBrowser);
+ await highlightClosePromise;
+ is(highlight.state, "closed", "Should close UITour highlight after closing the overlay by clicking the overlay");
+
+ // Trigger UITour showHighlight again
+ highlightOpenPromise = promisePopupChange(highlight, "open");
+ await triggerUITourHighlight("library", tab);
+ await highlightOpenPromise;
+ is(highlight.state, "open", "Should show UITour highlight");
+ is(highlight.getAttribute("targetName"), "library", "UITour should highlight library");
+
+ // Close the overlay by clicking the skip-tour button
+ highlightClosePromise = promisePopupChange(highlight, "closed");
+ BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-skip-tour-btn", {}, tab.linkedBrowser);
+ await promiseOnboardingOverlayClosed(tab.linkedBrowser);
+ await highlightClosePromise;
+ is(highlight.state, "closed", "Should close UITour highlight after closing the overlay by clicking the skip-tour button");
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_clean_up_uitour_after_navigating_to_other_tour_by_keyboard() {
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.newtour", "singlesearch,customize"],
+ ]});
+
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await promiseOpenOnboardingOverlay(tab);
+
+ // Navigate to the Customize tour to trigger UITour showHighlight
+ let highlight = document.getElementById("UITourHighlightContainer");
+ let highlightOpenPromise = promisePopupChange(highlight, "open");
+ tab.linkedBrowser.focus(); // Make sure the key event will be fired on the focused page
+ await BrowserTestUtils.synthesizeKey("VK_TAB", {}, tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeKey("VK_TAB", {}, tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeKey("VK_TAB", {}, tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, tab.linkedBrowser);
+ await highlightOpenPromise;
+ is(highlight.state, "open", "Should show UITour highlight");
+ is(highlight.getAttribute("targetName"), "customize", "UITour should highlight customize");
+
+ // Navigate to the Single-Search tour
+ let highlightClosePromise = promisePopupChange(highlight, "closed");
+ tab.linkedBrowser.focus(); // Make sure the key event will be fired on the focused page
+ await BrowserTestUtils.synthesizeKey("VK_TAB", { shiftKey: true }, tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeKey("VK_TAB", { shiftKey: true }, tab.linkedBrowser);
+ await BrowserTestUtils.synthesizeKey("VK_RETURN", {}, tab.linkedBrowser);
+ await highlightClosePromise;
+ is(highlight.state, "closed", "Should close UITour highlight after navigating to another tour by keyboard");
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_clean_up_uitour_after_navigating_to_other_tour_by_mouse() {
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.newtour", "singlesearch,customize"],
+ ]});
+
+ // Navigate to the Customize tour to trigger UITour showHighlight
+ let highlight = document.getElementById("UITourHighlightContainer");
+ let highlightOpenPromise = promisePopupChange(highlight, "open");
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await triggerUITourHighlight("customize", tab);
+ await highlightOpenPromise;
+ is(highlight.state, "open", "Should show UITour highlight");
+ is(highlight.getAttribute("targetName"), "customize", "UITour should highlight customize");
+
+ // Navigate to the Single-Search tour
+ let highlightClosePromise = promisePopupChange(highlight, "closed");
+ BrowserTestUtils.synthesizeMouseAtCenter("#onboarding-tour-singlesearch", {}, tab.linkedBrowser);
+ await highlightClosePromise;
+ is(highlight.state, "closed", "Should close UITour highlight after navigating to another tour by mouse");
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_clean_up_uitour_on_page_unload() {
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.newtour", "singlesearch,customize"],
+ ]});
+
+ // Trigger UITour showHighlight
+ let highlight = document.getElementById("UITourHighlightContainer");
+ let highlightOpenPromise = promisePopupChange(highlight, "open");
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await triggerUITourHighlight("customize", tab);
+ await highlightOpenPromise;
+ is(highlight.state, "open", "Should show UITour highlight");
+ is(highlight.getAttribute("targetName"), "customize", "UITour should highlight customize");
+
+ // Load another page to unload the current page
+ let highlightClosePromise = promisePopupChange(highlight, "closed");
+ await BrowserTestUtils.loadURI(tab.linkedBrowser, "http://example.com");
+ await highlightClosePromise;
+ is(highlight.state, "closed", "Should close UITour highlight after page unloaded");
+ BrowserTestUtils.removeTab(tab);
+});
+
+add_task(async function test_clean_up_uitour_on_window_resize() {
+ resetOnboardingDefaultState();
+ await SpecialPowers.pushPrefEnv({set: [
+ ["browser.onboarding.newtour", "singlesearch,customize"],
+ ]});
+
+ // Trigger UITour showHighlight
+ let highlight = document.getElementById("UITourHighlightContainer");
+ let highlightOpenPromise = promisePopupChange(highlight, "open");
+ let tab = await openTab(ABOUT_NEWTAB_URL);
+ await triggerUITourHighlight("customize", tab);
+ await highlightOpenPromise;
+ is(highlight.state, "open", "Should show UITour highlight");
+ is(highlight.getAttribute("targetName"), "customize", "UITour should highlight customize");
+
+ // Resize window to destroy the onboarding tour
+ const originalWidth = window.innerWidth;
+ let highlightClosePromise = promisePopupChange(highlight, "closed");
+ window.innerWidth = 300;
+ await highlightClosePromise;
+ is(highlight.state, "closed", "Should close UITour highlight after window resized");
+ window.innerWidth = originalWidth;
+ BrowserTestUtils.removeTab(tab);
+});
diff --git a/browser/extensions/onboarding/test/browser/head.js b/browser/extensions/onboarding/test/browser/head.js
new file mode 100644
index 000000000000..9a66f60df88a
--- /dev/null
+++ b/browser/extensions/onboarding/test/browser/head.js
@@ -0,0 +1,288 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+let { Preferences } = ChromeUtils.import("resource://gre/modules/Preferences.jsm", {});
+
+const ABOUT_HOME_URL = "about:home";
+const ABOUT_NEWTAB_URL = "about:newtab";
+const URLs = [ABOUT_HOME_URL, ABOUT_NEWTAB_URL];
+const TOUR_IDs = [
+ "onboarding-tour-performance",
+ "onboarding-tour-private-browsing",
+ "onboarding-tour-screenshots",
+ "onboarding-tour-addons",
+ "onboarding-tour-customize",
+ "onboarding-tour-default-browser",
+];
+const UPDATE_TOUR_IDs = [
+ "onboarding-tour-performance",
+ "onboarding-tour-library",
+ "onboarding-tour-screenshots",
+ "onboarding-tour-singlesearch",
+ "onboarding-tour-customize",
+ "onboarding-tour-sync",
+];
+const ICON_STATE_WATERMARK = "watermark";
+const ICON_STATE_DEFAULT = "default";
+
+registerCleanupFunction(resetOnboardingDefaultState);
+
+function resetOnboardingDefaultState() {
+ // All the prefs should be reset to the default states
+ // and no need to revert back so we don't use `SpecialPowers.pushPrefEnv` here.
+ Preferences.set("browser.onboarding.enabled", true);
+ Preferences.set("browser.onboarding.state", ICON_STATE_DEFAULT);
+ Preferences.set("browser.onboarding.notification.finished", false);
+ Preferences.set("browser.onboarding.notification.mute-duration-on-first-session-ms", 300000);
+ Preferences.set("browser.onboarding.notification.max-life-time-per-tour-ms", 432000000);
+ Preferences.set("browser.onboarding.notification.max-life-time-all-tours-ms", 1209600000);
+ Preferences.set("browser.onboarding.notification.max-prompt-count-per-tour", 8);
+ Preferences.reset("browser.onboarding.notification.last-time-of-changing-tour-sec");
+ Preferences.reset("browser.onboarding.notification.prompt-count");
+ Preferences.reset("browser.onboarding.notification.tour-ids-queue");
+ Preferences.reset("browser.onboarding.skip-tour-button.hide");
+ TOUR_IDs.forEach(id => Preferences.reset(`browser.onboarding.tour.${id}.completed`));
+ UPDATE_TOUR_IDs.forEach(id => Preferences.reset(`browser.onboarding.tour.${id}.completed`));
+}
+
+function setTourCompletedState(tourId, state) {
+ Preferences.set(`browser.onboarding.tour.${tourId}.completed`, state);
+}
+
+async function openTab(url) {
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
+ let loadedPromise = BrowserTestUtils.browserLoaded(tab.linkedBrowser);
+ await BrowserTestUtils.loadURI(tab.linkedBrowser, url);
+ await loadedPromise;
+ return tab;
+}
+
+function reloadTab(tab) {
+ let reloadPromise = BrowserTestUtils.browserLoaded(tab.linkedBrowser);
+ tab.linkedBrowser.reload();
+ return reloadPromise;
+}
+
+function promiseOnboardingOverlayLoaded(browser) {
+ function isLoaded() {
+ let doc = content && content.document;
+ if (doc.querySelector("#onboarding-overlay")) {
+ ok(true, "Should load onboarding overlay");
+ return Promise.resolve();
+ }
+ return new Promise(resolve => {
+ let observer = new content.MutationObserver(mutations => {
+ mutations.forEach(mutation => {
+ let overlay = Array.from(mutation.addedNodes)
+ .find(node => node.id == "onboarding-overlay");
+ if (overlay) {
+ observer.disconnect();
+ ok(true, "Should load onboarding overlay");
+ resolve();
+ }
+ });
+ });
+ observer.observe(doc.body, { childList: true });
+ });
+ }
+ return ContentTask.spawn(browser, {}, isLoaded);
+}
+
+function promiseOnboardingOverlayOpened(browser) {
+ return BrowserTestUtils.waitForCondition(() =>
+ ContentTask.spawn(browser, {}, () =>
+ content.document.querySelector("#onboarding-overlay").classList.contains(
+ "onboarding-opened")),
+ "Should open onboarding overlay",
+ 100,
+ 30
+ );
+}
+
+function promiseOnboardingOverlayClosed(browser) {
+ return BrowserTestUtils.waitForCondition(() =>
+ ContentTask.spawn(browser, {}, () =>
+ !content.document.querySelector("#onboarding-overlay").classList.contains(
+ "onboarding-opened")),
+ "Should close onboarding overlay",
+ 100,
+ 30
+ );
+}
+
+function promisePrefUpdated(name, expectedValue) {
+ return new Promise(resolve => {
+ let onUpdate = actualValue => {
+ Preferences.ignore(name, onUpdate);
+ is(expectedValue, actualValue, `Should update the pref of ${name}`);
+ resolve();
+ };
+ Preferences.observe(name, onUpdate);
+ });
+}
+
+function promiseTourNotificationOpened(browser) {
+ function isOpened() {
+ let doc = content && content.document;
+ let notification = doc.querySelector("#onboarding-notification-bar");
+ if (notification && notification.classList.contains("onboarding-opened")) {
+ ok(true, "Should open tour notification");
+ return Promise.resolve();
+ }
+ return new Promise(resolve => {
+ let observer = new content.MutationObserver(mutations => {
+ mutations.forEach(mutation => {
+ let bar = Array.from(mutation.addedNodes)
+ .find(node => node.id == "onboarding-notification-bar");
+ if (bar && bar.classList.contains("onboarding-opened")) {
+ observer.disconnect();
+ ok(true, "Should open tour notification");
+ resolve();
+ }
+ });
+ });
+ observer.observe(doc.body, { childList: true });
+ });
+ }
+ return ContentTask.spawn(browser, {}, isOpened);
+}
+
+function promiseTourNotificationClosed(browser) {
+ let condition = () => {
+ return ContentTask.spawn(browser, {}, function() {
+ return new Promise(resolve => {
+ let bar = content.document.querySelector("#onboarding-notification-bar");
+ if (bar && !bar.classList.contains("onboarding-opened")) {
+ resolve(true);
+ return;
+ }
+ resolve(false);
+ });
+ });
+ };
+ return BrowserTestUtils.waitForCondition(
+ condition,
+ "Should close tour notification",
+ 100,
+ 30
+ );
+}
+
+function getCurrentNotificationTargetTourId(browser) {
+ return ContentTask.spawn(browser, {}, function() {
+ let bar = content.document.querySelector("#onboarding-notification-bar");
+ return bar ? bar.dataset.targetTourId : null;
+ });
+}
+
+function getCurrentActiveTour(browser) {
+ return ContentTask.spawn(browser, {}, function() {
+ let list = content.document.querySelector("#onboarding-tour-list");
+ let items = list.querySelectorAll(".onboarding-tour-item");
+ let activeNavItemId = null;
+ for (let item of items) {
+ if (item.classList.contains("onboarding-active")) {
+ if (!activeNavItemId) {
+ activeNavItemId = item.id;
+ } else {
+ ok(false, "There are more than one item marked as active.");
+ }
+ }
+ }
+ let activePageId = null;
+ let pages = content.document.querySelectorAll(".onboarding-tour-page");
+ for (let page of pages) {
+ if (page.style.display != "none") {
+ if (!activePageId) {
+ activePageId = page.id;
+ } else {
+ ok(false, "Thre are more than one tour page visible.");
+ }
+ }
+ }
+ return { activeNavItemId, activePageId };
+ });
+}
+
+function waitUntilWindowIdle(browser) {
+ return ContentTask.spawn(browser, {}, function() {
+ return new Promise(resolve => content.requestIdleCallback(resolve));
+ });
+}
+
+function skipMuteNotificationOnFirstSession() {
+ Preferences.set("browser.onboarding.notification.mute-duration-on-first-session-ms", 0);
+}
+
+function assertOverlaySemantics(browser) {
+ return ContentTask.spawn(browser, {}, function() {
+ let doc = content.document;
+
+ info("Checking dialog");
+ let dialog = doc.getElementById("onboarding-overlay-dialog");
+ is(dialog.getAttribute("role"), "dialog",
+ "Dialog should have a dialog role attribute set");
+ is(dialog.tabIndex, "-1", "Dialog should be focusable but not in tab order");
+ is(dialog.getAttribute("aria-labelledby"), "onboarding-header",
+ "Dialog should be labaled by its header");
+
+ info("Checking the tablist container");
+ is(doc.getElementById("onboarding-tour-list").getAttribute("role"), "tablist",
+ "Tour list should have a tablist role attribute set");
+
+ info("Checking each tour item that represents the tab");
+ let items = [...doc.querySelectorAll(".onboarding-tour-item")];
+ items.forEach(item => {
+ is(item.parentNode.getAttribute("role"), "presentation",
+ "Parent should have no semantic value");
+ is(item.getAttribute("aria-selected"),
+ item.classList.contains("onboarding-active") ? "true" : "false",
+ "Active item should have aria-selected set to true and inactive to false");
+ is(item.tabIndex, "0", "Item tab index must be set for keyboard accessibility");
+ is(item.getAttribute("role"), "tab", "Item should have a tab role attribute set");
+ let tourPanelId = `${item.id}-page`;
+ is(item.getAttribute("aria-controls"), tourPanelId,
+ "Item should have aria-controls attribute point to its tabpanel");
+ let panel = doc.getElementById(tourPanelId);
+ is(panel.getAttribute("role"), "tabpanel",
+ "Tour panel should have a tabpanel role attribute set");
+ is(panel.getAttribute("aria-labelledby"), item.id,
+ "Tour panel should have aria-labelledby attribute point to its tab");
+ });
+ });
+}
+
+function assertModalDialog(browser, args) {
+ return ContentTask.spawn(browser, args, ({ keyboardFocus, visible, focusedId }) => {
+ let doc = content.document;
+ let overlayButton = doc.getElementById("onboarding-overlay-button");
+ if (visible) {
+ [...doc.body.children].forEach(child =>
+ child.id !== "onboarding-overlay" &&
+ is(child.getAttribute("aria-hidden"), "true",
+ "Content should not be visible to screen reader"));
+ is(focusedId ? doc.getElementById(focusedId) : doc.body,
+ doc.activeElement, `Focus should be on ${focusedId || "body"}`);
+ is(keyboardFocus ? "true" : undefined,
+ overlayButton.dataset.keyboardFocus,
+ "Overlay button focus state is saved correctly");
+ } else {
+ [...doc.body.children].forEach(
+ child => ok(!child.hasAttribute("aria-hidden"),
+ "Content should be visible to screen reader"));
+ if (keyboardFocus) {
+ is(overlayButton, doc.activeElement,
+ "Focus should be set on overlay button");
+ }
+ ok(!overlayButton.dataset.keyboardFocus,
+ "Overlay button focus state should be cleared");
+ }
+ });
+}
+
+function assertWatermarkIconDisplayed(browser) {
+ return ContentTask.spawn(browser, {}, function() {
+ let overlayButton = content.document.getElementById("onboarding-overlay-button");
+ ok(overlayButton.classList.contains("onboarding-watermark"), "Should display the watermark onboarding icon");
+ });
+}
diff --git a/browser/extensions/onboarding/test/unit/.eslintrc.js b/browser/extensions/onboarding/test/unit/.eslintrc.js
new file mode 100644
index 000000000000..58f8bd73ee48
--- /dev/null
+++ b/browser/extensions/onboarding/test/unit/.eslintrc.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = {
+ "extends": [
+ "plugin:mozilla/xpcshell-test",
+ ],
+};
diff --git a/browser/extensions/onboarding/test/unit/head.js b/browser/extensions/onboarding/test/unit/head.js
new file mode 100644
index 000000000000..715ba8589b4e
--- /dev/null
+++ b/browser/extensions/onboarding/test/unit/head.js
@@ -0,0 +1,54 @@
+/**
+ * Provides infrastructure for automated onboarding components tests.
+ */
+
+"use strict";
+
+/* global Cc, Ci, Cu */
+ChromeUtils.import("resource://gre/modules/Preferences.jsm");
+ChromeUtils.import("resource://gre/modules/Services.jsm");
+ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+
+XPCOMUtils.defineLazyServiceGetter(this, "resProto",
+ "@mozilla.org/network/protocol;1?name=resource",
+ "nsISubstitutingProtocolHandler");
+
+// Load our bootstrap extension manifest so we can access our chrome/resource URIs.
+// Cargo culted from formautofill system add-on
+const EXTENSION_ID = "onboarding(a)mozilla.org";
+let extensionDir = Services.dirsvc.get("GreD", Ci.nsIFile);
+extensionDir.append("browser");
+extensionDir.append("features");
+extensionDir.append(EXTENSION_ID);
+let resourceURI;
+// If the unpacked extension doesn't exist, use the packed version.
+if (!extensionDir.exists()) {
+ extensionDir.leafName += ".xpi";
+
+ resourceURI = "jar:" + Services.io.newFileURI(extensionDir).spec + "!/chrome/content/";
+} else {
+ resourceURI = Services.io.newFileURI(extensionDir).spec + "/chrome/content/";
+}
+Components.manager.addBootstrappedManifestLocation(extensionDir);
+
+resProto.setSubstitution("onboarding", Services.io.newURI(resourceURI));
+
+const TOURSET_VERSION = 1;
+const NEXT_TOURSET_VERSION = 2;
+const PREF_TOUR_TYPE = "browser.onboarding.tour-type";
+const PREF_TOURSET_VERSION = "browser.onboarding.tourset-version";
+const PREF_SEEN_TOURSET_VERSION = "browser.onboarding.seen-tourset-version";
+
+function resetOnboardingDefaultState() {
+ // All the prefs should be reset to what prefs should looks like in a new user profile
+ Services.prefs.setIntPref(PREF_TOURSET_VERSION, TOURSET_VERSION);
+ Services.prefs.clearUserPref(PREF_SEEN_TOURSET_VERSION);
+ Services.prefs.clearUserPref(PREF_TOUR_TYPE);
+}
+
+function resetOldProfileDefaultState() {
+ // All the prefs should be reset to what prefs should looks like in a older new user profile
+ Services.prefs.setIntPref(PREF_TOURSET_VERSION, TOURSET_VERSION);
+ Services.prefs.setIntPref(PREF_SEEN_TOURSET_VERSION, 0);
+ Services.prefs.clearUserPref(PREF_TOUR_TYPE);
+}
diff --git a/browser/extensions/onboarding/test/unit/test-onboarding-tour-type.js b/browser/extensions/onboarding/test/unit/test-onboarding-tour-type.js
new file mode 100644
index 000000000000..489ae6eebce1
--- /dev/null
+++ b/browser/extensions/onboarding/test/unit/test-onboarding-tour-type.js
@@ -0,0 +1,89 @@
+/*
+ * Test for onboarding tour type check.
+ */
+
+"use strict";
+
+ChromeUtils.import("resource://onboarding/modules/OnboardingTourType.jsm");
+
+add_task(async function() {
+ info("Starting testcase: When New user open the browser first time");
+ resetOnboardingDefaultState();
+ OnboardingTourType.check();
+
+ Assert.equal(Preferences.get(PREF_TOUR_TYPE), "new", "should show the new user tour");
+ Assert.equal(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION,
+ "tourset version should not change");
+ Assert.equal(Preferences.get(PREF_SEEN_TOURSET_VERSION), TOURSET_VERSION,
+ "seen tourset version should be set as the tourset version");
+});
+
+add_task(async function() {
+ info("Starting testcase: When New user restart the browser");
+ resetOnboardingDefaultState();
+ Preferences.set(PREF_TOUR_TYPE, "new");
+ Preferences.set(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+ OnboardingTourType.check();
+
+ Assert.equal(Preferences.get(PREF_TOUR_TYPE), "new", "should show the new user tour");
+ Assert.equal(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION,
+ "tourset version should not change");
+ Assert.equal(Preferences.get(PREF_SEEN_TOURSET_VERSION), TOURSET_VERSION,
+ "seen tourset version should be set as the tourset version");
+});
+
+add_task(async function() {
+ info("Starting testcase: When New User choosed to hide the overlay and restart the browser");
+ resetOnboardingDefaultState();
+ Preferences.set(PREF_TOUR_TYPE, "new");
+ Preferences.set(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+ OnboardingTourType.check();
+
+ Assert.equal(Preferences.get(PREF_TOUR_TYPE), "new", "should show the new user tour");
+ Assert.equal(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION,
+ "tourset version should not change");
+ Assert.equal(Preferences.get(PREF_SEEN_TOURSET_VERSION), TOURSET_VERSION,
+ "seen tourset version should be set as the tourset version");
+});
+
+add_task(async function() {
+ info("Starting testcase: When New User updated to the next major version and restart the browser");
+ resetOnboardingDefaultState();
+ Preferences.set(PREF_TOURSET_VERSION, NEXT_TOURSET_VERSION);
+ Preferences.set(PREF_TOUR_TYPE, "new");
+ Preferences.set(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+ OnboardingTourType.check();
+
+ Assert.equal(Preferences.get(PREF_TOUR_TYPE), "update", "should show the update user tour");
+ Assert.equal(Preferences.get(PREF_TOURSET_VERSION), NEXT_TOURSET_VERSION,
+ "tourset version should not change");
+ Assert.equal(Preferences.get(PREF_SEEN_TOURSET_VERSION), NEXT_TOURSET_VERSION,
+ "seen tourset version should be set as the tourset version");
+});
+
+add_task(async function() {
+ info("Starting testcase: When New User prefer hide the tour, then updated to the next major version and restart the browser");
+ resetOnboardingDefaultState();
+ Preferences.set(PREF_TOURSET_VERSION, NEXT_TOURSET_VERSION);
+ Preferences.set(PREF_TOUR_TYPE, "new");
+ Preferences.set(PREF_SEEN_TOURSET_VERSION, TOURSET_VERSION);
+ OnboardingTourType.check();
+
+ Assert.equal(Preferences.get(PREF_TOUR_TYPE), "update", "should show the update user tour");
+ Assert.equal(Preferences.get(PREF_TOURSET_VERSION), NEXT_TOURSET_VERSION,
+ "tourset version should not change");
+ Assert.equal(Preferences.get(PREF_SEEN_TOURSET_VERSION), NEXT_TOURSET_VERSION,
+ "seen tourset version should be set as the tourset version");
+});
+
+add_task(async function() {
+ info("Starting testcase: When User update from browser version < 56");
+ resetOldProfileDefaultState();
+ OnboardingTourType.check();
+
+ Assert.equal(Preferences.get(PREF_TOUR_TYPE), "update", "should show the update user tour");
+ Assert.equal(Preferences.get(PREF_TOURSET_VERSION), TOURSET_VERSION,
+ "tourset version should not change");
+ Assert.equal(Preferences.get(PREF_SEEN_TOURSET_VERSION), TOURSET_VERSION,
+ "seen tourset version should be set as the tourset version");
+});
diff --git a/browser/extensions/onboarding/test/unit/xpcshell.ini b/browser/extensions/onboarding/test/unit/xpcshell.ini
new file mode 100644
index 000000000000..ed484d0f200f
--- /dev/null
+++ b/browser/extensions/onboarding/test/unit/xpcshell.ini
@@ -0,0 +1,5 @@
+[DEFAULT]
+firefox-appdir = browser
+head = head.js
+
+[test-onboarding-tour-type.js]
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
index 9e36326dee5b..f583f0fd8f0a 100644
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -268,6 +268,7 @@
@RESPATH@/browser/chrome/icons/default/default64.png
@RESPATH@/browser/chrome/icons/default/default128.png
#endif
+@RESPATH@/browser/features/*
; [DevTools Startup Files]
@RESPATH@/browser/chrome/devtools-startup@JAREXT@
diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
index 1fdf34d9460f..d2671745854d 100644
--- a/browser/locales/Makefile.in
+++ b/browser/locales/Makefile.in
@@ -58,6 +58,7 @@ libs-%:
@$(MAKE) -C ../../toolkit/locales libs-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
+ @$(MAKE) -C ../extensions/onboarding/locales AB_CD=$* XPI_NAME=locale-$*
@$(MAKE) -C ../../devtools/client/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) -C ../../devtools/startup/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
@@ -71,6 +72,7 @@ chrome-%:
@$(MAKE) -C ../../toolkit/locales chrome-$*
@$(MAKE) -C ../../services/sync/locales chrome AB_CD=$*
@$(MAKE) -C ../../extensions/spellcheck/locales chrome AB_CD=$*
+ @$(MAKE) -C ../extensions/onboarding/locales chrome AB_CD=$*
@$(MAKE) -C ../../devtools/client/locales chrome AB_CD=$*
@$(MAKE) -C ../../devtools/startup/locales chrome AB_CD=$*
@$(MAKE) chrome AB_CD=$*
diff --git a/browser/locales/filter.py b/browser/locales/filter.py
index 1fc9b14e7c87..b3ca1609a412 100755
--- a/browser/locales/filter.py
+++ b/browser/locales/filter.py
@@ -13,6 +13,7 @@ def test(mod, path, entity=None):
"browser",
"browser/extensions/formautofill",
"browser/extensions/fxmonitor",
+ "browser/extensions/onboarding",
"browser/extensions/report-site-issue",
"extensions/spellcheck",
"other-licenses/branding/firefox",
diff --git a/browser/locales/l10n.ini b/browser/locales/l10n.ini
index f4cb7caf53b0..33642110b600 100644
--- a/browser/locales/l10n.ini
+++ b/browser/locales/l10n.ini
@@ -14,6 +14,7 @@ dirs = browser
devtools/startup
browser/extensions/formautofill
browser/extensions/fxmonitor
+ browser/extensions/onboarding
browser/extensions/report-site-issue
[includes]
diff --git a/browser/locales/l10n.toml b/browser/locales/l10n.toml
index dc5b9025ac12..acdda5e7dd30 100644
--- a/browser/locales/l10n.toml
+++ b/browser/locales/l10n.toml
@@ -128,6 +128,10 @@ locales = [
reference = "browser/extensions/formautofill/locales/en-US/**"
l10n = "{l}browser/extensions/formautofill/**"
+[[paths]]
+ reference = "browser/extensions/onboarding/locales/en-US/**"
+ l10n = "{l}browser/extensions/onboarding/**"
+
[[paths]]
reference = "browser/extensions/fxmonitor/locales/en-US/**"
l10n = "{l}browser/extensions/fxmonitor/**"
diff --git a/extensions/permissions/PermissionManager.cpp b/extensions/permissions/PermissionManager.cpp
index 36665fad7de7..1450bf865a84 100644
--- a/extensions/permissions/PermissionManager.cpp
+++ b/extensions/permissions/PermissionManager.cpp
@@ -125,6 +125,9 @@ static const nsLiteralCString kPreloadPermissions[] = {
// removed. See bug 1428130.
NS_LITERAL_CSTRING("cookie"),
+ // Bug 28822: Make sure uitour permissions are preloaded in content processes.
+ NS_LITERAL_CSTRING("uitour"),
+
USER_INTERACTION_PERM};
// Certain permissions should never be persisted to disk under GeckoView; it's
diff --git a/tools/lint/codespell.yml b/tools/lint/codespell.yml
index 75cbd69599e3..de93cb4ec6e6 100644
--- a/tools/lint/codespell.yml
+++ b/tools/lint/codespell.yml
@@ -9,6 +9,7 @@ codespell:
- browser/components/touchbar/docs/
- browser/components/urlbar/docs/
- browser/extensions/formautofill/locales/en-US/
+ - browser/extensions/onboarding/locales/en-US/
- browser/extensions/report-site-issue/locales/en-US/
- browser/installer/windows/docs/
- browser/locales/en-US/
1
0

[tor-browser-build/master] Bug 40019: Ship our own runtime library for macOS
by sysrqb@torproject.org 06 Aug '20
by sysrqb@torproject.org 06 Aug '20
06 Aug '20
commit 97b5bc037774a88bb881a4e0c7d5ff5a18889348
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Aug 4 07:22:38 2020 +0000
Bug 40019: Ship our own runtime library for macOS
---
projects/firefox/build | 5 -
projects/firefox/config | 6 -
projects/macosx-toolchain/43909.patch | 252 +++++++++++++++++++++
projects/macosx-toolchain/build | 95 +++++++-
.../compiler-rt-cross-compile.patch | 15 ++
.../macosx-toolchain/compiler-rt-no-codesign.patch | 21 ++
projects/macosx-toolchain/config | 29 ++-
7 files changed, 405 insertions(+), 18 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index daedf7f..5ddd4de 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -14,11 +14,6 @@ mkdir -p [% dest_dir _ '/' _ c('filename') %]
cp /var/tmp/dist/mingw-w64/gcclibs/{libssp.a,libssp_nonshared.a} /var/tmp/dist/mingw-w64-clang/[% c("arch") %]-w64-mingw32/lib/
[% END -%]
-[% IF c("var/osx") %]
- mkdir -p /var/tmp/dist/macosx-toolchain/clang/lib/clang/[% pc("clang", "version") %]/lib/darwin
- mv libclang_rt.osx.a /var/tmp/dist/macosx-toolchain/clang/lib/clang/[% pc("clang", "version") %]/lib/darwin
-[% END -%]
-
tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/cbindgen') %]
tar -C /var/tmp/dist -xf [% c('input_files_by_name/nasm') %]
diff --git a/projects/firefox/config b/projects/firefox/config
index 2ee16e4..9876240 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -182,9 +182,3 @@ input_files:
# TorButton patch authored by Arthur Edelstein, from https://github.com/arthuredelstein/torbutton/ branch 2.1.10-namecoin
- filename: namecoin-etld.patch
enable: '[% c("var/namecoin") %]'
- # The library is extracted from Mozilla's officially used Clang, downloaded
- # from https://firefox-ci-tc.services.mozilla.com/api/queue/v1/task/TYTqgyybSLmp0O….
- # Its SHA-256 sum is 7b0a6e60f102d3dbf618ae9e25d990d4dc72c76eb5accb5974ec70c11ff7e049.
- - URL: https://people.torproject.org/~gk/mirrors/sources/libclang_rt.osx.a
- sha256sum: 33541fb054e7dc372b5e9708bbcc175561d7fdbc9b00bf964e0c60b82bd8165a
- enable: '[% c("var/osx") %]'
diff --git a/projects/macosx-toolchain/43909.patch b/projects/macosx-toolchain/43909.patch
new file mode 100644
index 0000000..78d2a75
--- /dev/null
+++ b/projects/macosx-toolchain/43909.patch
@@ -0,0 +1,252 @@
+From c95310f2d4fd3c88241c3b5d6dbf6251d34a3256 Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv(a)gmail.com>
+Date: Sat, 16 Nov 2019 16:22:18 +0100
+Subject: [PATCH] Restructure caching
+
+Variant on D70103. The caching is switched to always use a BB to
+cache entry map, which then contains per-value caches. A separate
+set contains value handles with a deletion callback. This allows us
+to properly invalidate overdefined values.
+
+A possible alternative would be to always cache by value first and
+have per-BB maps/sets in the each cache entry. In that case we could
+use a ValueMap and would avoid the separate value handle set. I went
+with the BB indexing at the top level to make it easier to integrate
+D69914, but possibly that's not the right choice.
+
+Differential Revision: https://reviews.llvm.org/D70376
+
+diff --git a/llvm/lib/Analysis/LazyValueInfo.cpp b/llvm/lib/Analysis/LazyValueInfo.cpp
+index 110c085d3f3..aa6862cb588 100644
+--- a/llvm/lib/Analysis/LazyValueInfo.cpp
++++ b/llvm/lib/Analysis/LazyValueInfo.cpp
+@@ -133,12 +133,9 @@ namespace {
+ /// A callback value handle updates the cache when values are erased.
+ class LazyValueInfoCache;
+ struct LVIValueHandle final : public CallbackVH {
+- // Needs to access getValPtr(), which is protected.
+- friend struct DenseMapInfo<LVIValueHandle>;
+-
+ LazyValueInfoCache *Parent;
+
+- LVIValueHandle(Value *V, LazyValueInfoCache *P)
++ LVIValueHandle(Value *V, LazyValueInfoCache *P = nullptr)
+ : CallbackVH(V), Parent(P) { }
+
+ void deleted() override;
+@@ -152,89 +149,63 @@ namespace {
+ /// This is the cache kept by LazyValueInfo which
+ /// maintains information about queries across the clients' queries.
+ class LazyValueInfoCache {
+- /// This is all of the cached block information for exactly one Value*.
+- /// The entries are sorted by the BasicBlock* of the
+- /// entries, allowing us to do a lookup with a binary search.
+- /// Over-defined lattice values are recorded in OverDefinedCache to reduce
+- /// memory overhead.
+- struct ValueCacheEntryTy {
+- ValueCacheEntryTy(Value *V, LazyValueInfoCache *P) : Handle(V, P) {}
+- LVIValueHandle Handle;
+- SmallDenseMap<PoisoningVH<BasicBlock>, ValueLatticeElement, 4> BlockVals;
++ /// This is all of the cached information for one basic block. It contains
++ /// the per-value lattice elements, as well as a separate set for
++ /// overdefined values to reduce memory usage.
++ struct BlockCacheEntryTy {
++ SmallDenseMap<AssertingVH<Value>, ValueLatticeElement, 4> LatticeElements;
++ SmallDenseSet<AssertingVH<Value>, 4> OverDefined;
+ };
+
+- /// This tracks, on a per-block basis, the set of values that are
+- /// over-defined at the end of that block.
+- typedef DenseMap<PoisoningVH<BasicBlock>, SmallPtrSet<Value *, 4>>
+- OverDefinedCacheTy;
+- /// Keep track of all blocks that we have ever seen, so we
+- /// don't spend time removing unused blocks from our caches.
+- DenseSet<PoisoningVH<BasicBlock> > SeenBlocks;
+-
+- /// This is all of the cached information for all values,
+- /// mapped from Value* to key information.
+- DenseMap<Value *, std::unique_ptr<ValueCacheEntryTy>> ValueCache;
+- OverDefinedCacheTy OverDefinedCache;
+-
++ /// Cached information per basic block.
++ DenseMap<PoisoningVH<BasicBlock>, BlockCacheEntryTy> BlockCache;
++ /// Set of value handles used to erase values from the cache on deletion.
++ DenseSet<LVIValueHandle, DenseMapInfo<Value *>> ValueHandles;
+
+ public:
+ void insertResult(Value *Val, BasicBlock *BB,
+ const ValueLatticeElement &Result) {
+- SeenBlocks.insert(BB);
+-
++ auto &CacheEntry = BlockCache.try_emplace(BB).first->second;
+ // Insert over-defined values into their own cache to reduce memory
+ // overhead.
+ if (Result.isOverdefined())
+- OverDefinedCache[BB].insert(Val);
+- else {
+- auto It = ValueCache.find_as(Val);
+- if (It == ValueCache.end()) {
+- ValueCache[Val] = make_unique<ValueCacheEntryTy>(Val, this);
+- It = ValueCache.find_as(Val);
+- assert(It != ValueCache.end() && "Val was just added to the map!");
+- }
+- It->second->BlockVals[BB] = Result;
+- }
+- }
+-
+- bool isOverdefined(Value *V, BasicBlock *BB) const {
+- auto ODI = OverDefinedCache.find(BB);
+-
+- if (ODI == OverDefinedCache.end())
+- return false;
++ CacheEntry.OverDefined.insert(Val);
++ else
++ CacheEntry.LatticeElements.insert({ Val, Result });
+
+- return ODI->second.count(V);
++ auto HandleIt = ValueHandles.find_as(Val);
++ if (HandleIt == ValueHandles.end())
++ ValueHandles.insert({ Val, this });
+ }
+
+ bool hasCachedValueInfo(Value *V, BasicBlock *BB) const {
+- if (isOverdefined(V, BB))
+- return true;
+-
+- auto I = ValueCache.find_as(V);
+- if (I == ValueCache.end())
++ auto It = BlockCache.find(BB);
++ if (It == BlockCache.end())
+ return false;
+
+- return I->second->BlockVals.count(BB);
++ return It->second.OverDefined.count(V) ||
++ It->second.LatticeElements.count(V);
+ }
+
+ ValueLatticeElement getCachedValueInfo(Value *V, BasicBlock *BB) const {
+- if (isOverdefined(V, BB))
++ auto It = BlockCache.find(BB);
++ if (It == BlockCache.end())
++ return ValueLatticeElement();
++
++ if (It->second.OverDefined.count(V))
+ return ValueLatticeElement::getOverdefined();
+
+- auto I = ValueCache.find_as(V);
+- if (I == ValueCache.end())
++ auto LatticeIt = It->second.LatticeElements.find(V);
++ if (LatticeIt == It->second.LatticeElements.end())
+ return ValueLatticeElement();
+- auto BBI = I->second->BlockVals.find(BB);
+- if (BBI == I->second->BlockVals.end())
+- return ValueLatticeElement();
+- return BBI->second;
++
++ return LatticeIt->second;
+ }
+
+ /// clear - Empty the cache.
+ void clear() {
+- SeenBlocks.clear();
+- ValueCache.clear();
+- OverDefinedCache.clear();
++ BlockCache.clear();
++ ValueHandles.clear();
+ }
+
+ /// Inform the cache that a given value has been deleted.
+@@ -248,23 +219,18 @@ namespace {
+ /// OldSucc might have (unless also overdefined in NewSucc). This just
+ /// flushes elements from the cache and does not add any.
+ void threadEdgeImpl(BasicBlock *OldSucc,BasicBlock *NewSucc);
+-
+- friend struct LVIValueHandle;
+ };
+ }
+
+ void LazyValueInfoCache::eraseValue(Value *V) {
+- for (auto I = OverDefinedCache.begin(), E = OverDefinedCache.end(); I != E;) {
+- // Copy and increment the iterator immediately so we can erase behind
+- // ourselves.
+- auto Iter = I++;
+- SmallPtrSetImpl<Value *> &ValueSet = Iter->second;
+- ValueSet.erase(V);
+- if (ValueSet.empty())
+- OverDefinedCache.erase(Iter);
++ for (auto &Pair : BlockCache) {
++ Pair.second.LatticeElements.erase(V);
++ Pair.second.OverDefined.erase(V);
+ }
+
+- ValueCache.erase(V);
++ auto HandleIt = ValueHandles.find_as(V);
++ if (HandleIt != ValueHandles.end())
++ ValueHandles.erase(HandleIt);
+ }
+
+ void LVIValueHandle::deleted() {
+@@ -274,18 +240,7 @@ void LVIValueHandle::deleted() {
+ }
+
+ void LazyValueInfoCache::eraseBlock(BasicBlock *BB) {
+- // Shortcut if we have never seen this block.
+- DenseSet<PoisoningVH<BasicBlock> >::iterator I = SeenBlocks.find(BB);
+- if (I == SeenBlocks.end())
+- return;
+- SeenBlocks.erase(I);
+-
+- auto ODI = OverDefinedCache.find(BB);
+- if (ODI != OverDefinedCache.end())
+- OverDefinedCache.erase(ODI);
+-
+- for (auto &I : ValueCache)
+- I.second->BlockVals.erase(BB);
++ BlockCache.erase(BB);
+ }
+
+ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
+@@ -303,10 +258,11 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
+ std::vector<BasicBlock*> worklist;
+ worklist.push_back(OldSucc);
+
+- auto I = OverDefinedCache.find(OldSucc);
+- if (I == OverDefinedCache.end())
++ auto I = BlockCache.find(OldSucc);
++ if (I == BlockCache.end() || I->second.OverDefined.empty())
+ return; // Nothing to process here.
+- SmallVector<Value *, 4> ValsToClear(I->second.begin(), I->second.end());
++ SmallVector<Value *, 4> ValsToClear(I->second.OverDefined.begin(),
++ I->second.OverDefined.end());
+
+ // Use a worklist to perform a depth-first search of OldSucc's successors.
+ // NOTE: We do not need a visited list since any blocks we have already
+@@ -320,10 +276,10 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
+ if (ToUpdate == NewSucc) continue;
+
+ // If a value was marked overdefined in OldSucc, and is here too...
+- auto OI = OverDefinedCache.find(ToUpdate);
+- if (OI == OverDefinedCache.end())
++ auto OI = BlockCache.find(ToUpdate);
++ if (OI == BlockCache.end() || OI->second.OverDefined.empty())
+ continue;
+- SmallPtrSetImpl<Value *> &ValueSet = OI->second;
++ auto &ValueSet = OI->second.OverDefined;
+
+ bool changed = false;
+ for (Value *V : ValsToClear) {
+@@ -333,11 +289,6 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
+ // If we removed anything, then we potentially need to update
+ // blocks successors too.
+ changed = true;
+-
+- if (ValueSet.empty()) {
+- OverDefinedCache.erase(OI);
+- break;
+- }
+ }
+
+ if (!changed) continue;
+--
+2.24.0
+
diff --git a/projects/macosx-toolchain/build b/projects/macosx-toolchain/build
index cd19c1d..0f67c38 100644
--- a/projects/macosx-toolchain/build
+++ b/projects/macosx-toolchain/build
@@ -1,17 +1,100 @@
#!/bin/bash
[% c("var/set_default_env") -%]
+builddir=/var/tmp/build
+mkdir $builddir
distdir="/var/tmp/dist/[% project %]"
mkdir -p "$distdir"
-tar xjf [% c('input_files_by_name/SDK') %]
-mv MacOSX10.11.sdk "$distdir/"
-tar xf [% c('input_files_by_name/clang') %]
-mv clang "$distdir/clang"
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/ninja') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang_compiler') %]
+tar -C $builddir -xf [% c('input_files_by_name/llvm') %]
+tar -C $builddir -xf [% c('input_files_by_name/clang') %]
+tar -C $builddir -xf [% c('input_files_by_name/libcxx') %]
+tar -C $builddir -xf [% c('input_files_by_name/libcxxabi') %]
+tar -C $builddir -xf [% c('input_files_by_name/lld') %]
+tar -C $builddir -xf [% c('input_files_by_name/compiler-rt') %]
+tar -C $distdir -xf [% c('input_files_by_name/SDK') %]
tar -C $distdir -xf [% c('input_files_by_name/cctools') %]
-cd $distdir/cctools/bin
+
+clangdir=/var/tmp/dist/clang/bin
+cctoolsdir=$distdir/cctools/bin
+sysrootdir=$distdir/MacOSX10.11.sdk/
+# We still need to put the cctoolsdir on the path. That's because of `lipo`. See
+# the respective comment in the cctools build script.
+export PATH="/var/tmp/dist/ninja:/var/tmp/dist/cmake/bin:$cctoolsdir:$PATH"
+export MACOSX_DEPLOYMENT_TARGET=[% c("var/macosx_deployment_target") %]
+
+cd $builddir
+mv llvm-* llvm
+# LLVM has reproducibility issues when optimizing bitcode, which we need to
+# patch. See: #32053 for more details.
+patch -p1 < $rootdir/43909.patch
+mv clang-* llvm/tools/clang
+mv libcxx-* llvm/projects/libcxx
+mv libcxxabi-* llvm/projects/libcxxabi
+mv lld-* llvm/tools/lld
+mv compiler-rt-* compiler-rt
+patch -p1 < $rootdir/compiler-rt-cross-compile.patch
+patch -p1 < $rootdir/compiler-rt-no-codesign.patch
+mv compiler-rt llvm/projects
+mkdir build
+cd build
+# We follow quite closely Mozilla's build/build-clang/build-clang.py with the
+# clang-macosx64.json flavor. This currently implies disabling Xray as it
+# requires an OSX 10.12 SDK (see: https://bugs.llvm.org/show_bug.cgi?id=38959)
+cmake -GNinja \
+ -DCMAKE_C_COMPILER=$clangdir/clang \
+ -DCMAKE_CXX_COMPILER=$clangdir/clang++ \
+ -DCMAKE_ASM_COMPILER=$clangdir/clang \
+ -DCMAKE_LINKER=$clangdir/clang \
+ -DCMAKE_AR=$cctoolsdir/x86_64-apple-darwin-ar \
+ -DCMAKE_C_FLAGS="[% c('var/FLAGS') %] -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \
+ -DCMAKE_CXX_FLAGS="-stdlib=libc++ [% c('var/FLAGS') %] -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \
+ -DCMAKE_ASM_FLAGS="[% c('var/FLAGS') %] -I$sysrootdir/usr/include -iframework $sysrootdir/System/Library/Frameworks" \
+ -DCMAKE_EXE_LINKER_FLAGS="[% c('var/LDFLAGS') %]" \
+ -DCMAKE_SHARED_LINKER_FLAGS="[% c('var/LDFLAGS') %]" \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=$distdir/clang \
+ -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \
+ -DLLVM_ENABLE_ASSERTIONS=OFF \
+ -DPYTHON_EXECUTABLE=/usr/bin/python2.7 \
+ -DLLVM_TOOL_LIBCXX_BUILD=ON \
+ -DLLVM_ENABLE_BINDINGS=OFF \
+ -DLLVM_ENABLE_LIBXML2=FORCE_ON \
+ -DLLVM_LINK_LLVM_DYLIB=ON \
+ -DCMAKE_RANLIB=$cctoolsdir/x86_64-apple-darwin-ranlib \
+ -DCMAKE_LIBTOOL=$cctoolsdir/x86_64-apple-darwin-libtool \
+ -DCMAKE_SYSTEM_NAME=Darwin \
+ -DCMAKE_SYSTEM_VERSION=10.10 \
+ -DLLVM_ENABLE_THREADS=OFF \
+ -DCOMPILER_RT_BUILD_XRAY=OFF \
+ -DLIBCXXABI_LIBCXX_INCLUDES=$builddir/llvm/projects/libcxx/include \
+ -DCMAKE_OSX_SYSROOT=$sysrootdir \
+ -DCMAKE_FIND_ROOT_PATH=$sysrootdir \
+ -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
+ -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
+ -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
+ -DCMAKE_MACOSX_RPATH=ON \
+ -DCMAKE_OSX_ARCHITECTURES=x86_64 \
+ -DDARWIN_osx_ARCHS=x86_64 \
+ -DDARWIN_osx_SYSROOT=$sysrootdir \
+ -DLLVM_DEFAULT_TARGET_TRIPLE=x86_64-apple-darwin $builddir/llvm
+ninja install -v
+
+# We now have a native macosx64 toolchain.
+# What we want is a native linux64 toolchain which can target macosx64.
+# Overlay the linux64 toolchain that we used for this build. Note: we don't do
+# any ASan builds for macOS (yet). Once we do we need to preserve at least
+# `llvm-symbolizer` as that one seems to get shipped with sanitizer builds (at
+# least that's what Mozilla claims).
+cd $distdir
+cp --remove-destination -lr /var/tmp/dist/clang/* clang/
+
+cd cctools/bin
ln -s ../../clang/bin/clang x86_64-apple-darwin-clang
ln -s ../../clang/bin/clang++ x86_64-apple-darwin-clang++
-cd "/var/tmp/dist"
+cd /var/tmp/dist
[% c('tar', {
tar_src => [ project ],
tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
diff --git a/projects/macosx-toolchain/compiler-rt-cross-compile.patch b/projects/macosx-toolchain/compiler-rt-cross-compile.patch
new file mode 100644
index 0000000..4ab2495
--- /dev/null
+++ b/projects/macosx-toolchain/compiler-rt-cross-compile.patch
@@ -0,0 +1,15 @@
+Add `-target x86_64-apple-darwin' to the compiler-rt overridden CFLAGS
+
+diff --git a/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake b/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
+index 28d398672..aac68bf36 100644
+--- a/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
++++ b/compiler-rt/cmake/Modules/CompilerRTDarwinUtils.cmake
+@@ -265,7 +265,7 @@ endfunction()
+ macro(darwin_add_builtin_libraries)
+ set(DARWIN_EXCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Darwin-excludes)
+
+- set(CFLAGS "-fPIC -O3 -fvisibility=hidden -DVISIBILITY_HIDDEN -Wall -fomit-frame-pointer")
++ set(CFLAGS "-fPIC -O3 -fvisibility=hidden -DVISIBILITY_HIDDEN -Wall -fomit-frame-pointer -target x86_64-apple-darwin -isysroot ${CMAKE_OSX_SYSROOT} -I${CMAKE_OSX_SYSROOT}/usr/include")
+ set(CMAKE_C_FLAGS "")
+ set(CMAKE_CXX_FLAGS "")
+ set(CMAKE_ASM_FLAGS "")
diff --git a/projects/macosx-toolchain/compiler-rt-no-codesign.patch b/projects/macosx-toolchain/compiler-rt-no-codesign.patch
new file mode 100644
index 0000000..99d3f7e
--- /dev/null
+++ b/projects/macosx-toolchain/compiler-rt-no-codesign.patch
@@ -0,0 +1,21 @@
+Disable codesign for macosx cross-compile toolchain. Codesign only works on OSX.
+
+Index: cmake/Modules/AddCompilerRT.cmake
+===================================================================
+--- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake
++++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake
+@@ -321,14 +321,6 @@
+ set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "")
+ set_target_properties(${libname} PROPERTIES IMPORT_SUFFIX ".lib")
+ endif()
+- if(APPLE)
+- # Ad-hoc sign the dylibs
+- add_custom_command(TARGET ${libname}
+- POST_BUILD
+- COMMAND codesign --sign - $<TARGET_FILE:${libname}>
+- WORKING_DIRECTORY ${COMPILER_RT_LIBRARY_OUTPUT_DIR}
+- )
+- endif()
+ endif()
+
+ set(parent_target_arg)
diff --git a/projects/macosx-toolchain/config b/projects/macosx-toolchain/config
index 29f7c4b..937478b 100644
--- a/projects/macosx-toolchain/config
+++ b/projects/macosx-toolchain/config
@@ -1,6 +1,8 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
version: 10.11-1
+gpg_keyring: clang.gpg
+sig_ext: sig
var:
container:
use_container: 1
@@ -18,12 +20,37 @@ var:
input_files:
- project: container-image
- - name: clang
+ - name: clang_compiler
project: clang
- name: cctools
project: cctools
+ - name: cmake
+ project: cmake
+ - name: ninja
+ project: ninja
# Instructions on how to create the SDK tarball can be found at:
# build/macosx/cross-mozconfig.common
- name: SDK
URL: https://people.torproject.org/~gk/mirrors/sources/MacOSX10.11.sdk.tar.bz2
sha256sum: d11e410d757d023be66d2fe7eaa85a1d232da3ac04f177eff3d8b8275cd9ffca
+ - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% pc("clang", "version") %]/llvm-[% pc("clang", "version") %].src.tar.xz'
+ name: llvm
+ file_gpg_id: 1
+ - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% pc("clang", "version") %]/clang-[% pc("clang", "version") %].src.tar.xz'
+ name: clang
+ file_gpg_id: 1
+ - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% pc("clang", "version") %]/libcxx-[% pc("clang", "version") %].src.tar.xz'
+ name: libcxx
+ file_gpg_id: 1
+ - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% pc("clang", "version") %]/libcxxabi-[% pc("clang", "version") %].src.tar.xz'
+ name: libcxxabi
+ file_gpg_id: 1
+ - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% pc("clang", "version") %]/lld-[% pc("clang", "version") %].src.tar.xz'
+ name: lld
+ file_gpg_id: 1
+ - URL: 'https://github.com/llvm/llvm-project/releases/download/llvmorg-[% pc("clang", "version") %]/compiler-rt-[% pc("clang", "version") %].src.tar.xz'
+ name: compiler-rt
+ file_gpg_id: 1
+ - filename: compiler-rt-cross-compile.patch
+ - filename: compiler-rt-no-codesign.patch
+ - filename: 43909.patch
1
0

[tor-browser-build/master] Merge remote-tracking branch 'gkgl/bug_40019_v3'
by sysrqb@torproject.org 06 Aug '20
by sysrqb@torproject.org 06 Aug '20
06 Aug '20
commit dd4db33fe9cd9eeffd21a239593a15221c8a1e7e
Merge: efd0d09 97b5bc0
Author: Matthew Finkel <sysrqb(a)torproject.org>
Date: Thu Aug 6 23:19:42 2020 +0000
Merge remote-tracking branch 'gkgl/bug_40019_v3'
projects/firefox/build | 5 -
projects/firefox/config | 6 -
projects/macosx-toolchain/43909.patch | 252 +++++++++++++++++++++
projects/macosx-toolchain/build | 95 +++++++-
.../compiler-rt-cross-compile.patch | 15 ++
.../macosx-toolchain/compiler-rt-no-codesign.patch | 21 ++
projects/macosx-toolchain/config | 29 ++-
7 files changed, 405 insertions(+), 18 deletions(-)
1
0